diff --git a/src/sbbs3/js_socket.c b/src/sbbs3/js_socket.c
index aa657371f637d5ce37f3a70b57f5ebfc9f87ef2e..93e869e4c47d009025d3e584dd67ad7ce080755f 100644
--- a/src/sbbs3/js_socket.c
+++ b/src/sbbs3/js_socket.c
@@ -312,9 +312,9 @@ static ptrdiff_t js_socket_recv(JSContext *cx, js_socket_private_t *p, void *buf
 				return total;
 			return ret;
 		}
-		if ((!(flags & MSG_WAITALL)) || p->nonblocking)
-			return ret;
 		total += ret;
+		if ((!(flags & MSG_WAITALL)) || p->nonblocking)
+			return total;
 		if(total>=(ptrdiff_t)len)
 			return total;
 		len-=ret;