From cd6a6923c23aa27f6dfb93a8004ffa5595b4b32d Mon Sep 17 00:00:00 2001 From: Jean-Frederic Clere Date: Thu, 21 Jun 2007 08:01:30 +0000 Subject: [PATCH] Improve traces in ap_proxy_http_process_response(). That will help to investigate PR 37770. (errors from backend :-)). git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@549420 13f79535-47bb-0310-9956-ffa450edef68 --- modules/proxy/mod_proxy_http.c | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/modules/proxy/mod_proxy_http.c b/modules/proxy/mod_proxy_http.c index 41af69fe4d..ae4b6285e4 100644 --- a/modules/proxy/mod_proxy_http.c +++ b/modules/proxy/mod_proxy_http.c @@ -1183,6 +1183,28 @@ static int addit_dammit(void *v, const char *key, const char *val) return 1; } +static +apr_status_t ap_proxygetline(char *s, int n, request_rec *r, + int fold, int *writen) +{ + char *tmp_s = s; + apr_status_t rv; + apr_size_t len; + apr_bucket_brigade *tmp_bb; + + tmp_bb = apr_brigade_create(r->pool, r->connection->bucket_alloc); + rv = ap_rgetline(&tmp_s, n, &len, r, fold, tmp_bb); + apr_brigade_destroy(tmp_bb); + + if (rv == APR_SUCCESS) { + *writen = (int) len; + } else { + *writen = -1; + } + + return rv; +} + static apr_status_t ap_proxy_http_process_response(apr_pool_t * p, request_rec *r, proxy_conn_rec *backend, @@ -1215,15 +1237,17 @@ apr_status_t ap_proxy_http_process_response(apr_pool_t * p, request_rec *r, */ rp->proxyreq = PROXYREQ_RESPONSE; do { + apr_status_t rc; + apr_brigade_cleanup(bb); - len = ap_getline(buffer, sizeof(buffer), rp, 0); + rc = ap_proxygetline(buffer, sizeof(buffer), rp, 0, &len); if (len == 0) { /* handle one potential stray CRLF */ - len = ap_getline(buffer, sizeof(buffer), rp, 0); + rc = ap_proxygetline(buffer, sizeof(buffer), rp, 0, &len); } if (len <= 0) { - ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, + ap_log_rerror(APLOG_MARK, APLOG_ERR, rc, r, "proxy: error reading status line from remote " "server %s", backend->hostname); return ap_proxyerror(r, HTTP_BAD_GATEWAY, -- 2.40.0