Author: poeml Date: Wed Feb 23 22:27:03 2011 New Revision: 8238 URL: http://svn.mirrorbrain.org/viewvc/mirrorbrain?rev=8238&view=rev Log: mod_mirrorbrain: - untested fix for issue #84: handle a failed database connection acquisition correctly also when fallback mirrors are configured Modified: trunk/mod_mirrorbrain/mod_mirrorbrain.c Modified: trunk/mod_mirrorbrain/mod_mirrorbrain.c URL: http://svn.mirrorbrain.org/viewvc/mirrorbrain/trunk/mod_mirrorbrain/mod_mirrorbrain.c?rev=8238&r1=8237&r2=8238&view=diff ============================================================================== --- trunk/mod_mirrorbrain/mod_mirrorbrain.c (original) +++ trunk/mod_mirrorbrain/mod_mirrorbrain.c Wed Feb 23 22:27:03 2011 _at_@ -1356,7 +1356,7 @@ const char *as; /* autonomous system */ const char *prefix; /* network prefix */ int i; - int mirror_cnt; + int mirror_cnt = 0; apr_size_t len, nr; mirror_entry_t *new; mirror_entry_t *mirror; _at_@ -1940,9 +1940,11 @@ } - statement = apr_hash_get(dbd->prepared, scfg->query_label, APR_HASH_KEY_STRING); - - if (statement == NULL) { + if (dbd) { + statement = apr_hash_get(dbd->prepared, scfg->query_label, APR_HASH_KEY_STRING); + } + + if (!dbd || !statement) { ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, "[mod_mirrorbrain] Could not get prepared statement labelled '%s'", scfg->query_label); _at_@ -1966,13 +1968,15 @@ "DBDParams must be unique. The same string cannot be used " "in two vhosts."); - return DECLINED; + if (apr_is_empty_array(cfg->fallbacks)) { + return DECLINED; + } } /* no need to escape for the SQL query because we use a prepared * statement with bound parameters */ - if (apr_dbd_pvselect(dbd->driver, r->pool, dbd->handle, &res, statement, + if (dbd && apr_dbd_pvselect(dbd->driver, r->pool, dbd->handle, &res, statement, 1, /* we don't need random access actually, but without it the mysql driver doesn't return results once apr_dbd_num_tuples() has been called; _at_@ -1985,7 +1989,9 @@ } } - mirror_cnt = apr_dbd_num_tuples(dbd->driver, res); + if (dbd) { + mirror_cnt = apr_dbd_num_tuples(dbd->driver, res); + } if (mirror_cnt > 0) { debugLog(r, cfg, "Found %d mirror%s", mirror_cnt, _______________________________________________ mirrorbrain-commits mailing list Archive: http://mirrorbrain.org/archive/mirrorbrain-commits/ Note: To remove yourself from this list, send a mail with the content unsubscribe to the address mirrorbrain-commits-request_at_mirrorbrain.orgReceived on Wed Feb 23 2011 - 21:27:13 GMT
This archive was generated by hypermail 2.3.0 : Wed Feb 23 2011 - 21:32:16 GMT