summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Parpart <trapni@gentoo.org>2005-04-13 22:33:03 +0000
committerChristian Parpart <trapni@gentoo.org>2005-04-13 22:33:03 +0000
commit4cb7907a3e2a18fa5ebbacce51a428a1d616fb20 (patch)
tree1b46f45c86d960c2fc34ec01aeb2d5ca90f6e7a7 /dev-libs/apr-util/files
parentVersion bump. Added dev-perl/Locale-gettext to RDEPEND. (diff)
downloadhistorical-4cb7907a3e2a18fa5ebbacce51a428a1d616fb20.tar.gz
historical-4cb7907a3e2a18fa5ebbacce51a428a1d616fb20.tar.bz2
historical-4cb7907a3e2a18fa5ebbacce51a428a1d616fb20.zip
adding backport-patch so that depending pkgs on it will compile well
Package-Manager: portage-2.0.51.19
Diffstat (limited to 'dev-libs/apr-util/files')
-rw-r--r--dev-libs/apr-util/files/apr-util-0.9.x-161086:161087.patch140
-rw-r--r--dev-libs/apr-util/files/digest-apr-util-0.9.6-r11
2 files changed, 141 insertions, 0 deletions
diff --git a/dev-libs/apr-util/files/apr-util-0.9.x-161086:161087.patch b/dev-libs/apr-util/files/apr-util-0.9.x-161086:161087.patch
new file mode 100644
index 000000000000..9cca25d358ce
--- /dev/null
+++ b/dev-libs/apr-util/files/apr-util-0.9.x-161086:161087.patch
@@ -0,0 +1,140 @@
+Index: include/apr_reslist.h
+===================================================================
+--- include/apr_reslist.h (revision 161086)
++++ include/apr_reslist.h (revision 161087)
+@@ -112,6 +112,24 @@
+ APU_DECLARE(apr_status_t) apr_reslist_release(apr_reslist_t *reslist,
+ void *resource);
+
++/**
++ * Set the timeout the acquire will wait for a free resource
++ * when the maximum number of resources is exceeded.
++ * @param reslist The resource list.
++ * @param timeout Timeout to wait. The zero waits forewer.
++ */
++APU_DECLARE(void) apr_reslist_timeout_set(apr_reslist_t *reslist,
++ apr_interval_time_t timeout);
++
++/**
++ * Invalidate a resource in the pool - e.g. a database connection
++ * that returns a "lost connection" error and can't be restored.
++ * Use this instead of apr_reslist_release if the resource is bad.
++ */
++APU_DECLARE(apr_status_t) apr_reslist_invalidate(apr_reslist_t *reslist,
++ void *resource);
++
++
+ #ifdef __cplusplus
+ }
+ #endif
+Index: misc/apr_reslist.c
+===================================================================
+--- misc/apr_reslist.c (revision 161086)
++++ misc/apr_reslist.c (revision 161087)
+@@ -50,6 +50,7 @@
+ int smax; /* soft maximum on the total number of resources */
+ int hmax; /* hard maximum on the total number of resources */
+ apr_interval_time_t ttl; /* TTL when we have too many resources */
++ apr_interval_time_t timeout; /* Timeout for waiting on resource */
+ apr_reslist_constructor constructor;
+ apr_reslist_destructor destructor;
+ void *params; /* opaque data passed to constructor and destructor calls */
+@@ -119,12 +120,9 @@
+ res = apr_pcalloc(reslist->pool, sizeof(*res));
+
+ rv = reslist->constructor(&res->opaque, reslist->params, reslist->pool);
+- if (rv != APR_SUCCESS) {
+- return rv;
+- }
+
+ *ret_res = res;
+- return APR_SUCCESS;
++ return rv;
+ }
+
+ /**
+@@ -133,14 +131,7 @@
+ */
+ static apr_status_t destroy_resource(apr_reslist_t *reslist, apr_res_t *res)
+ {
+- apr_status_t rv;
+-
+- rv = reslist->destructor(res->opaque, reslist->params, reslist->pool);
+- if (rv != APR_SUCCESS) {
+- return rv;
+- }
+-
+- return APR_SUCCESS;
++ return reslist->destructor(res->opaque, reslist->params, reslist->pool);
+ }
+
+ static apr_status_t reslist_cleanup(void *data_)
+@@ -188,6 +179,7 @@
+ /* Create the resource */
+ rv = create_resource(reslist, &res);
+ if (rv != APR_SUCCESS) {
++ free_container(reslist, res);
+ apr_thread_mutex_unlock(reslist->listlock);
+ return rv;
+ }
+@@ -314,7 +306,15 @@
+ * a new one, or something becomes free. */
+ else while (reslist->ntotal >= reslist->hmax
+ && reslist->nidle <= 0) {
+- apr_thread_cond_wait(reslist->avail, reslist->listlock);
++ if (reslist->timeout) {
++ if ((rv = apr_thread_cond_timedwait(reslist->avail,
++ reslist->listlock, reslist->timeout)) != APR_SUCCESS) {
++ apr_thread_mutex_unlock(reslist->listlock);
++ return rv;
++ }
++ }
++ else
++ apr_thread_cond_wait(reslist->avail, reslist->listlock);
+ }
+ /* If we popped out of the loop, first try to see if there
+ * are new resources available for immediate use. */
+@@ -330,17 +330,13 @@
+ * a resource to fill the slot and use it. */
+ else {
+ rv = create_resource(reslist, &res);
+-
+- if (rv != APR_SUCCESS) {
+- apr_thread_mutex_unlock(reslist->listlock);
+- return rv;
++ if (rv == APR_SUCCESS) {
++ reslist->ntotal++;
++ *resource = res->opaque;
+ }
+-
+- reslist->ntotal++;
+- *resource = res->opaque;
+ free_container(reslist, res);
+ apr_thread_mutex_unlock(reslist->listlock);
+- return APR_SUCCESS;
++ return rv;
+ }
+ }
+
+@@ -359,4 +355,21 @@
+ return reslist_maint(reslist);
+ }
+
++APU_DECLARE(void) apr_reslist_timeout_set(apr_reslist_t *reslist,
++ apr_interval_time_t timeout)
++{
++ reslist->timeout = timeout;
++}
++
++APU_DECLARE(apr_status_t) apr_reslist_invalidate(apr_reslist_t *reslist,
++ void *resource)
++{
++ apr_status_t ret;
++ apr_thread_mutex_lock(reslist->listlock);
++ ret = reslist->destructor(resource, reslist->params, reslist->pool);
++ reslist->ntotal--;
++ apr_thread_mutex_unlock(reslist->listlock);
++ return ret;
++}
++
+ #endif /* APR_HAS_THREADS */
diff --git a/dev-libs/apr-util/files/digest-apr-util-0.9.6-r1 b/dev-libs/apr-util/files/digest-apr-util-0.9.6-r1
new file mode 100644
index 000000000000..906aebbf651a
--- /dev/null
+++ b/dev-libs/apr-util/files/digest-apr-util-0.9.6-r1
@@ -0,0 +1 @@
+MD5 a3a2671368e47b7efcb381e991451a9f apr-util-0.9.6.tar.gz 724680