You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by tr...@apache.org on 2013/05/29 14:35:01 UTC

svn commit: r1487459 - in /httpd/httpd/branches/2.2.x: ./ docs/ docs/manual/mod/ modules/experimental/mod_example.c modules/filters/mod_ext_filter.c modules/http/http_request.c server/main.c

Author: trawick
Date: Wed May 29 12:35:00 2013
New Revision: 1487459

URL: http://svn.apache.org/r1487459
Log:
mergeinfo for r1487458

Modified:
    httpd/httpd/branches/2.2.x/   (props changed)
    httpd/httpd/branches/2.2.x/docs/   (props changed)
    httpd/httpd/branches/2.2.x/docs/manual/mod/   (props changed)
    httpd/httpd/branches/2.2.x/modules/experimental/mod_example.c
    httpd/httpd/branches/2.2.x/modules/filters/mod_ext_filter.c
    httpd/httpd/branches/2.2.x/modules/http/http_request.c
    httpd/httpd/branches/2.2.x/server/main.c

Propchange: httpd/httpd/branches/2.2.x/
------------------------------------------------------------------------------
  Merged /httpd/httpd/trunk:r1487451

Propchange: httpd/httpd/branches/2.2.x/docs/
------------------------------------------------------------------------------
  Merged /httpd/httpd/trunk/docs:r1487451

Propchange: httpd/httpd/branches/2.2.x/docs/manual/mod/
------------------------------------------------------------------------------
  Merged /httpd/httpd/trunk/docs/manual/mod:r1487451

Modified: httpd/httpd/branches/2.2.x/modules/experimental/mod_example.c
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.2.x/modules/experimental/mod_example.c?rev=1487459&r1=1487458&r2=1487459&view=diff
==============================================================================
--- httpd/httpd/branches/2.2.x/modules/experimental/mod_example.c (original)
+++ httpd/httpd/branches/2.2.x/modules/experimental/mod_example.c Wed May 29 12:35:00 2013
@@ -922,7 +922,7 @@ static const char *x_http_scheme(const r
     /*
      * Log the call and exit.
      */
-    trace_add(r->server, NULL, cfg, "x_http_scheme()");
+    trace_add(r->server, r, cfg, "x_http_scheme()");
     return "example";
 }
 
@@ -941,7 +941,7 @@ static apr_port_t x_default_port(const r
     /*
      * Log the call and exit.
      */
-    trace_add(r->server, NULL, cfg, "x_default_port()");
+    trace_add(r->server, r, cfg, "x_default_port()");
     return 80;
 }
 #endif /*0*/
@@ -961,7 +961,7 @@ static void x_insert_filter(request_rec 
     /*
      * Log the call and exit.
      */
-    trace_add(r->server, NULL, cfg, "x_insert_filter()");
+    trace_add(r->server, r, cfg, "x_insert_filter()");
 }
 
 /*
@@ -979,7 +979,7 @@ static int x_quick_handler(request_rec *
     /*
      * Log the call and exit.
      */
-    trace_add(r->server, NULL, cfg, "x_quick_handler()");
+    trace_add(r->server, r, cfg, "x_quick_handler()");
     return DECLINED;
 }
 

Modified: httpd/httpd/branches/2.2.x/modules/filters/mod_ext_filter.c
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.2.x/modules/filters/mod_ext_filter.c?rev=1487459&r1=1487458&r2=1487459&view=diff
==============================================================================
--- httpd/httpd/branches/2.2.x/modules/filters/mod_ext_filter.c (original)
+++ httpd/httpd/branches/2.2.x/modules/filters/mod_ext_filter.c Wed May 29 12:35:00 2013
@@ -67,7 +67,7 @@ typedef struct ef_ctx_t {
     apr_procattr_t *procattr;
     ef_dir_t *dc;
     ef_filter_t *filter;
-    int noop;
+    int noop, hit_eos;
 #if APR_FILES_AS_SOCKETS
     apr_pollset_t *pollset;
 #endif
@@ -856,6 +856,7 @@ static int ef_unified_filter(ap_filter_t
     if (eos) {
         b = apr_bucket_eos_create(c->bucket_alloc);
         APR_BRIGADE_INSERT_TAIL(bb, b);
+        ctx->hit_eos = 1;
     }
 
     return APR_SUCCESS;
@@ -939,6 +940,14 @@ static int ef_input_filter(ap_filter_t *
         ctx = f->ctx;
     }
 
+    if (ctx->hit_eos) {
+        /* Match behaviour of HTTP_IN if filter is re-invoked after
+         * hitting EOS: give back another EOS. */
+        apr_bucket *e = apr_bucket_eos_create(f->c->bucket_alloc);
+        APR_BRIGADE_INSERT_TAIL(bb, e);
+        return APR_SUCCESS;
+    }
+
     if (ctx->noop) {
         ap_remove_input_filter(f);
         return ap_get_brigade(f->next, bb, mode, block, readbytes);

Modified: httpd/httpd/branches/2.2.x/modules/http/http_request.c
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.2.x/modules/http/http_request.c?rev=1487459&r1=1487458&r2=1487459&view=diff
==============================================================================
--- httpd/httpd/branches/2.2.x/modules/http/http_request.c (original)
+++ httpd/httpd/branches/2.2.x/modules/http/http_request.c Wed May 29 12:35:00 2013
@@ -243,16 +243,16 @@ static void check_pipeline_flush(request
         }
     }
 
-        e = apr_bucket_flush_create(c->bucket_alloc);
+    e = apr_bucket_flush_create(c->bucket_alloc);
 
-        /* We just send directly to the connection based filters.  At
-         * this point, we know that we have seen all of the data
-         * (request finalization sent an EOS bucket, which empties all
-         * of the request filters). We just want to flush the buckets
-         * if something hasn't been sent to the network yet.
-         */
-        APR_BRIGADE_INSERT_HEAD(bb, e);
-        ap_pass_brigade(r->connection->output_filters, bb);
+    /* We just send directly to the connection based filters.  At
+     * this point, we know that we have seen all of the data
+     * (request finalization sent an EOS bucket, which empties all
+     * of the request filters). We just want to flush the buckets
+     * if something hasn't been sent to the network yet.
+     */
+    APR_BRIGADE_INSERT_HEAD(bb, e);
+    ap_pass_brigade(r->connection->output_filters, bb);
 }
 
 void ap_process_request(request_rec *r)

Modified: httpd/httpd/branches/2.2.x/server/main.c
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.2.x/server/main.c?rev=1487459&r1=1487458&r2=1487459&view=diff
==============================================================================
--- httpd/httpd/branches/2.2.x/server/main.c (original)
+++ httpd/httpd/branches/2.2.x/server/main.c Wed May 29 12:35:00 2013
@@ -626,6 +626,10 @@ int main(int argc, const char * const ar
      */
 
     ap_server_root = def_server_root;
+    if (ap_server_root_relative(ptemp, "foo") == NULL) {
+        fail();
+    }
+
     if (temp_error_log) {
         ap_replace_stderr_log(process->pool, temp_error_log);
     }
@@ -707,6 +711,10 @@ int main(int argc, const char * const ar
         apr_pool_create(&ptemp, pconf);
         apr_pool_tag(ptemp, "ptemp");
         ap_server_root = def_server_root;
+        if (ap_server_root_relative(ptemp, "foo") == NULL) {
+            fail();
+        }
+
         server_conf = ap_read_config(process, ptemp, confname, &ap_conftree);
         if (!server_conf) {
             destroy_and_exit_process(process, 1);