From: Wilfried Goesgens Date: Fri, 22 Apr 2011 22:50:09 +0000 (+0000) Subject: * fix some rare oom situation. X-Git-Tag: v8.11~777 X-Git-Url: https://code.citadel.org/?p=citadel.git;a=commitdiff_plain;h=51e39bfff433edfeec0613a94feb17c950342e3c * fix some rare oom situation. --- 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) {