Skip to content
Snippets Groups Projects
Commit a47cfc01 authored by deuce's avatar deuce
Browse files

Add a timeout parameter to Socket.recv().

parent 6a2918c7
No related branches found
No related tags found
No related merge requests found
...@@ -950,6 +950,7 @@ js_recv(JSContext *cx, uintN argc, jsval *arglist) ...@@ -950,6 +950,7 @@ js_recv(JSContext *cx, uintN argc, jsval *arglist)
jsval *argv=JS_ARGV(cx, arglist); jsval *argv=JS_ARGV(cx, arglist);
char* buf; char* buf;
int32 len=512; int32 len=512;
int32 timeout=120;
JSString* str; JSString* str;
jsrefcount rc; jsrefcount rc;
js_socket_private_t* p; js_socket_private_t* p;
...@@ -961,16 +962,21 @@ js_recv(JSContext *cx, uintN argc, jsval *arglist) ...@@ -961,16 +962,21 @@ js_recv(JSContext *cx, uintN argc, jsval *arglist)
return(JS_FALSE); return(JS_FALSE);
} }
if(argc && argv[0]!=JSVAL_VOID) if(argc && argv[0]!=JSVAL_VOID) {
JS_ValueToInt32(cx,argv[0],&len); JS_ValueToInt32(cx,argv[0],&len);
if(argc > 1 && argv[1]!=JSVAL_VOID) {
JS_ValueToInt32(cx,argv[0],&timeout);
}
}
if((buf=(char*)malloc(len+1))==NULL) { if((buf=(char*)malloc(len+1))==NULL) {
JS_ReportError(cx,"Error allocating %u bytes",len+1); JS_ReportError(cx,"Error allocating %u bytes",len+1);
return(JS_FALSE); return(JS_FALSE);
} }
rc=JS_SUSPENDREQUEST(cx); rc=JS_SUSPENDREQUEST(cx);
len = js_socket_recv(p,buf,len,0,120); len = js_socket_recv(p,buf,len,0,timeout);
JS_RESUMEREQUEST(cx, rc); JS_RESUMEREQUEST(cx, rc);
if(len<0) { if(len<0) {
p->last_error=ERROR_VALUE; p->last_error=ERROR_VALUE;
...@@ -1921,7 +1927,7 @@ static jsSyncMethodSpec js_socket_functions[] = { ...@@ -1921,7 +1927,7 @@ static jsSyncMethodSpec js_socket_functions[] = {
,311 ,311
}, },
{"read", js_recv, 1, JSTYPE_ALIAS }, {"read", js_recv, 1, JSTYPE_ALIAS },
{"recv", js_recv, 1, JSTYPE_STRING, JSDOCSTR("[maxlen=<tt>512</tt>]") {"recv", js_recv, 1, JSTYPE_STRING, JSDOCSTR("[maxlen=<tt>512</tt>, [timeout_sec=<tt>120</tt>]]")
,JSDOCSTR("receive a string, default maxlen is 512 characters (AKA read)") ,JSDOCSTR("receive a string, default maxlen is 512 characters (AKA read)")
,310 ,310
}, },
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment