Socket.st
changeset 1536 74e66a8c6dc2
parent 1535 f6aa0fc8c3cc
child 1537 8eeeb380aaf5
--- a/Socket.st	Thu Mar 10 15:00:50 2005 +0100
+++ b/Socket.st	Thu Mar 10 18:12:57 2005 +0100
@@ -2230,6 +2230,9 @@
 		 * anonymous port - get the actual portNr
 		 */
 		if (getsockname(sock, (struct sockaddr *)&sa, &alen) < 0) {
+# ifdef WIN32
+		    errno = WSAGetLastError();
+# endif
 		    fprintf(stderr, "SOCKET: cannot get socketname: %d\n", errno);
 		}
 		bcopy(&sa, (__byteArrayVal(addr) + sockAddrOffs), alen);
@@ -2494,6 +2497,9 @@
 	sock = SOCKET_FROM_FILE_OBJECT(fp);
 	sz = sizeof(err);
 	if (getsockopt(sock, SOL_SOCKET, SO_ERROR, &err, &sz) < 0) {
+# ifdef WIN32
+	    errno = WSAGetLastError();
+# endif
 	    err = errno;
 	}
     }
@@ -3242,7 +3248,7 @@
 	error = @symbol(badArgument);
 	goto err;
     }
-    alen0 = __intVal(addrLen);
+    alen = alen0 = __intVal(addrLen);
 
     if (!__isNonNilObject(addr) || !__isBytes(addr)) {
 	DBGPRINTF(("SOCKET: bad addr\n"));
@@ -3270,12 +3276,11 @@
 # endif
     ret = getsockname(sock, (struct sockaddr *)&sa, &alen);
     if (ret < 0) {
+# ifdef WIN32
+	errno = WSAGetLastError();
+# endif
 	DBGPRINTF(("SOCKET: getsocketname failed ret=%d errno=%d\n", ret, errno));
-# ifdef WIN32
-	error = __MKSMALLINT(__threadErrno);
-# else
 	error = __MKSMALLINT(errno);
-# endif
 	goto err;
     }
 
@@ -3330,6 +3335,9 @@
     sock = SOCKET_FROM_FILE_OBJECT(fp);
     ret = getsockname(sock, (struct sockaddr *)__byteArrayVal(socketAddress), &sockaddr_size);
     if (ret < 0) {
+# ifdef WIN32
+	errno = WSAGetLastError();
+# endif
 	DBGPRINTF(("SOCKET: getsocketname failed errno=%d\n", errno));
 	error = __MKSMALLINT(errno);
     }
@@ -3868,5 +3876,5 @@
 !Socket class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic2/Socket.st,v 1.211 2005-03-10 14:00:50 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic2/Socket.st,v 1.212 2005-03-10 17:12:57 cg Exp $'
 ! !