You are viewing a plain text version of this content. The canonical link for it is here.
Posted to apache-bugdb@apache.org by Gerd Knops <ge...@BITart.com> on 1998/08/24 06:47:06 UTC

mod_cgi/2894: cgi triggers premature EOF to be sent to client

>Number:         2894
>Category:       mod_cgi
>Synopsis:       cgi triggers premature EOF to be sent to client
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    apache
>State:          open
>Class:          sw-bug
>Submitter-Id:   apache
>Arrival-Date:   Sun Aug 23 21:50:00 PDT 1998
>Last-Modified:
>Originator:     gerti@BITart.com
>Organization:
apache
>Release:        1.3.1
>Environment:
NEXTSTEP 3.3
>Description:
Hi Guys,

Sorry, this is going to be vague, but maybe it rings a bell somewhere.

A cgi script working perfectly fine with 1.2.x suddenly started failing. The script sends a number of fixed size files from a floppy to a java applet.

The Java applet receives a premature EOF, which in turn causes apache to send a SIGTERM to the CGI.

Here is the code in the CGI that sends the files:

	foreach my $file (@files)
	{
		my $mtime=(stat("$floppy/$file"))[9];
		print "$file\t$mtime\r\n";
		open(IN,"$floppy/$file");
		my $buf="";
		unless(sysread(IN,$buf,4608)==4608)
		{
			die("$0: Error reading 4608 bytes from $floppy/$file");
		}
		close(IN) || die("$0: Close failed for $floppy/$file");
		print $buf;
	}

The CGI doesn't produce any error messages. To make things more bizar, calling the CGI a number of times makes it fail later and later in the process, until it finally works. Remount the floppy, and the problems start over.

I thought it might have to do with me sending binary data, so I replaced the "print $buf;" with "print '-' x 4608;", but the behavior was the same.

I guess it has to do woth apache now sending the output from the CGI unbuffered, but I am at a total loss to even figure out what or where it goes wrong.

The only thing changed since the script used to work was apache.

Setting $! to 0 or 1 in perl doesn't make any difference.

I'd be very thankful for any pointers.

Gerd
>How-To-Repeat:

>Fix:

>Audit-Trail:
>Unformatted:
[In order for any reply to be added to the PR database, ]
[you need to include <ap...@Apache.Org> in the Cc line ]
[and leave the subject line UNCHANGED.  This is not done]
[automatically because of the potential for mail loops. ]
[If you do not include this Cc, your reply may be ig-   ]
[nored unless you are responding to an explicit request ]
[from a developer.                                      ]
[Reply only with text; DO NOT SEND ATTACHMENTS!         ]