sas Sun Apr 22 07:33:09 2001 EDT Modified files: (Branch: PHP_4_0_5) /php4/sapi/thttpd thttpd.c thttpd_patch Log: Merge thttpd-2.21-related changes into 4.0.5 branch Index: php4/sapi/thttpd/thttpd.c diff -u php4/sapi/thttpd/thttpd.c:1.38 php4/sapi/thttpd/thttpd.c:1.38.2.1 --- php4/sapi/thttpd/thttpd.c:1.38 Fri Mar 2 09:01:52 2001 +++ php4/sapi/thttpd/thttpd.c Sun Apr 22 07:33:09 2001 @@ -24,6 +24,8 @@ #include "php_variables.h" #include "version.h" +#include "ext/standard/php_smart_str.h" + #include <sys/uio.h> typedef struct { @@ -57,7 +59,7 @@ if (n <= 0) return n; - TG(hc)->bytes += n; + TG(hc)->bytes_sent += n; str += n; sent += n; str_length -= n; @@ -84,7 +86,7 @@ vec[n].iov_base = buf; vec[n++].iov_len = len; TG(hc)->status = SG(sapi_headers).http_response_code; - TG(hc)->bytes += len; + TG(hc)->bytes_sent += len; } h = zend_llist_get_first_ex(&sapi_headers->headers, &pos); @@ -257,30 +259,24 @@ static void thttpd_request_ctor(TLS_D SLS_DC) { - char *cp; - size_t cp_len; char buf[1024]; int offset; size_t filename_len; size_t cwd_len; - + smart_str s = {0}; SG(request_info).query_string = TG(hc)->query?strdup(TG(hc)->query):NULL; - - filename_len = strlen(TG(hc)->expnfilename); - cwd_len = strlen(TG(hc)->hs->cwd); - cp_len = cwd_len + filename_len; - cp = (char *) malloc(cp_len + 1); - /* cwd always ends in "/", so this is safe */ - memcpy(cp, TG(hc)->hs->cwd, cwd_len); - memcpy(cp + cwd_len, TG(hc)->expnfilename, filename_len); - cp[cp_len] = '\0'; - - SG(request_info).path_translated = cp; - - snprintf(buf, 1023, "/%s", TG(hc)->origfilename); - SG(request_info).request_uri = strdup(buf); + smart_str_appends_ex(&s, TG(hc)->hs->cwd, 1); + smart_str_appends_ex(&s, TG(hc)->expnfilename, 1); + smart_str_0(&s); + SG(request_info).path_translated = s.c; + + s.c = NULL; + smart_str_appendc_ex(&s, '/', 1); + smart_str_appends_ex(&s, TG(hc)->origfilename, 1); + smart_str_0(&s); + SG(request_info).request_uri = s.c; SG(request_info).request_method = httpd_method_str(TG(hc)->method); SG(sapi_headers).http_response_code = 200; SG(request_info).content_type = TG(hc)->contenttype; @@ -313,7 +309,7 @@ TLS_FETCH(); TG(hc) = hc; - hc->bytes = 0; + hc->bytes_sent = 0; thttpd_request_ctor(TLS_C SLS_CC); Index: php4/sapi/thttpd/thttpd_patch diff -u php4/sapi/thttpd/thttpd_patch:1.7 php4/sapi/thttpd/thttpd_patch:1.7.4.1 --- php4/sapi/thttpd/thttpd_patch:1.7 Wed Nov 15 15:37:50 2000 +++ php4/sapi/thttpd/thttpd_patch Sun Apr 22 07:33:09 2001 @@ -1,6 +1,6 @@ -diff -Nur thttpd-2.20b/Makefile.in thttpd-2.20b-php/Makefile.in ---- thttpd-2.20b/Makefile.in Tue Jul 4 18:21:32 2000 -+++ thttpd-2.20b-php/Makefile.in Mon Nov 13 14:25:48 2000 +diff -ur thttpd-2.21/Makefile.in thttpd-2.21-p/Makefile.in +--- thttpd-2.21/Makefile.in Thu Mar 29 20:36:21 2001 ++++ thttpd-2.21-p/Makefile.in Sun Apr 22 15:59:42 2001 @@ -46,13 +46,15 @@ # You shouldn't need to edit anything below here. @@ -38,10 +38,10 @@ tar: @name=`sed -n -e '/SERVER_SOFTWARE/!d' -e 's,.*thttpd/,thttpd-,' -e 's, .*,,p' version.h` ; \ -diff -Nur thttpd-2.20b/libhttpd.c thttpd-2.20b-php/libhttpd.c ---- thttpd-2.20b/libhttpd.c Wed Sep 27 20:13:24 2000 -+++ thttpd-2.20b-php/libhttpd.c Mon Nov 13 14:25:57 2000 -@@ -75,6 +75,8 @@ +diff -ur thttpd-2.21/libhttpd.c thttpd-2.21-p/libhttpd.c +--- thttpd-2.21/libhttpd.c Sat Apr 21 02:11:32 2001 ++++ thttpd-2.21-p/libhttpd.c Sun Apr 22 16:01:41 2001 +@@ -85,6 +85,8 @@ #include "match.h" #include "tdate_parse.h" @@ -50,7 +50,7 @@ #ifndef STDIN_FILENO #define STDIN_FILENO 0 #endif -@@ -225,6 +227,8 @@ +@@ -243,6 +245,8 @@ free( (void*) hs->cwd ); if ( hs->cgi_pattern != (char*) 0 ) free( (void*) hs->cgi_pattern ); @@ -59,7 +59,7 @@ if ( hs->charset != (char*) 0 ) free( (void*) hs->charset ); if ( hs->url_pattern != (char*) 0 ) -@@ -232,6 +236,7 @@ +@@ -250,6 +254,7 @@ if ( hs->local_pattern != (char*) 0 ) free( (void*) hs->local_pattern ); free( (void*) hs ); @@ -67,7 +67,7 @@ } -@@ -292,6 +297,7 @@ +@@ -313,6 +318,7 @@ } hs->port = port; @@ -75,7 +75,7 @@ if ( cgi_pattern == (char*) 0 ) hs->cgi_pattern = (char*) 0; else -@@ -363,6 +369,8 @@ +@@ -386,6 +392,8 @@ return (httpd_server*) 0; } @@ -83,19 +83,20 @@ + /* Done initializing. */ if ( hs->binding_hostname == (char*) 0 ) - syslog( LOG_INFO, "%s starting on port %d", SERVER_SOFTWARE, hs->port ); -@@ -2167,7 +2175,9 @@ - void - httpd_close_conn( httpd_conn* hc, struct timeval* nowP ) + syslog( LOG_INFO, "%.80s starting on port %d", SERVER_SOFTWARE, hs->port ); +@@ -2336,7 +2344,10 @@ { + make_log_entry( hc, nowP ); + - if ( hc->file_address != (char*) 0 ) -+ if (hc->file_address == (char *) 1) { -+ thttpd_closed_conn(hc->conn_fd); -+ } else if ( hc->file_address != (char*) 0 ) ++ if ( hc->file_address == (char*) 1 ) ++ { ++ thttpd_closed_conn(hc->conn_fd); ++ } else if ( hc->file_address != (char*) 0 ) { - mmc_unmap( hc->file_address, nowP, &(hc->sb) ); + mmc_unmap( hc->file_address, &(hc->sb), nowP ); hc->file_address = (char*) 0; -@@ -3336,6 +3346,11 @@ +@@ -3543,6 +3554,11 @@ ( hc->sb.st_mode & S_IXOTH ) && match( hc->hs->cgi_pattern, hc->expnfilename ) ) return cgi( hc ); @@ -107,9 +108,9 @@ /* It's not CGI. If it's executable or there's pathinfo, someone's ** trying to either serve or run a non-CGI file as CGI. Either case -diff -Nur thttpd-2.20b/libhttpd.h thttpd-2.20b-php/libhttpd.h ---- thttpd-2.20b/libhttpd.h Tue Jun 13 20:48:56 2000 -+++ thttpd-2.20b-php/libhttpd.h Mon Nov 13 14:25:48 2000 +diff -ur thttpd-2.21/libhttpd.h thttpd-2.21-p/libhttpd.h +--- thttpd-2.21/libhttpd.h Fri Apr 13 07:37:17 2001 ++++ thttpd-2.21-p/libhttpd.h Sun Apr 22 15:59:42 2001 @@ -69,6 +69,7 @@ char* server_hostname; int port; @@ -118,19 +119,19 @@ char* charset; char* cwd; int listen4_fd, listen6_fd; -diff -Nur thttpd-2.20b/thttpd.c thttpd-2.20b-php/thttpd.c ---- thttpd-2.20b/thttpd.c Wed Sep 27 21:31:48 2000 -+++ thttpd-2.20b-php/thttpd.c Mon Nov 13 14:25:57 2000 -@@ -1332,6 +1333,12 @@ - c->bytes_sent = hc->bytes; +diff -ur thttpd-2.21/thttpd.c thttpd-2.21-p/thttpd.c +--- thttpd-2.21/thttpd.c Sun Apr 15 18:09:20 2001 ++++ thttpd-2.21-p/thttpd.c Sun Apr 22 15:59:42 2001 +@@ -1392,6 +1392,12 @@ clear_connection( c, tvP ); return; -+ } + } + if (hc->file_address == (char *) 1) { + tmr_cancel( c->idle_read_timer ); + c->idle_read_timer = (Timer*) 0; + c->wouldblock_delay = 0; + return; - } ++ } if ( c->bytes_sent >= c->bytes_to_send ) { + /* There's nothing to send. */ -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]