From 51e39bfff433edfeec0613a94feb17c950342e3c Mon Sep 17 00:00:00 2001 From: Wilfried Goesgens Date: Fri, 22 Apr 2011 22:50:09 +0000 Subject: [PATCH] * fix some rare oom situation. --- webcit/tcp_sockets.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/webcit/tcp_sockets.c b/webcit/tcp_sockets.c index 27fc0a92a..1adcafc32 100644 --- a/webcit/tcp_sockets.c +++ b/webcit/tcp_sockets.c @@ -651,19 +651,23 @@ int client_read_to(ParsedHttpHdrs *Hdr, StrBuf *Target, int bytes, int timeout) #ifdef HAVE_OPENSSL if (is_https) { - long bufremain; + long bufremain = 0; long baselen; baselen = StrLength(Target); if (Hdr->Pos == NULL) Hdr->Pos = ChrPtr(Hdr->ReadBuf); - bufremain = StrLength(Hdr->ReadBuf) - (Hdr->Pos - ChrPtr(Hdr->ReadBuf)); - if (bytes < bufremain) - bufremain = bytes; - StrBufAppendBufPlain(Target, Hdr->Pos, bufremain, 0); - StrBufCutLeft(Hdr->ReadBuf, bufremain); + if (StrLength(Hdr->ReadBuf) > 0) + { + bufremain = StrLength(Hdr->ReadBuf) - (Hdr->Pos - ChrPtr(Hdr->ReadBuf)); + + if (bytes < bufremain) + bufremain = bytes; + StrBufAppendBufPlain(Target, Hdr->Pos, bufremain, 0); + StrBufCutLeft(Hdr->ReadBuf, bufremain); + } if (bytes > bufremain) { -- 2.30.2