diff --git a/src/sbbs3/js_socket.c b/src/sbbs3/js_socket.c index bdb1896e2a09d7181585b25cab24307725ba9bd3..75dbdf06820ae4e93c568fd5ccaef8a14866ba17 100644 --- a/src/sbbs3/js_socket.c +++ b/src/sbbs3/js_socket.c @@ -1713,6 +1713,7 @@ js_poll(JSContext *cx, uintN argc, jsval *arglist) /* Socket Object Properites */ enum { SOCK_PROP_LAST_ERROR + ,SOCK_PROP_ERROR_STR ,SOCK_PROP_IS_CONNECTED ,SOCK_PROP_IS_WRITEABLE ,SOCK_PROP_DATA_WAITING @@ -1738,6 +1739,7 @@ static char* socket_prop_desc[] = { "array of socket option names supported by the current platform" /* Regular properties */ ,"error status for the last socket operation that failed - <small>READ ONLY</small>" + ,"error description for the last socket operation that failed - <small>READ ONLY</small>" ,"<i>true</i> if socket is in a connected state - <small>READ ONLY</small>" ,"<i>true</i> if socket can accept written data - Setting to false will shutdown the write end of the socket." ,"alias for is_writeable" @@ -1929,6 +1931,11 @@ static JSBool js_socket_get(JSContext *cx, JSObject *obj, jsid id, jsval *vp) case SOCK_PROP_LAST_ERROR: *vp = INT_TO_JSVAL(p->last_error); break; + case SOCK_PROP_ERROR_STR: + if((js_str=JS_NewStringCopyZ(cx, socket_strerror(p->last_error, str, sizeof(str))))==NULL) + return JS_FALSE; + *vp = STRING_TO_JSVAL(js_str); + break; case SOCK_PROP_IS_CONNECTED: if(!p->is_connected) *vp = JSVAL_FALSE; @@ -2063,6 +2070,7 @@ static jsSyncPropertySpec js_socket_properties[] = { { "error" ,SOCK_PROP_LAST_ERROR ,SOCK_PROP_FLAGS, 311 }, { "last_error" ,SOCK_PROP_LAST_ERROR ,JSPROP_READONLY, 310 }, /* alias */ + { "error_str" ,SOCK_PROP_ERROR_STR ,SOCK_PROP_FLAGS, 318 }, { "is_connected" ,SOCK_PROP_IS_CONNECTED ,SOCK_PROP_FLAGS, 310 }, { "is_writeable" ,SOCK_PROP_IS_WRITEABLE ,JSPROP_ENUMERATE, 311 }, { "is_writable" ,SOCK_PROP_IS_WRITEABLE ,JSPROP_ENUMERATE, 312 }, /* alias */ @@ -2076,7 +2084,7 @@ static jsSyncPropertySpec js_socket_properties[] = { { "remote_ip_address" ,SOCK_PROP_REMOTE_IP ,SOCK_PROP_FLAGS, 310 }, { "remote_port" ,SOCK_PROP_REMOTE_PORT ,SOCK_PROP_FLAGS, 310 }, { "type" ,SOCK_PROP_TYPE ,SOCK_PROP_FLAGS, 310 }, - { "family" ,SOCK_PROP_FAMILY ,SOCK_PROP_FAMILY, 318 }, + { "family" ,SOCK_PROP_FAMILY ,SOCK_PROP_FAMILY, 318 }, { "network_byte_order",SOCK_PROP_NETWORK_ORDER,JSPROP_ENUMERATE, 311 }, { "ssl_session" ,SOCK_PROP_SSL_SESSION ,JSPROP_ENUMERATE, 316 }, { "ssl_server" ,SOCK_PROP_SSL_SERVER ,JSPROP_ENUMERATE, 316 },