summaryrefslogtreecommitdiffstats
path: root/usr.sbin/portsnap
diff options
context:
space:
mode:
authorcperciva <cperciva@FreeBSD.org>2005-11-17 11:01:32 +0000
committercperciva <cperciva@FreeBSD.org>2005-11-17 11:01:32 +0000
commit72ee7cf7039d340322d8416243e31aa0bdef25c7 (patch)
tree48b0fe55f2836addcf7ce524a657f6369e84d123 /usr.sbin/portsnap
parenta384e414462e3ac3204ea4693d31837bcee23ee6 (diff)
downloadFreeBSD-src-72ee7cf7039d340322d8416243e31aa0bdef25c7.zip
FreeBSD-src-72ee7cf7039d340322d8416243e31aa0bdef25c7.tar.gz
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
Diffstat (limited to 'usr.sbin/portsnap')
-rw-r--r--usr.sbin/portsnap/phttpget/phttpget.c3
1 files changed, 2 insertions, 1 deletions
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)
OpenPOWER on IntegriCloud