X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Fwebserver.c;h=5c328b189160b2e14f0af123df436b4094922557;hb=1df6c7f2c62b41b7e20d1f4791830f304c1be377;hp=d66a008db00068d1900402646a714a0e1fdfe78d;hpb=fda79135919f6add44a541635e590288fb952b73;p=citadel.git diff --git a/webcit/webserver.c b/webcit/webserver.c index d66a008db..5c328b189 100644 --- a/webcit/webserver.c +++ b/webcit/webserver.c @@ -433,6 +433,7 @@ int ClientGetLine(int *sock, StrBuf *Target, StrBuf *CLineBuf) int rlen, len, retval = 0; if (is_https) { + int ntries = 0; if (StrLength(CLineBuf) > 0) { pchs = ChrPtr(CLineBuf); pch = strchr(pchs, '\n'); @@ -447,11 +448,23 @@ int ClientGetLine(int *sock, StrBuf *Target, StrBuf *CLineBuf) } } - while ((retval >= 0) && - (pchs = ChrPtr(CLineBuf), - pch = strchr(pchs, '\n'), - pch == NULL)) - retval = client_read_sslbuffer(CLineBuf, SLEEPING); + while (retval == 0) { + pch = NULL; + pchs = ChrPtr(CLineBuf); + if (*pchs != '\0') + pch = strchr(pchs, '\n'); + if (pch == NULL) { + retval = client_read_sslbuffer(CLineBuf, SLEEPING); + pchs = ChrPtr(CLineBuf); + pch = strchr(pchs, '\n'); + } + if (retval == 0) { + sleeeeeeeeeep(1); + ntries ++; + } + if (ntries > 10) + return 0; + } if ((retval > 0) && (pch != NULL)) { rlen = 0; len = pch - pchs;