From d8746cdc40b619f14223893f0e9401c4357352be Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Tue, 24 Feb 2004 07:28:38 +0000 Subject: [PATCH] Joe.C, joe at numa dot com dot tw writes: Hi, When downloading files over slow network (e.g. wireless/ internet) using IE, sometimes it will stop downloading and show error message 'connection closed' when the download is almost complete. This is because IE can't handle server close connection properly. Apache http_main.c fix this problem by close the connection after client close the connection. This patch do exactly the same thing. Please consider include this patch. Joe.C --- networking/httpd.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/networking/httpd.c b/networking/httpd.c index 9b36101d7..6374e670f 100644 --- a/networking/httpd.c +++ b/networking/httpd.c @@ -1499,6 +1499,9 @@ static void handleIncoming(void) char *test; struct stat sb; int ip_allowed; + fd_set s_fd ; + struct timeval tv ; + int retval; #ifdef CONFIG_FEATURE_HTTPD_BASIC_AUTH int credentials = -1; /* if not requred this is Ok */ @@ -1717,6 +1720,17 @@ FORBIDDEN: /* protect listing /cgi-bin */ #endif # endif shutdown(a_c_w, SHUT_WR); + + /* Properly wait for remote to closed */ + FD_ZERO (&s_fd) ; + FD_SET (a_c_w, &s_fd) ; + + do { + tv.tv_sec = 2 ; + tv.tv_usec = 0 ; + retval = select (a_c_w + 1, &s_fd, NULL, NULL, &tv); + } while (retval > 0 && (read (a_c_w, buf, sizeof (config->buf)) > 0)); + shutdown(a_c_r, SHUT_RD); close(config->accepted_socket); #endif /* CONFIG_FEATURE_HTTPD_USAGE_FROM_INETD_ONLY */