Socket.st
changeset 5474 99d731df2a80
parent 5473 de911f462862
child 5476 7355a4b11cb6
--- a/Socket.st	Wed Apr 08 19:02:35 2020 +0200
+++ b/Socket.st	Tue Apr 14 11:36:26 2020 +0200
@@ -2619,17 +2619,17 @@
 
     domainClass := self class socketAddressClassForDomain:domain.
     domainClass isNil ifTrue:[
-	^ self error:'invalid (unsupported) domain'.
+        ^ self error:'invalid (unsupported) domain'.
     ].
     aSocketAddress isSocketAddress ifTrue:[
-	aSocketAddress class == domainClass ifFalse:[
-	    ^ self error:'addressBuffer class mismatch (domain)'.
-	].
-	addr := aSocketAddress.
+        aSocketAddress class == domainClass ifFalse:[
+            ^ self error:'addressBuffer class mismatch (domain)'.
+        ].
+        addr := aSocketAddress.
     ] ifFalse:[
-	aSocketAddress notNil ifTrue:[
-	    addr := domainClass new.
-	].
+        aSocketAddress notNil ifTrue:[
+            addr := domainClass new.
+        ].
     ].
 
 %{
@@ -2637,98 +2637,103 @@
     OBJ fp = __INST(handle);
 
     if (fp != nil) {
-	SOCKET sock;
-	size_t objSize;
-	union sockaddr_u sa;
-	socklen_t alen = 0;
-	INT n, offs;
-	int _flags = __longIntVal(flags);
-	char *extPtr;
-	unsigned char *allocatedBuffer = NULL, *buffer = NULL;
-
-	sock = SOCKET_FROM_FILE_OBJECT(fp);
-
-	if (! setupBufferParameters(aDataBuffer, startIndex, &extPtr, &offs, &objSize)) goto bad;
-	if (__isSmallInteger(nBytes)) {
-	    if (__intVal(nBytes) < objSize) {
-		objSize = __intVal(nBytes);
-	    }
-	}
+        SOCKET sock;
+        size_t objSize;
+        union sockaddr_u sa;
+        socklen_t alen = 0;
+        INT n, offs;
+        INT _flags = __unsignedLongIntVal(flags);
+        char *extPtr;
+        unsigned char *allocatedBuffer = NULL, *buffer = NULL;
+
+        sock = SOCKET_FROM_FILE_OBJECT(fp);
+
+        if (! setupBufferParameters(aDataBuffer, startIndex, &extPtr, &offs, &objSize)) goto bad;
+        if (__isSmallInteger(nBytes)) {
+            if (__intVal(nBytes) < objSize) {
+                objSize = __intVal(nBytes);
+            }
+        }
 # ifdef DO_WRAP_CALLS
-	if (extPtr) {
-	    buffer = extPtr + offs;
-	} else {
-	    allocatedBuffer = buffer = (unsigned char *)malloc(objSize);
-	}
-
-	do {
-	    __threadErrno = 0;
-	    alen = sizeof(sa);
-	    n = (INT)STX_WSA_NOINT_CALL6("recvfrom", recvfrom, sock, buffer, objSize, _flags, (struct sockaddr *)&sa, &alen);
-	} while ((n < 0) && (__threadErrno == EINTR));
-	if (n < 0) {
-	    errno = __threadErrno;
-	}
-
-	if (allocatedBuffer) {
-	    if (n > 0) {
-		memcpy((char *)__InstPtr(aDataBuffer) + offs, allocatedBuffer, n);
-	    }
-	    free(allocatedBuffer);
-	}
+        if (extPtr) {
+            buffer = extPtr + offs;
+        } else {
+            allocatedBuffer = buffer = (unsigned char *)malloc(objSize);
+        }
+
+        do {
+            __threadErrno = 0;
+            alen = sizeof(sa);
+            n = (INT)STX_WSA_NOINT_CALL6("recvfrom", recvfrom, sock, buffer, objSize, _flags, (struct sockaddr *)&sa, &alen);
+        } while ((n < 0) && (__threadErrno == EINTR));
+
+        if (n == -1) {
+            error = __INST(lastErrorNumber) = __MKSMALLINT(__threadErrno);
+        }
+
+        if (allocatedBuffer) {
+            if (n > 0) {
+                memcpy((char *)__InstPtr(aDataBuffer) + offs, allocatedBuffer, n);
+            }
+            free(allocatedBuffer);
+        }
+        if (n == -1) {
+            goto bad;
+        }
+
 # else
-	__BEGIN_INTERRUPTABLE__
-	do {
-	    alen = sizeof(sa);
-	    if (extPtr) {
-		n = recvfrom(sock, extPtr + offs, objSize, _flags, (struct sockaddr *) &sa, &alen);
-	    } else {
-		n = recvfrom(sock, (char *)__InstPtr(aDataBuffer) + offs, objSize, _flags, (struct sockaddr *) &sa, &alen);
-	    }
-	} while ((n < 0) && (errno == EINTR));
-	__END_INTERRUPTABLE__
+        __BEGIN_INTERRUPTABLE__
+        do {
+            alen = sizeof(sa);
+            if (extPtr) {
+                n = recvfrom(sock, extPtr + offs, objSize, _flags, (struct sockaddr *) &sa, &alen);
+            } else {
+                n = recvfrom(sock, (char *)__InstPtr(aDataBuffer) + offs, objSize, _flags, (struct sockaddr *) &sa, &alen);
+            }
+        } while ((n < 0) && (errno == EINTR));
+        __END_INTERRUPTABLE__
 # endif
 
-	if (n >= 0 && __isNonNilObject(addr)) {
-	    char *addrPtr;
-	    int nInstVars, nInstBytes, objSize;
-	    OBJ oClass = __qClass(addr);
-
-	    if (! __isBytes(addr))
-		goto bad;
-	    nInstVars = __intVal(__ClassInstPtr(oClass)->c_ninstvars);
-	    nInstBytes = OHDR_SIZE + (nInstVars * sizeof(OBJ));
-	    objSize = __qSize(addr) - nInstBytes;
-	    addrPtr = (char *)__InstPtr(addr) + nInstBytes;
-	    if (objSize < alen)
-		goto bad;
-
-	    /*
-	     * extract the datagrams address
-	     */
-	    memcpy(addrPtr, (char *)&sa, alen);
-	    addrLen = __MKSMALLINT(alen);
-	}
-	if (n < 0) {
-	    error = __INST(lastErrorNumber) = __MKSMALLINT(errno);
-	}
-	nReceived = __MKSMALLINT(n);
+        if (n >= 0 && __isNonNilObject(addr)) {
+            char *addrPtr;
+            int nInstVars, nInstBytes, objSize;
+            OBJ oClass = __qClass(addr);
+
+            if (! __isBytes(addr))
+                goto bad;
+            nInstVars = __intVal(__ClassInstPtr(oClass)->c_ninstvars);
+            nInstBytes = OHDR_SIZE + (nInstVars * sizeof(OBJ));
+            objSize = __qSize(addr) - nInstBytes;
+            addrPtr = (char *)__InstPtr(addr) + nInstBytes;
+            if (objSize < alen)
+                goto bad;
+
+            /*
+             * extract the datagrams address
+             */
+            memcpy(addrPtr, (char *)&sa, alen);
+            addrLen = __MKSMALLINT(alen);
+        }
+        if (n < 0) {
+            error = __INST(lastErrorNumber) = __MKSMALLINT(errno);
+        }
+        nReceived = __MKSMALLINT(n);
     }
 #endif
 bad: ;
 %}.
     error notNil ifTrue:[
-	^ self readError:error.
+        ^ self readError:error.
     ].
 
     nReceived notNil ifTrue:[
-	(addrLen notNil and:[addr ~~ aSocketAddress]) ifTrue:[
-	    self obsoleteFeatureWarning:'please use a socketAddress argument'.
-
-	    "can be a ByteArray for backward compatibility"
-	    aSocketAddress replaceFrom:1 to:addrLen with:(addr hostAddress).
-	].
-	^ nReceived
+        (addrLen notNil and:[addr ~~ aSocketAddress]) ifTrue:[
+            self obsoleteFeatureWarning:'please use a socketAddress argument'.
+
+            "can be a ByteArray for backward compatibility"
+            aSocketAddress replaceFrom:1 to:addrLen with:(addr hostAddress).
+        ].
+        ^ nReceived
     ].
     "
      arrive here if you try to receive into an invalid buffer
@@ -2738,7 +2743,7 @@
     "
     self primitiveFailed
 
-    "Modified: / 06-04-2020 / 22:33:10 / stefan"
+    "Modified: / 08-04-2020 / 20:50:46 / stefan"
 !
 
 sendBuffer:aDataBuffer start:startIndex for:nBytes flags:flags
@@ -4707,3 +4712,4 @@
 version_CVS
     ^ '$Header$'
 ! !
+