--- 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 $'
! !