From 9eb82f40263a9d0ca336523a98eb1306db4d8771 Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Sat, 11 Oct 2003 03:20:49 +0000
Subject: [PATCH] server.client_add/update/remove() methods can now accept
 socket descriptor or socket object as first arg. Removed debug log output.

---
 src/sbbs3/services.c | 45 ++++++++++++++++++++++++--------------------
 1 file changed, 25 insertions(+), 20 deletions(-)

diff --git a/src/sbbs3/services.c b/src/sbbs3/services.c
index 783e8be929..0b798a488d 100644
--- a/src/sbbs3/services.c
+++ b/src/sbbs3/services.c
@@ -673,11 +673,11 @@ js_client_add(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval
 	client.user="<unknown>";
 	SAFECOPY(client.host,client.user);
 
-	if(!JSVAL_IS_OBJECT(argv[0])) /* no socket supplied? */
-		return(JS_TRUE);
-
-	if((vp=JS_GetPrivate(cx,JSVAL_TO_OBJECT(argv[0])))!=NULL)
-		sock=*(SOCKET*)vp;
+	if(JSVAL_IS_OBJECT(argv[0])) {
+		if((vp=JS_GetPrivate(cx,JSVAL_TO_OBJECT(argv[0])))!=NULL)
+			sock=*(SOCKET*)vp;
+	} else
+		JS_ValueToInt32(cx,argv[0],(int32*)&sock);
 
 	addr_len = sizeof(addr);
 	if(getpeername(sock, (struct sockaddr *)&addr, &addr_len)==0) {
@@ -692,8 +692,9 @@ js_client_add(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval
 		SAFECOPY(client.host,JS_GetStringBytes(JS_ValueToString(cx,argv[2])));
 
 	client_on(sock, &client, /* update? */ FALSE);
-
+#if 0
 	lprintf("client_add(%04u,%s,%s)",sock,client.user,client.host);
+#endif
 	return(JS_TRUE);
 }
 
@@ -716,11 +717,11 @@ js_client_update(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *r
 	client.user="<unknown>";
 	SAFECOPY(client.host,client.user);
 
-	if(!JSVAL_IS_OBJECT(argv[0])) /* no socket supplied? */
-		return(JS_TRUE);
-
-	if((vp=JS_GetPrivate(cx,JSVAL_TO_OBJECT(argv[0])))!=NULL)
-		sock=*(SOCKET*)vp;
+	if(JSVAL_IS_OBJECT(argv[0])) {
+		if((vp=JS_GetPrivate(cx,JSVAL_TO_OBJECT(argv[0])))!=NULL)
+			sock=*(SOCKET*)vp;
+	} else
+		JS_ValueToInt32(cx,argv[0],(int32*)&sock);
 
 	addr_len = sizeof(addr);
 	if(getpeername(sock, (struct sockaddr *)&addr, &addr_len)==0) {
@@ -735,8 +736,9 @@ js_client_update(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *r
 		SAFECOPY(client.host,JS_GetStringBytes(JS_ValueToString(cx,argv[2])));
 
 	client_on(sock, &client, /* update? */ TRUE);
-
+#if 0
 	lprintf("client_update(%04u,%s,%s)",sock,client.user,client.host);
+#endif
 	return(JS_TRUE);
 }
 
@@ -744,19 +746,22 @@ js_client_update(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *r
 static JSBool
 js_client_remove(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
 {
-	void* vp;
+	void*	vp;
+	SOCKET	sock=INVALID_SOCKET;
 
 	if(active_clients)
 		active_clients--, update_clients();
 
-	if(!JSVAL_IS_OBJECT(argv[0])) /* no socket supplied? */
-		return(JS_TRUE);
-
-	if((vp=JS_GetPrivate(cx,JSVAL_TO_OBJECT(argv[0])))!=NULL)
-		client_off(*(SOCKET*)vp);
-	
-	lprintf("client_remove(%04u)",*(SOCKET*)vp);
+	if(JSVAL_IS_OBJECT(argv[0])) {
+		if((vp=JS_GetPrivate(cx,JSVAL_TO_OBJECT(argv[0])))!=NULL)
+			sock=*(SOCKET*)vp;
+	} else
+		JS_ValueToInt32(cx,argv[0],(int32*)&sock);
 
+	client_off(sock);
+#if 0	
+	lprintf("client_remove(%04u)",sock);
+#endif
 	return(JS_TRUE);
 }
 
-- 
GitLab