X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Ftcp_sockets.c;h=e45231f56a3dd21eba074192ca3facc0d4012ae8;hb=fb6f6fa4ec4e3277e30d84326d48e6850822d318;hp=c9d053f2f796b1ca4bf897e2e347675d506d0201;hpb=eae9f81553dc2753bb1101de8564bf72dcd5b243;p=citadel.git diff --git a/webcit/tcp_sockets.c b/webcit/tcp_sockets.c index c9d053f2f..e45231f56 100644 --- a/webcit/tcp_sockets.c +++ b/webcit/tcp_sockets.c @@ -1,19 +1,13 @@ /* - * Copyright (c) 1987-2011 by the citadel.org team + * Copyright (c) 1987-2012 by the citadel.org team * * This program is open source software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * + * it under the terms of the GNU General Public License, version 3. + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* @@ -21,11 +15,9 @@ #define SERV_TRACE 1 */ - #include "webcit.h" #include "webserver.h" -extern int DisableGzip; long MaxRead = -1; /* should we do READ scattered or all at once? */ /* @@ -173,6 +165,9 @@ int StrBuf_ServGetln(StrBuf *buf) const char *ErrStr = NULL; int rc; + if (!WCC->connected) + return -1; + FlushStrBuf(buf); rc = StrBufTCP_read_buffered_line_fast(buf, WCC->ReadBuf, @@ -448,7 +443,8 @@ int ClientGetLine(ParsedHttpHdrs *Hdr, StrBuf *Target) if (is_https) { int ntries = 0; - if (StrLength(Hdr->ReadBuf) > 0) { + if (StrLength(Hdr->ReadBuf) > 0) + { pchs = ChrPtr(Hdr->ReadBuf); pch = strchr(pchs, '\n'); if (pch != NULL) { @@ -471,6 +467,8 @@ int ClientGetLine(ParsedHttpHdrs *Hdr, StrBuf *Target) retval = client_read_sslbuffer(Hdr->ReadBuf, SLEEPING); pchs = ChrPtr(Hdr->ReadBuf); pch = strchr(pchs, '\n'); + if (pch == NULL) + retval = 0; } if (retval == 0) { sleeeeeeeeeep(1); @@ -909,10 +907,12 @@ SessionDestroyModule_TCPSOCKETS { FreeStrBuf(&sess->CLineBuf); FreeStrBuf(&sess->ReadBuf); + sess->connected = 0; sess->ReadPos = NULL; FreeStrBuf(&sess->MigrateReadLineBuf); if (sess->serv_sock > 0) { syslog(LOG_DEBUG, "Closing socket %d", sess->serv_sock); close(sess->serv_sock); } + sess->serv_sock = -1; }