diff --git a/src/sbbs3/js_socket.c b/src/sbbs3/js_socket.c index bb107564e450dcdf4779a0ea7ba890590355feda..460fbb6d548e080d29f829bb4b9039896dbeeaa1 100644 --- a/src/sbbs3/js_socket.c +++ b/src/sbbs3/js_socket.c @@ -1132,7 +1132,7 @@ static JSBool js_socket_get(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp = INT_TO_JSVAL(p->last_error); break; case SOCK_PROP_IS_CONNECTED: - if(!p->is_connected && !p->external) + if(!p->is_connected) *vp = JSVAL_FALSE; else *vp = BOOLEAN_TO_JSVAL(socket_check(p->sock,NULL,NULL,0)); @@ -1177,7 +1177,7 @@ static JSBool js_socket_get(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp=JSVAL_VOID; break; case SOCK_PROP_REMOTE_IP: - if(p->is_connected || p->external) { + if(p->is_connected) { if((js_str=JS_NewStringCopyZ(cx,inet_ntoa(p->remote_addr.sin_addr)))==NULL) return(JS_FALSE); *vp = STRING_TO_JSVAL(js_str); @@ -1186,7 +1186,7 @@ static JSBool js_socket_get(JSContext *cx, JSObject *obj, jsval id, jsval *vp) *vp=JSVAL_VOID; break; case SOCK_PROP_REMOTE_PORT: - if(p->is_connected || p->external) + if(p->is_connected) *vp = INT_TO_JSVAL(ntohs(p->remote_addr.sin_port)); else *vp=JSVAL_VOID; @@ -1469,7 +1469,8 @@ JSObject* DLLCALL js_CreateSocketObject(JSContext* cx, JSObject* parent, char *n getsockname(p->sock, (struct sockaddr *)&p->local_addr,&len); len=sizeof(p->remote_addr); - getpeername(p->sock, (struct sockaddr *)&p->remote_addr,&len); + if(getpeername(p->sock, (struct sockaddr *)&p->remote_addr,&len)==0) + p->is_connected=TRUE; if(!JS_SetPrivate(cx, obj, p)) { dbprintf(TRUE, p, "JS_SetPrivate failed");