summaryrefslogtreecommitdiff
path: root/modules/proxy/mod_proxy_connect.c
diff options
context:
space:
mode:
authorJim Jagielski <jim@apache.org>2009-08-31 11:41:33 +0000
committerJim Jagielski <jim@apache.org>2009-08-31 11:41:33 +0000
commit1a216eca678b06d10cae0ce673fd0a7af6481efc (patch)
tree5116fe26d5bd2475861411baaac1f9e288e4764f /modules/proxy/mod_proxy_connect.c
parentfdbbba3802914af0a111b740fc793bb3a3582a32 (diff)
downloadhttpd-2.2-proxy.tar.gz
More trunk backportinghttpd-2.2-proxy
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/httpd-2.2-proxy@809545 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'modules/proxy/mod_proxy_connect.c')
-rw-r--r--modules/proxy/mod_proxy_connect.c21
1 files changed, 17 insertions, 4 deletions
diff --git a/modules/proxy/mod_proxy_connect.c b/modules/proxy/mod_proxy_connect.c
index 8804359c09..5fd4c3b6d2 100644
--- a/modules/proxy/mod_proxy_connect.c
+++ b/modules/proxy/mod_proxy_connect.c
@@ -201,7 +201,7 @@ static int proxy_connect_handler(request_rec *r, proxy_worker *worker,
return DECLINED;
}
else {
- return HTTP_BAD_GATEWAY;
+ return HTTP_SERVICE_UNAVAILABLE;
}
}
@@ -270,7 +270,8 @@ static int proxy_connect_handler(request_rec *r, proxy_worker *worker,
if ((rv = apr_pollset_create(&pollset, 2, r->pool, 0)) != APR_SUCCESS) {
apr_socket_close(sock);
ap_log_rerror(APLOG_MARK, APLOG_ERR, rv, r,
- "proxy: CONNECT: error apr_pollset_create()");
+ "proxy: CONNECT: error apr_pollset_create();"
+ " check system or user limits");
return HTTP_INTERNAL_SERVER_ERROR;
}
@@ -280,11 +281,23 @@ static int proxy_connect_handler(request_rec *r, proxy_worker *worker,
pollfd.reqevents = APR_POLLIN;
pollfd.desc.s = client_socket;
pollfd.client_data = NULL;
- apr_pollset_add(pollset, &pollfd);
+ rv = apr_pollset_add(pollset, &pollfd);
+ if (rv != APR_SUCCESS) {
+ ap_log_rerror(APLOG_MARK, APLOG_ERR, rv, r,
+ "proxy: CONNECT: error apr_pollset_add();"
+ " check system or user limits");
+ return HTTP_INTERNAL_SERVER_ERROR;
+ }
/* Add the server side to the poll */
pollfd.desc.s = sock;
- apr_pollset_add(pollset, &pollfd);
+ rv = apr_pollset_add(pollset, &pollfd);
+ if (rv != APR_SUCCESS) {
+ ap_log_rerror(APLOG_MARK, APLOG_ERR, rv, r,
+ "proxy: CONNECT: error apr_pollset_add();"
+ " check system or user limits");
+ return HTTP_INTERNAL_SERVER_ERROR;
+ }
while (1) { /* Infinite loop until error (one side closes the connection) */
if ((rv = apr_pollset_poll(pollset, -1, &pollcnt, &signalled)) != APR_SUCCESS) {