diff --git a/src/sbbs3/js_socket.c b/src/sbbs3/js_socket.c index dd29b2880a3ce4bcd97bd9bb0ad6c9561c38bf98..0ad8af478d1db57e033cb2a6112366cfd489f077 100644 --- a/src/sbbs3/js_socket.c +++ b/src/sbbs3/js_socket.c @@ -272,7 +272,8 @@ js_recv(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) len = recv(p->sock,buf,len,0); if(len<0) { p->last_error=ERROR_VALUE; - len=0; + *rval = JSVAL_NULL; + return(JS_TRUE); } buf[len]=0; @@ -307,7 +308,8 @@ js_peek(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) len = recv(p->sock,buf,len,MSG_PEEK); if(len<0) { p->last_error=ERROR_VALUE; - len=0; + *rval = JSVAL_NULL; + return(JS_TRUE); } buf[len]=0; @@ -355,8 +357,11 @@ js_recvline(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) } if(!rd) { - if(time(NULL)-start>timeout) - break; /* time-out */ + if(time(NULL)-start>timeout) { + dbprintf(FALSE, p, "recvline timeout"); + *rval = JSVAL_NULL; + return(JS_TRUE); /* time-out */ + } mswait(1); continue; /* no data */ }