diff --git a/src/sbbs3/js_socket.c b/src/sbbs3/js_socket.c
index 0b6465b140e44b1c9ac8fb9a20fc9c6ce2e37ada..b5f694dca324f001f54cf72f6a424b70baeac87f 100644
--- a/src/sbbs3/js_socket.c
+++ b/src/sbbs3/js_socket.c
@@ -206,12 +206,21 @@ js_connect(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
 	addr.sin_family = AF_INET;
 	addr.sin_port   = htons(port);
 
+#if defined(__unix__)
+	alarm(10);	/* timeout */
+#endif
 	if(connect(p->sock, (struct sockaddr *)&addr, sizeof(addr))!=0) {
+#if defined(__unix__)
+		alarm(0);
+#endif
 		p->last_error=ERROR_VALUE;
 		dbprintf(TRUE, p, "connect failed with error %d",ERROR_VALUE);
 		*rval = BOOLEAN_TO_JSVAL(JS_FALSE);
 		return(JS_TRUE);
 	}
+#if defined(__unix__)
+	alarm(0);
+#endif
 
 	*rval = BOOLEAN_TO_JSVAL(JS_TRUE);
 	dbprintf(FALSE, p, "connected to port %u at %s", port, JS_GetStringBytes(str));