]> granicus.if.org Git - php/commitdiff
MFH socket fix
authorDerick Rethans <derick@php.net>
Mon, 18 Mar 2002 22:12:57 +0000 (22:12 +0000)
committerDerick Rethans <derick@php.net>
Mon, 18 Mar 2002 22:12:57 +0000 (22:12 +0000)
ext/standard/fsock.c

index 70639dcdc80912d25e4d40b2ad6790b4f0ddb817..05a65b39b570f082abf7226cf7a30ae1b0d05550 100644 (file)
@@ -478,6 +478,14 @@ static size_t php_sockread_internal(php_sockbuf *sock)
        /* read at a maximum sock->chunk_size */
        nr_bytes = recv(sock->socket, buf, sock->chunk_size, 0);
        if(nr_bytes > 0) {
+
+               /* try to avoid ever expanding buffer */
+               if (sock->readpos > 0) {
+                       memmove(sock->readbuf, READPTR(sock), sock->readbuflen - sock->readpos);
+                       sock->writepos -= sock->readpos;
+                       sock->readpos = 0;
+               }
+
                if(sock->writepos + nr_bytes > sock->readbuflen) {
                        sock->readbuflen += sock->chunk_size;
                        sock->readbuf = perealloc(sock->readbuf, sock->readbuflen,