rbb 99/03/22 12:43:41
Modified: pthreads/src/modules/proxy proxy_cache.c proxy_ftp.c Log: Amazingly enough, mod_proxy seems to work. I had to remove all of the ap_(un)block_alarms calls, but that should be okay, because our sig_wait thread should handle all of that stuff for us. This needs to be tested more thoroughly, but it seemed to work for me. Revision Changes Path 1.6 +1 -9 apache-apr/pthreads/src/modules/proxy/proxy_cache.c Index: proxy_cache.c =================================================================== RCS file: /home/cvs/apache-apr/pthreads/src/modules/proxy/proxy_cache.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- proxy_cache.c 1999/03/17 17:01:42 1.5 +++ proxy_cache.c 1999/03/22 20:43:39 1.6 @@ -137,13 +137,11 @@ inside = 1; (void) ap_release_mutex(garbage_mutex); - ap_block_alarms(); /* avoid SIGALRM on big cache cleanup */ #if !defined(WIN32) && !defined(MPE) && !defined(OS2) detached_proxy_garbage_coll(r); #else help_proxy_garbage_coll(r); #endif - ap_unblock_alarms(); (void) ap_acquire_mutex(garbage_mutex); inside = 0; @@ -294,7 +292,6 @@ if (garbage_now != -1 && lastcheck != BAD_DATE && garbage_now < lastcheck + every) return; - ap_block_alarms(); /* avoid SIGALRM on big cache cleanup */ filename = ap_palloc(r->pool, strlen(cachedir) + HASH_LEN + 2); strcpy(filename, cachedir); @@ -303,7 +300,6 @@ if (errno != ENOENT) { ap_log_error(APLOG_MARK, APLOG_ERR, r->server, "proxy: stat(%s)", filename); - ap_unblock_alarms(); return; } if ((timefd = creat(filename, 0666)) == -1) { @@ -312,7 +308,6 @@ "proxy: creat(%s)", filename); else lastcheck = garbage_now; /* someone else got in there */ - ap_unblock_alarms(); return; } close(timefd); @@ -320,7 +315,6 @@ else { lastcheck = buf.st_mtime; /* save the time */ if (garbage_now < lastcheck + every) { - ap_unblock_alarms(); return; } if (utime(filename, NULL) == -1) @@ -336,7 +330,6 @@ ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "proxy GC: Cache is %ld%% full (nothing deleted)", (long)(((curbytes.upper<<20)|(curbytes.lower>>10))*100/conf->space)); - ap_unblock_alarms(); return; } @@ -367,7 +360,6 @@ ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "proxy GC: Cache is %ld%% full (%d deleted)", (long)(((curbytes.upper<<20)|(curbytes.lower>>10))*100/conf->space), i); - ap_unblock_alarms(); } static int sub_garbage_coll(request_rec *r, array_header *files, @@ -954,7 +946,7 @@ r->status_line = strchr(c->resp_line, ' ') + 1; r->status = c->status; if (!r->assbackwards) { - ap_soft_timeout("proxy send headers", r); + /*ap_soft_timeout("proxy send headers", r);*/ ap_proxy_send_headers(r, c->resp_line, c->hdrs); } ap_bsetopt(r->connection->client, BO_BYTECT, &zero); 1.5 +1 -1 apache-apr/pthreads/src/modules/proxy/proxy_ftp.c Index: proxy_ftp.c =================================================================== RCS file: /home/cvs/apache-apr/pthreads/src/modules/proxy/proxy_ftp.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- proxy_ftp.c 1999/03/17 17:01:43 1.4 +++ proxy_ftp.c 1999/03/22 20:43:39 1.5 @@ -660,7 +660,7 @@ i = ftp_getrc(f); Explain1("FTP: returned status %d", i); if (i == -1) { - return ap_proxyerror(r, ,HTTP_BAD_GATEWAY, + return ap_proxyerror(r, HTTP_BAD_GATEWAY, "Error reading from remote server"); } if (i == 530) {