diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp index bf8d41c690ed11ecf3b9502fcd4307ec4c5a9139..fd2d6f5469381cdcedbeca373c9e97c516c0990b 100644 --- a/src/sbbs3/main.cpp +++ b/src/sbbs3/main.cpp @@ -994,6 +994,11 @@ static BYTE* telnet_interpret(sbbs_t* sbbs, BYTE* inbuf, int inlen, BYTE* first_cr=NULL; int i; + if(inlen<1) { + outlen=0; + return(inbuf); // no length? No interpretation + } + first_iac=(BYTE*)memchr(inbuf, TELNET_IAC, inlen); if(!(sbbs->telnet_mode&(TELNET_MODE_BIN_RX|TELNET_MODE_GATE)) @@ -1250,7 +1255,9 @@ void input_thread(void *arg) if(rd == SOCKET_ERROR) { +#ifdef __unix__ if(sock==sbbs->client_socket) { +#endif if(ERROR_VALUE == ENOTSOCK) lprintf(LOG_NOTICE,"Node %d socket closed by peer on receive", sbbs->cfg.node_num); else if(ERROR_VALUE==ECONNRESET) @@ -1263,9 +1270,8 @@ void input_thread(void *arg) lprintf(LOG_WARNING,"Node %d !ERROR %d receiving from socket %d" ,sbbs->cfg.node_num, ERROR_VALUE, sock); break; - } #ifdef __unix__ - else { + } else { if(ERROR_VALUE != EAGAIN) { lprintf(LOG_ERR,"Node %d !ERROR %d on local spy socket %d receive" , sbbs->cfg.node_num, errno, sock);