X-Git-Url: https://code.citadel.org/?p=citadel.git;a=blobdiff_plain;f=webcit%2Ftcp_sockets.c;h=89a30a38b390e6a059184ca23c60e445c1154fba;hp=f4bb02d580b752af6482c5c3028b022b0e472ed9;hb=c1bfa993f32198515f9994cde602f7bcd4da35d8;hpb=b5d7b525567b79868aa693c0be87f8b451438744 diff --git a/webcit/tcp_sockets.c b/webcit/tcp_sockets.c index f4bb02d58..89a30a38b 100644 --- a/webcit/tcp_sockets.c +++ b/webcit/tcp_sockets.c @@ -63,6 +63,7 @@ int uds_connectsock(char *sockpath) */ int tcp_connectsock(char *host, char *service) { + int fdflags; struct hostent *phe; struct servent *pse; struct protoent *ppe; @@ -110,31 +111,14 @@ int tcp_connectsock(char *host, char *service) alarm(0); signal(SIGALRM, SIG_IGN); + fdflags = fcntl(s, F_GETFL); + fdflags = fdflags | O_NONBLOCK; + fcntl(s, F_SETFD, fdflags); return (s); } -int StrBuf_ServGetln(StrBuf *buf) -{ - wcsession *WCC = WC; - const char *ErrStr; - int rc; - - WCC->ReadPos = NULL; - rc = StrBufTCP_read_line(buf, &WCC->serv_sock, 0, &ErrStr); - if (rc < 0) - { - lprintf(1, "Server connection broken: %s\n", - ErrStr); - wc_backtrace(); - WCC->serv_sock = (-1); - WCC->connected = 0; - WCC->logged_in = 0; - } - return rc; -} - /* * input string from pipe */ @@ -142,15 +126,15 @@ int serv_getln(char *strbuf, int bufsize) { wcsession *WCC = WC; int len; - - WCC->ReadPos = NULL; + *strbuf = '\0'; StrBuf_ServGetln(WCC->MigrateReadLineBuf); len = StrLength(WCC->MigrateReadLineBuf); if (len > bufsize) len = bufsize - 1; memcpy(strbuf, ChrPtr(WCC->MigrateReadLineBuf), len); - strbuf[len] = 0; + FlushStrBuf(WCC->MigrateReadLineBuf); + strbuf[len] = '\0'; #ifdef SERV_TRACE lprintf(9, "%3d>%s\n", WC->serv_sock, strbuf); #endif @@ -158,7 +142,7 @@ int serv_getln(char *strbuf, int bufsize) } -int StrBuf_ServGetlnBuffered(StrBuf *buf) +int StrBuf_ServGetln(StrBuf *buf) { wcsession *WCC = WC; const char *ErrStr;