View Issue Details

IDProjectCategoryView StatusLast Update
0000708Apache 2.x Bugpublic2020-05-28 10:37
ReporterSteven LevineAssigned ToSteven Levine 
PrioritynormalSeverityminorReproducibilityalways
Status resolvedResolutionfixed 
PlatformOS2/eCSOSOS/2 or eComstationOS Version1.x 2.x or 4.5
Product Version2.4.x 
Target Version2.4.xFixed in Version 
Summary0000708: mod_cgi appears to lose track of POST data.
Descriptionmod_cgi appears to process GET data as it always had. However, mod_cgi seems to lose POST data. This appears to be a long standing defect that has never been reported before. The testcase also fails for at least some 2.2.x versions.

The following testcase demonstrates the failure.

If the POST data was sent correctly, it would appear between the

  === input begin ===

and

  === input end ===

markers.

There is another possibly related issue with mod_cgi. It appears that mod-cgi is not detecting the completion of the the CGI script as well as it could.

When requesting:

  http://127.0.0.1/cgi-bin/my_test_rex2.cmd

There is a long delay before the script results are display. This may be a localhost only issue. I don't recall these delays when accessing CGI output produced by similar scripts run on www.scoug.com.

More to follow after some quality time with the debugger.
TagsNo tags attached.

Activities

Steven Levine

2020-03-05 07:18

manager  

my_test_rex2.cmd (2,902 bytes)
formtest.html (316 bytes)

Steven Levine

2020-05-27 04:47

manager   ~0003469

This issue appears to be resolved by

   httpd-2.4.41-os2-debug-20200209.zip

in conjunction with the

  http://smedley.id.au/tmp/httpd.zip

which contains

 5-20-20 2:41 2,424,872 0 httpd.dll

e758aa85221c46a859785077c025cfcf *httpd.dll

If not, please reopen this ticket.

Steven Levine

2020-05-28 10:37

manager   ~0003471

For posterity, here is the diff for the above change.

proc.c.diff (611 bytes)
diff --git a/threadproc/os2/proc.c b/threadproc/os2/proc.c
index 6247597..8231d3f 100644
--- a/threadproc/os2/proc.c
+++ b/threadproc/os2/proc.c
@@ -512,9 +512,9 @@ APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *proc, const char *progname
     }
 
     if (attr->child_in) {
-        if (attr->child_in->filedes != -1) {
-            apr_file_close(attr->child_in);
-        }
+        // if (attr->child_in->filedes != -1) { // 2020-05-20 SHL Leave open until CGI finishes
+        //    apr_file_close(attr->child_in);
+        // }
 
         dup = STDIN_FILENO;
         DosDupHandle(save_in, &dup);
proc.c.diff (611 bytes)

Issue History

Date Modified Username Field Change
2020-03-05 07:18 Steven Levine New Issue
2020-03-05 07:18 Steven Levine Status new => assigned
2020-03-05 07:18 Steven Levine Assigned To => Steven Levine
2020-03-05 07:18 Steven Levine File Added: my_test_rex2.cmd
2020-03-05 07:18 Steven Levine File Added: formtest.html
2020-05-27 04:47 Steven Levine Status assigned => resolved
2020-05-27 04:47 Steven Levine Resolution open => fixed
2020-05-27 04:47 Steven Levine Note Added: 0003469
2020-05-28 10:37 Steven Levine File Added: proc.c.diff
2020-05-28 10:37 Steven Levine Note Added: 0003471