summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbojan <bojan@13f79535-47bb-0310-9956-ffa450edef68>2009-02-13 05:03:10 +0000
committerbojan <bojan@13f79535-47bb-0310-9956-ffa450edef68>2009-02-13 05:03:10 +0000
commit522946ace43cba03c30f86f13c5e7131098f4ce2 (patch)
tree220c428e13ac53611232213f057e81a6d3fde4f5
parentefa3c1b541a47f9082124abb7ea1e0ae3c548c19 (diff)
downloadlibapr-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.c10
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);
}