]> granicus.if.org Git - apache/commitdiff
Improve traces in ap_proxy_http_process_response().
authorJean-Frederic Clere <jfclere@apache.org>
Thu, 21 Jun 2007 08:01:30 +0000 (08:01 +0000)
committerJean-Frederic Clere <jfclere@apache.org>
Thu, 21 Jun 2007 08:01:30 +0000 (08:01 +0000)
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

index 41af69fe4d062c0a24574c5355e872cd662e3a6e..ae4b6285e4b39ae5e21e44566071ea64bfb0db9a 100644 (file)
@@ -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,