rbb 00/01/12 10:20:45
Modified: src/main http_protocol.c http_request.c Log: Fix some remaining problems with SSI's and Windows. Basically, the sendfile stuff doesn't work properly with chuncked data. Submitted by: Allan Edwards Reviewed by: Ryan Bloom Revision Changes Path 1.47 +14 -9 apache-2.0/src/main/http_protocol.c Index: http_protocol.c =================================================================== RCS file: /home/cvs/apache-2.0/src/main/http_protocol.c,v retrieving revision 1.46 retrieving revision 1.47 diff -u -r1.46 -r1.47 --- http_protocol.c 2000/01/09 05:18:23 1.46 +++ http_protocol.c 2000/01/12 18:20:43 1.47 @@ -2016,16 +2016,21 @@ { long len; #ifdef HAVE_SENDFILE - ap_bflush(r->connection->client); - if (ap_get_filesize(&len, fd) != APR_SUCCESS) { - ap_log_rerror(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, 0, r, - "ap_send_fd: ap_get_filesize failed."); - return 0; + if (!r->chunked) { + ap_bflush(r->connection->client); + if (ap_get_filesize(&len, fd) != APR_SUCCESS) { + ap_log_rerror(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, 0, r, + "ap_send_fd: ap_get_filesize failed."); + return 0; + } + if (iol_sendfile(r->connection->client->iol, fd, len, + NULL, 0, 0) != APR_SUCCESS) { + ap_log_rerror(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, 0, r, + "ap_send_fd: iol_sendfile failed."); + } } - if (iol_sendfile(r->connection->client->iol, fd, len, - NULL, 0, 0) != APR_SUCCESS) { - ap_log_rerror(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, 0, r, - "ap_send_fd: iol_sendfile failed."); + else { + len = ap_send_fd_length(fd, r, -1); } #else len = ap_send_fd_length(fd, r, -1); 1.16 +1 -0 apache-2.0/src/main/http_request.c Index: http_request.c =================================================================== RCS file: /home/cvs/apache-2.0/src/main/http_request.c,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- http_request.c 2000/01/10 15:35:49 1.15 +++ http_request.c 2000/01/12 18:20:43 1.16 @@ -845,6 +845,7 @@ rnew->server = r->server; rnew->request_config = ap_create_request_config(rnew->pool); rnew->htaccess = r->htaccess; + rnew->chunked = r->chunked; ap_set_sub_req_protocol(rnew, r); fdir = ap_make_dirstr_parent(rnew->pool, r->filename);