From 72ee7cf7039d340322d8416243e31aa0bdef25c7 Mon Sep 17 00:00:00 2001 From: cperciva Date: Thu, 17 Nov 2005 11:01:32 +0000 Subject: Correctly handle a TCP connection being shutdown by the server while we're reading response headers. (Handle it as a connection-killing error, rather than entering an infinite loop reading zero bytes.) Reported by: simon Discovered thanks to: A not-very-transparent transparent HTTP proxy. MFC after: 3 days --- usr.sbin/portsnap/phttpget/phttpget.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'usr.sbin/portsnap') diff --git a/usr.sbin/portsnap/phttpget/phttpget.c b/usr.sbin/portsnap/phttpget/phttpget.c index 91f2e61..e45ab83 100644 --- a/usr.sbin/portsnap/phttpget/phttpget.c +++ b/usr.sbin/portsnap/phttpget/phttpget.c @@ -223,7 +223,8 @@ readln(int sd, char * resbuf, int * resbuflen, int * resbufpos) /* Read more data into the buffer */ len = recv(sd, resbuf + *resbuflen, BUFSIZ - *resbuflen, 0); - if ((len == -1) && (errno != EINTR)) + if ((len == 0) || + ((len == -1) && (errno != EINTR))) return -1; if (len != -1) -- cgit v1.1