You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by ni...@apache.org on 2005/09/30 17:31:43 UTC
svn commit: r292771 -
/httpd/httpd/branches/2.2.x/modules/experimental/mod_dbd.c
Author: niq
Date: Fri Sep 30 08:31:40 2005
New Revision: 292771
URL: http://svn.apache.org/viewcvs?rev=292771&view=rev
Log:
Backport recent fixes from trunk (hitherto lost in branch confusion)
Modified:
httpd/httpd/branches/2.2.x/modules/experimental/mod_dbd.c
Modified: httpd/httpd/branches/2.2.x/modules/experimental/mod_dbd.c
URL: http://svn.apache.org/viewcvs/httpd/httpd/branches/2.2.x/modules/experimental/mod_dbd.c?rev=292771&r1=292770&r2=292771&view=diff
==============================================================================
--- httpd/httpd/branches/2.2.x/modules/experimental/mod_dbd.c (original)
+++ httpd/httpd/branches/2.2.x/modules/experimental/mod_dbd.c Fri Sep 30 08:31:40 2005
@@ -27,9 +27,9 @@
#include "http_log.h"
#include "apr_reslist.h"
#include "apr_strings.h"
-
#include "apr_dbd.h"
#include "mod_dbd.h"
+
extern module AP_MODULE_DECLARE_DATA dbd_module;
/************ svr cfg: manage db connection pool ****************/
@@ -71,7 +71,7 @@
svr_cfg *svr = (svr_cfg*) ap_get_module_config
(cmd->server->module_config, &dbd_module);
- switch ((int) cmd->info) {
+ switch ((long) cmd->info) {
case cmd_name:
svr->name = val;
/* loading the driver involves once-only dlloading that is
@@ -155,6 +155,10 @@
#endif
{NULL}
};
+#define DEFAULT_NMIN 0
+#define DEFAULT_NMAX 5
+#define DEFAULT_NKEEP 1
+#define DEFAULT_EXPTIME 120
#define COND_PARAM(x,val) \
if (cfg->x == val) { \
cfg->x = ((svr_cfg*)base)->x; \
@@ -167,10 +171,10 @@
COND_PARAM0(params);
COND_PARAM1(persist);
#if APR_HAS_THREADS
- COND_PARAM0(nmin);
- COND_PARAM0(nkeep);
- COND_PARAM0(nmax);
- COND_PARAM0(exptime);
+ COND_PARAM(nmin, DEFAULT_NMIN);
+ COND_PARAM(nkeep, DEFAULT_NKEEP);
+ COND_PARAM(nmax, DEFAULT_NMAX);
+ COND_PARAM(exptime, DEFAULT_EXPTIME);
#endif
return cfg;
}
@@ -181,6 +185,12 @@
{
svr_cfg *svr = (svr_cfg*) apr_pcalloc(p, sizeof(svr_cfg));
svr->persist = -1;
+#if APR_HAS_THREADS
+ svr->nmin = DEFAULT_NMIN;
+ svr->nkeep = DEFAULT_NKEEP;
+ svr->nmax = DEFAULT_NMAX;
+ svr->exptime = DEFAULT_EXPTIME;
+#endif
return svr;
}
static apr_status_t dbd_prepared_init(apr_pool_t *pool, svr_cfg *svr,
@@ -287,19 +297,19 @@
- open acquires a connection from the pool (opens one if necessary)
- close releases it back in to the pool
*/
-
+#define arec ((ap_dbd_t*)rec)
#if APR_HAS_THREADS
ap_dbd_t* ap_dbd_open(apr_pool_t *pool, server_rec *s)
{
- ap_dbd_t *rec = NULL;
+ void *rec = NULL;
svr_cfg *svr = ap_get_module_config(s->module_config, &dbd_module);
- apr_status_t rv;
+ apr_status_t rv = APR_SUCCESS;
const char *errmsg;
if (!svr->persist) {
/* Return a once-only connection */
- rv = dbd_construct((void**)&rec, svr, pool);
- return (rv == APR_SUCCESS) ? rec : NULL;
+ rv = dbd_construct(&rec, svr, s->process->pool);
+ return (rv == APR_SUCCESS) ? arec : NULL;
}
if (!svr->dbpool) {
@@ -307,13 +317,13 @@
return NULL;
}
}
- if (apr_reslist_acquire(svr->dbpool, (void**)&rec) != APR_SUCCESS) {
+ if (apr_reslist_acquire(svr->dbpool, &rec) != APR_SUCCESS) {
ap_log_perror(APLOG_MARK, APLOG_ERR, 0, pool,
"Failed to acquire DBD connection from pool!");
return NULL;
}
- if (apr_dbd_check_conn(rec->driver, pool, rec->handle) != APR_SUCCESS) {
- errmsg = apr_dbd_error(rec->driver, rec->handle, rv);
+ if (apr_dbd_check_conn(arec->driver, pool, arec->handle) != APR_SUCCESS) {
+ errmsg = apr_dbd_error(arec->driver, arec->handle, rv);
if (!errmsg) {
errmsg = "(unknown)";
}
@@ -322,27 +332,27 @@
apr_reslist_invalidate(svr->dbpool, rec);
return NULL;
}
- return rec;
+ return arec;
}
#else
ap_dbd_t* ap_dbd_open(apr_pool_t *pool, server_rec *s)
{
- apr_status_t rv;
+ apr_status_t rv = APR_SUCCESS;
const char *errmsg;
- ap_dbd_t *rec = NULL;
+ void *rec = NULL;
svr_cfg *svr = ap_get_module_config(s->module_config, &dbd_module);
if (!svr->persist) {
/* Return a once-only connection */
- rv = dbd_construct((void**)&rec, svr, pool);
- return (rv == APR_SUCCESS) ? rec : NULL;
+ rv = dbd_construct(&rec, svr, s->process->pool);
+ return (rv == APR_SUCCESS) ? arec : NULL;
}
/* since we're in nothread-land, we can mess with svr->conn with impunity */
/* If we have a persistent connection and it's good, we'll use it */
if (svr->conn) {
if (apr_dbd_check_conn(svr->conn->driver, pool, svr->conn->handle) != 0){
- errmsg = apr_dbd_error(rec->driver, rec->handle, rv);
+ errmsg = apr_dbd_error(arec->driver, arec->handle, rv);
if (!errmsg) {
errmsg = "(unknown)";
}
@@ -353,8 +363,8 @@
}
/* We don't have a connection right now, so we'll open one */
if (!svr->conn) {
- rv = dbd_construct((void**)&rec, svr, pool);
- svr->conn = (rv == APR_SUCCESS) ? rec : NULL;
+ rv = dbd_construct(&rec, svr, s->process->pool);
+ svr->conn = (rv == APR_SUCCESS) ? arec : NULL;
}
return svr->conn;
}