Skip to content
Snippets Groups Projects
Commit 0b6b3455 authored by rswindell's avatar rswindell
Browse files

Fixes for Deuce's last commit: initialize local and remote_addr in

js_CreateSocketObject() and don't care what p->is_connected is when p->external
is true.
parent 4ae677d8
Branches
Tags
No related merge requests found
......@@ -1114,8 +1114,6 @@ static JSBool js_socket_get(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
BOOL rd;
BOOL wr;
private_t* p;
socklen_t addr_len;
SOCKADDR_IN addr;
JSString* js_str;
if((p=(private_t*)JS_GetPrivate(cx,obj))==NULL) {
......@@ -1179,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) {
if(p->is_connected || p->external) {
if((js_str=JS_NewStringCopyZ(cx,inet_ntoa(p->remote_addr.sin_addr)))==NULL)
return(JS_FALSE);
*vp = STRING_TO_JSVAL(js_str);
......@@ -1188,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)
if(p->is_connected || p->external)
*vp = INT_TO_JSVAL(ntohs(p->remote_addr.sin_port));
else
*vp=JSVAL_VOID;
......@@ -1467,6 +1465,12 @@ JSObject* DLLCALL js_CreateSocketObject(JSContext* cx, JSObject* parent, char *n
p->external = TRUE;
p->network_byte_order = TRUE;
len=sizeof(p->local_addr);
getsockname(p->sock, (struct sockaddr *)&p->local_addr,&len);
len=sizeof(p->remote_addr);
getpeername(p->sock, (struct sockaddr *)&p->remote_addr,&len);
if(!JS_SetPrivate(cx, obj, p)) {
dbprintf(TRUE, p, "JS_SetPrivate failed");
return(NULL);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment