Blob Blame History Raw
diff --git a/modules/generators/mod_cgi.c b/modules/generators/mod_cgi.c
index 7808262..38e43d3 100644
--- a/modules/generators/mod_cgi.c
+++ b/modules/generators/mod_cgi.c
@@ -946,6 +946,13 @@ static int cgi_handler(request_rec *r)
         if ((ret = ap_scan_script_header_err_brigade_ex(r, bb, sbuf,
                                                         APLOG_MODULE_INDEX)))
         {
+            /* In the case of a timeout reading script output, clear
+             * the brigade to avoid a second attempt to read the
+             * output. */
+            if (ret == HTTP_GATEWAY_TIME_OUT) {
+                apr_brigade_cleanup(bb);
+            }
+
             ret = log_script(r, conf, ret, dbuf, sbuf, bb, script_err);
 
             /*
diff --git a/modules/generators/mod_cgid.c b/modules/generators/mod_cgid.c
index 56d3524..b1e7dec 100644
--- a/modules/generators/mod_cgid.c
+++ b/modules/generators/mod_cgid.c
@@ -1554,6 +1554,13 @@ static int cgid_handler(request_rec *r)
         if ((ret = ap_scan_script_header_err_brigade_ex(r, bb, sbuf,
                                                         APLOG_MODULE_INDEX)))
         {
+            /* In the case of a timeout reading script output, clear
+             * the brigade to avoid a second attempt to read the
+             * output. */
+            if (ret == HTTP_GATEWAY_TIME_OUT) {
+                apr_brigade_cleanup(bb);
+            }
+
             ret = log_script(r, conf, ret, dbuf, sbuf, bb, NULL);
 
             /*