diff options
| author | Jim Jagielski <jim@apache.org> | 2009-08-31 11:41:33 +0000 |
|---|---|---|
| committer | Jim Jagielski <jim@apache.org> | 2009-08-31 11:41:33 +0000 |
| commit | 1a216eca678b06d10cae0ce673fd0a7af6481efc (patch) | |
| tree | 5116fe26d5bd2475861411baaac1f9e288e4764f /modules/proxy/mod_proxy_connect.c | |
| parent | fdbbba3802914af0a111b740fc793bb3a3582a32 (diff) | |
| download | httpd-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.c | 21 |
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) { |
