diff options
author | bojan <bojan@13f79535-47bb-0310-9956-ffa450edef68> | 2009-02-13 05:03:10 +0000 |
---|---|---|
committer | bojan <bojan@13f79535-47bb-0310-9956-ffa450edef68> | 2009-02-13 05:03:10 +0000 |
commit | 522946ace43cba03c30f86f13c5e7131098f4ce2 (patch) | |
tree | 220c428e13ac53611232213f057e81a6d3fde4f5 | |
parent | efa3c1b541a47f9082124abb7ea1e0ae3c548c19 (diff) | |
download | libapr-util-522946ace43cba03c30f86f13c5e7131098f4ce2.tar.gz |
Do not crash if process is NULL.
Do not print diagnostics to stderr (APU DBD operates silently).
Do not allow driver to exit the process (always return INT_CANCEL on error).
git-svn-id: http://svn.apache.org/repos/asf/apr/apr-util/trunk@743986 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r-- | dbd/apr_dbd_freetds.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/dbd/apr_dbd_freetds.c b/dbd/apr_dbd_freetds.c index 61e2bb6b..9a0cae79 100644 --- a/dbd/apr_dbd_freetds.c +++ b/dbd/apr_dbd_freetds.c @@ -606,9 +606,7 @@ static DBPROCESS *freetds_open(apr_pool_t *pool, const char *params, process = dbopen(login, server); - fprintf(stderr, "databaseName [%s]\n", databaseName); - - if (databaseName != NULL) + if (process != NULL && databaseName != NULL) { dbuse(process, databaseName); } @@ -691,6 +689,11 @@ static apr_status_t freetds_term(void *dummy) regfree(&dbd_freetds_find_arg); return APR_SUCCESS; } +static int freetds_err_handler(DBPROCESS *dbproc, int severity, int dberr, + int oserr, char *dberrstr, char *oserrstr) +{ + return INT_CANCEL; /* never exit */ +} static void dbd_freetds_init(apr_pool_t *pool) { int rv = regcomp(&dbd_freetds_find_arg, @@ -701,6 +704,7 @@ static void dbd_freetds_init(apr_pool_t *pool) fprintf(stderr, "regcomp failed: %s\n", errmsg); } dbinit(); + dberrhandle(freetds_err_handler); apr_pool_cleanup_register(pool, NULL, freetds_term, apr_pool_cleanup_null); } |