From: Eric Andersen Date: Tue, 24 Feb 2004 07:28:38 +0000 (-0000) Subject: Joe.C, joe at numa dot com dot tw writes: X-Git-Tag: 1_00_pre9~103 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=d8746cdc40b619f14223893f0e9401c4357352be;p=oweals%2Fbusybox.git 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 --- 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 */