changeset 45:0aac2efec58e

Fixed a few bugs in ServerSocket.
author Atul Varma <varmaa@toolness.com>
date Wed, 24 Jun 2009 14:49:48 -0700
parents 1fd58132b533
children 48dfabed15be
files server_socket.cpp
diffstat 1 files changed, 10 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/server_socket.cpp	Wed Jun 24 14:22:42 2009 -0700
+++ b/server_socket.cpp	Wed Jun 24 14:49:48 2009 -0700
@@ -88,7 +88,7 @@
 JSBool listen(JSContext *cx, JSObject *obj, uintN argc,
               jsval *argv, jsval *rval)
 {
-  PRInt32 backlog;
+  PRInt32 backlog = 0;
 
   if (!JS_ConvertArguments(cx, argc, argv, "/i", &backlog))
     return JS_FALSE;
@@ -141,7 +141,16 @@
   if (!JS_ConvertArguments(cx, argc, argv, "sc", &addrStr, &port))
     return JS_FALSE;
 
+  PRFileDesc *fd;
+  if (!getSocket(cx, obj, &fd))
+    return JS_FALSE;
+
   PRNetAddr addr;
+  if (!PR_SetNetAddr(PR_IpAddrV4Mapped, PR_AF_INET, port, &addr)) {
+    JS_ReportError(cx, "Setting of net addr failed.");
+    return JS_FALSE;
+  }
+
   PRStatus result = PR_StringToNetAddr(addrStr, &addr);
 
   if (result != PR_SUCCESS) {
@@ -149,11 +158,6 @@
     return JS_FALSE;
   }
 
-  PRFileDesc *fd;
-  if (!getSocket(cx, obj, &fd))
-    return JS_FALSE;
-
-  addr.inet.port = port;
   result = PR_Bind(fd, &addr);
 
   if (result != PR_SUCCESS) {