Return-Path: Delivered-To: apache-cvs-archive@hyperreal.org Received: (qmail 21679 invoked by uid 6000); 26 Jan 2000 05:01:26 -0000 Received: (qmail 21633 invoked by uid 2016); 26 Jan 2000 05:01:23 -0000 Delivered-To: apcore-apache-2.0-cvs@apache.org Received: (qmail 21606 invoked by uid 215); 26 Jan 2000 05:01:21 -0000 Date: 26 Jan 2000 05:01:21 -0000 Message-ID: <20000126050121.21604.qmail@hyperreal.org> From: stoddard@hyperreal.org To: apache-2.0-cvs@apache.org Subject: cvs commit: apache-2.0/src/lib/apr/network_io/unix sendrecv.c Sender: apache-cvs-owner@apache.org Precedence: bulk Reply-To: new-httpd@apache.org stoddard 00/01/25 21:01:19 Modified: src/os/unix iol_socket.c src/lib/apr/network_io/unix sendrecv.c Log: Fix a couple of bugs in the Unix side of the house. Not tested (no machine available). First bug: Use ap_sendv to implement iol_writev. The previous implementation would only send the first buffer in the chain. Second bug: ap_sendfile() on HP needs to put all the headers (trailers) into a single header (trailer) buffer. The data was not being copied into the buffers correctly. Revision Changes Path 1.14 +1 -2 apache-2.0/src/os/unix/iol_socket.c Index: iol_socket.c =================================================================== RCS file: /home/cvs/apache-2.0/src/os/unix/iol_socket.c,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- iol_socket.c 2000/01/19 01:16:21 1.13 +++ iol_socket.c 2000/01/26 05:01:13 1.14 @@ -109,8 +109,7 @@ static ap_status_t unix_writev(ap_iol *viol, const struct iovec *vec, int nvec, ap_ssize_t *nbytes) { - *nbytes = vec[0].iov_len; - return ap_send(((iol_socket *)viol)->sock, vec[0].iov_base, nbytes); + return ap_sendv(((iol_socket *)viol)->sock, vec, nvec, nbytes); } static ap_status_t unix_read(ap_iol *viol, char* buf, ap_size_t size, 1.9 +2 -2 apache-2.0/src/lib/apr/network_io/unix/sendrecv.c Index: sendrecv.c =================================================================== RCS file: /home/cvs/apache-2.0/src/lib/apr/network_io/unix/sendrecv.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- sendrecv.c 1999/12/04 21:48:34 1.8 +++ sendrecv.c 2000/01/26 05:01:16 1.9 @@ -465,7 +465,7 @@ headerbuf = ap_palloc(sock->cntxt, headerlen); for (i = 0; i < hdtr->numheaders; i++) { - memcpy(headerbuf, hdtr->headers[i].iov_base + ptr, + memcpy(headerbuf + ptr, hdtr->headers[i].iov_base, hdtr->headers[i].iov_len); ptr += hdtr->headers[i].iov_len; } @@ -477,7 +477,7 @@ trailerbuf = ap_palloc(sock->cntxt, trailerlen); for (i = 0; i < hdtr->numtrailers; i++) { - memcpy(trailerbuf, hdtr->trailers[i].iov_base + ptr, + memcpy(trailerbuf + ptr, hdtr->trailers[i].iov_base, hdtr->trailers[i].iov_len); ptr += hdtr->trailers[i].iov_len; }