Socket.st
changeset 787 07e91b74589e
parent 781 4d61e7588ff3
child 789 3c8cac1a92f5
--- a/Socket.st	Wed Aug 04 16:10:14 1999 +0200
+++ b/Socket.st	Wed Aug 04 16:12:12 1999 +0200
@@ -2192,16 +2192,16 @@
      i.e. address must always be nil.
 
      The interpretation of portNrOrName depends on the domain:
-	inet domain uses (4byte) byteArray like internet numbers,
-	unix domain uses pathname strings,
-	others use whatever will come up in the future
+        inet domain uses (4byte) byteArray like internet numbers,
+        unix domain uses pathname strings,
+        others use whatever will come up in the future
 
      The reuse boolean argument controls if the SO_REUSEADDR socket option
      is to be set (to avoid the 'bind: address in use' error).
     "
 
     filePointer isNil ifTrue:[
-	^ self error:'not a valid socket'
+        ^ self errorNotOpen
     ].
 %{
 #ifndef NO_SOCKET
@@ -2210,16 +2210,16 @@
     int sock;
     union {
 # ifdef AF_INET
-	struct sockaddr_in in;
+        struct sockaddr_in in;
 # endif
 # ifdef AF_INET6
-	struct sockaddr_in6 in6;
+        struct sockaddr_in6 in6;
 # endif
 # ifdef AF_UNIX
-	struct sockaddr_un un;
+        struct sockaddr_un un;
 # endif
 # ifdef AF_APPLETALK
-	struct sockaddr_at at;
+        struct sockaddr_at at;
 # endif
     } sa;
     int sockaddr_size;
@@ -2228,8 +2228,8 @@
     int ok;
 
     if (!__isString(__INST(domain)) && !__isSymbol(__INST(domain))) {
-	DBGPRINTF(("SOCKET: invalid domain arg\n"));
-	RETURN (false);
+        DBGPRINTF(("SOCKET: invalid domain arg\n"));
+        RETURN (false);
     }
 
     ok = 0;
@@ -2237,141 +2237,141 @@
 
 # ifdef AF_INET
     if (myDomain == @symbol(inet)) {
-	/*
-	 * INET addresses - port must be a smallinteger or nil
-	 */
-	sa.in.sin_family = AF_INET;
-
-	if (portNrOrName == nil) {
-	    sa.in.sin_port = 0;
-	} else {
-	    if (! __isSmallInteger(portNrOrName)) {
-		DBGPRINTF(("SOCKET: invalid port arg\n"));
-		RETURN (false);
-	    }
-	    sa.in.sin_port = htons((u_short) _intVal(portNrOrName));
-	}
-
-	/*
-	 * INET addresses - addr must be nil, integer or byteArray
-	 */
-	if (address == nil) {
-	    sa.in.sin_addr.s_addr = htonl(INADDR_ANY);
-	} else {
-	    if (__isInteger(address)) {
-		sa.in.sin_addr.s_addr = htonl(__longIntVal(address));
-	    } else {
-		if (__isByteArray(address)) {
-		    unsigned char *cp;
-		    int n;
-
-		    cp = __ByteArrayInstPtr(address)->ba_element;
-		    n = __byteArraySize(address);
-		    if (n > 4) n = 4;
-		    bcopy(cp, &sa.in.sin_addr.s_addr, n);
-		} else {
-		    unsigned addr;
-		    struct hostent *hp ;
-
-		    if (! __isString(address)) {
-			DBGPRINTF(("SOCKET: invalid address arg in bind\n"));
-			RETURN (false);
-		    }
-
-		    if ((addr = inet_addr(__stringVal(address))) != -1) {
-			/* 
-			 * is Internet addr in octet notation 
-			 */
-			bcopy(&addr, (char *) &sa.in.sin_addr, sizeof(addr)) ; /* set address */
-		    } else {
-			/* 
-			 * do we know the host's address? 
-			 */
-			GETHOSTBYNAME(hp, __stringVal(address))
-			if (hp == NULL) {
-			    DBGPRINTF(("SOCKET: unknown host:%s\n", __stringVal(address)));
-			    RETURN (false);
-			}
-			bcopy(hp->h_addr, (char *) &sa.in.sin_addr, hp->h_length) ;
-			sa.in.sin_family = hp->h_addrtype;
-		    }
-		}
-	    }
-	}
-	DBGPRINTF(("SOCKET: bind addr: %x port: %x\n", sa.in.sin_addr.s_addr, sa.in.sin_port));
-	sockaddr_size = sizeof(struct sockaddr_in);
-	ok = 1;
+        /*
+         * INET addresses - port must be a smallinteger or nil
+         */
+        sa.in.sin_family = AF_INET;
+
+        if (portNrOrName == nil) {
+            sa.in.sin_port = 0;
+        } else {
+            if (! __isSmallInteger(portNrOrName)) {
+                DBGPRINTF(("SOCKET: invalid port arg\n"));
+                RETURN (false);
+            }
+            sa.in.sin_port = htons((u_short) _intVal(portNrOrName));
+        }
+
+        /*
+         * INET addresses - addr must be nil, integer or byteArray
+         */
+        if (address == nil) {
+            sa.in.sin_addr.s_addr = htonl(INADDR_ANY);
+        } else {
+            if (__isInteger(address)) {
+                sa.in.sin_addr.s_addr = htonl(__longIntVal(address));
+            } else {
+                if (__isByteArray(address)) {
+                    unsigned char *cp;
+                    int n;
+
+                    cp = __ByteArrayInstPtr(address)->ba_element;
+                    n = __byteArraySize(address);
+                    if (n > 4) n = 4;
+                    bcopy(cp, &sa.in.sin_addr.s_addr, n);
+                } else {
+                    unsigned addr;
+                    struct hostent *hp ;
+
+                    if (! __isString(address)) {
+                        DBGPRINTF(("SOCKET: invalid address arg in bind\n"));
+                        RETURN (false);
+                    }
+
+                    if ((addr = inet_addr(__stringVal(address))) != -1) {
+                        /* 
+                         * is Internet addr in octet notation 
+                         */
+                        bcopy(&addr, (char *) &sa.in.sin_addr, sizeof(addr)) ; /* set address */
+                    } else {
+                        /* 
+                         * do we know the host's address? 
+                         */
+                        GETHOSTBYNAME(hp, __stringVal(address))
+                        if (hp == NULL) {
+                            DBGPRINTF(("SOCKET: unknown host:%s\n", __stringVal(address)));
+                            RETURN (false);
+                        }
+                        bcopy(hp->h_addr, (char *) &sa.in.sin_addr, hp->h_length) ;
+                        sa.in.sin_family = hp->h_addrtype;
+                    }
+                }
+            }
+        }
+        DBGPRINTF(("SOCKET: bind addr: %x port: %x\n", sa.in.sin_addr.s_addr, sa.in.sin_port));
+        sockaddr_size = sizeof(struct sockaddr_in);
+        ok = 1;
     }
 # endif /* AF_INET */
 
 # ifdef AF_INET6
     if (myDomain == @symbol(inet6)) {
-	/*
-	 * INET6 addresses - port must be a smallinteger or nil
-	 */
-	sa.in6.sin6_family = AF_INET6;
-
-	if (portNrOrName == nil) {
-	    sa.in6.sin6_port = 0;
-	} else {
-	    if (! __isSmallInteger(portNrOrName)) {
-		DBGPRINTF(("SOCKET: invalid port arg\n"));
-		RETURN (false);
-	    }
-	    sa.in6.sin6_port = htons((u_short) _intVal(portNrOrName));
-	}
-
-	/*
-	 * INET6 addresses - addr must be nil or byteArray or string
-	 */
-	if (address == nil) {
-	    sa.in6.sin6_addr.s6_addr[0] = 0;
-	    sa.in6.sin6_addr.s6_addr[1] = 0;
-	    sa.in6.sin6_addr.s6_addr[2] = 0;
-	    sa.in6.sin6_addr.s6_addr[3] = 0;
-	    sa.in6.sin6_addr.s6_addr[4] = 0;
-	    sa.in6.sin6_addr.s6_addr[5] = 0;
-	} else {
-	    if (__isByteArray(address)) {
-		unsigned char *cp;
-		int n;
-
-		cp = __ByteArrayInstPtr(address)->ba_element;
-		n = __byteArraySize(address);
-		if (n > 6) n = 6;
-		bcopy(cp, &sa.in6.sin6_addr.s6_addr, n);
-	    } else {
-		unsigned addr;
-		struct hostent *hp ;
-
-		if (! __isString(address)) {
-		    DBGPRINTF(("SOCKET: invalid address arg in bind\n"));
-		    RETURN (false);
-		}
-
-		/* 
-		 * do we know the host's address? 
-		 */
-		GETHOSTBYNAME(hp, __stringVal(address))
-		if (hp == NULL) {
-		    DBGPRINTF(("SOCKET: unknown host:%s\n", __stringVal(address)));
-		    RETURN (false);
-		}
-		bcopy(hp->h_addr, (char *) &sa.in6.sin6_addr, hp->h_length) ;
-		sa.in.sin_family = hp->h_addrtype;
-	    }
-	}
-
-	DBGPRINTF(("SOCKET: bind addr: %x.%x.%x.%x.%x.%x port: %x\n", 
-			sa.in6.sin6_addr.s6_addr[0], 
-			sa.in6.sin6_addr.s6_addr[1], 
-			sa.in6.sin6_addr.s6_addr[2], 
-			sa.in6.sin6_addr.s6_addr[3], 
-			sa.in6.sin6_addr.s6_addr[4], 
-			sa.in6.sin6_addr.s6_addr[5], 
-			sa.in6.sin6_port));
-	sockaddr_size = sizeof(struct sockaddr_in6);
-	ok = 1;
+        /*
+         * INET6 addresses - port must be a smallinteger or nil
+         */
+        sa.in6.sin6_family = AF_INET6;
+
+        if (portNrOrName == nil) {
+            sa.in6.sin6_port = 0;
+        } else {
+            if (! __isSmallInteger(portNrOrName)) {
+                DBGPRINTF(("SOCKET: invalid port arg\n"));
+                RETURN (false);
+            }
+            sa.in6.sin6_port = htons((u_short) _intVal(portNrOrName));
+        }
+
+        /*
+         * INET6 addresses - addr must be nil or byteArray or string
+         */
+        if (address == nil) {
+            sa.in6.sin6_addr.s6_addr[0] = 0;
+            sa.in6.sin6_addr.s6_addr[1] = 0;
+            sa.in6.sin6_addr.s6_addr[2] = 0;
+            sa.in6.sin6_addr.s6_addr[3] = 0;
+            sa.in6.sin6_addr.s6_addr[4] = 0;
+            sa.in6.sin6_addr.s6_addr[5] = 0;
+        } else {
+            if (__isByteArray(address)) {
+                unsigned char *cp;
+                int n;
+
+                cp = __ByteArrayInstPtr(address)->ba_element;
+                n = __byteArraySize(address);
+                if (n > 6) n = 6;
+                bcopy(cp, &sa.in6.sin6_addr.s6_addr, n);
+            } else {
+                unsigned addr;
+                struct hostent *hp ;
+
+                if (! __isString(address)) {
+                    DBGPRINTF(("SOCKET: invalid address arg in bind\n"));
+                    RETURN (false);
+                }
+
+                /* 
+                 * do we know the host's address? 
+                 */
+                GETHOSTBYNAME(hp, __stringVal(address))
+                if (hp == NULL) {
+                    DBGPRINTF(("SOCKET: unknown host:%s\n", __stringVal(address)));
+                    RETURN (false);
+                }
+                bcopy(hp->h_addr, (char *) &sa.in6.sin6_addr, hp->h_length) ;
+                sa.in.sin_family = hp->h_addrtype;
+            }
+        }
+
+        DBGPRINTF(("SOCKET: bind addr: %x.%x.%x.%x.%x.%x port: %x\n", 
+                        sa.in6.sin6_addr.s6_addr[0], 
+                        sa.in6.sin6_addr.s6_addr[1], 
+                        sa.in6.sin6_addr.s6_addr[2], 
+                        sa.in6.sin6_addr.s6_addr[3], 
+                        sa.in6.sin6_addr.s6_addr[4], 
+                        sa.in6.sin6_addr.s6_addr[5], 
+                        sa.in6.sin6_port));
+        sockaddr_size = sizeof(struct sockaddr_in6);
+        ok = 1;
     }
 # endif /* AF_INET6 */
 
@@ -2380,24 +2380,24 @@
      * UNIX domain - port is ignored; address must be a string (path)
      */
     if (myDomain == @symbol(unix)) {
-	char *pathName;
-	int l;
-
-	if (! __isString(portNrOrName)) {
-	    DBGPRINTF(("SOCKET: invalid port (pathname) arg\n"));
-	    RETURN (false);
-	}
-	pathName = (char *)__stringVal(portNrOrName);
-	l = strlen(pathName);
-	if ((l + sizeof ( sa.un.sun_family )) > sizeof(struct sockaddr_un)) {
-	    DBGPRINTF(("SOCKET: pathname too long\n"));
-	    RETURN (false);
-	}
-
-	strcpy(sa.un.sun_path, pathName);
-	sa.un.sun_family = AF_UNIX;
-	sockaddr_size = l + sizeof ( sa.un.sun_family );
-	ok = 1;
+        char *pathName;
+        int l;
+
+        if (! __isString(portNrOrName)) {
+            DBGPRINTF(("SOCKET: invalid port (pathname) arg\n"));
+            RETURN (false);
+        }
+        pathName = (char *)__stringVal(portNrOrName);
+        l = strlen(pathName);
+        if ((l + sizeof ( sa.un.sun_family )) > sizeof(struct sockaddr_un)) {
+            DBGPRINTF(("SOCKET: pathname too long\n"));
+            RETURN (false);
+        }
+
+        strcpy(sa.un.sun_path, pathName);
+        sa.un.sun_family = AF_UNIX;
+        sockaddr_size = l + sizeof ( sa.un.sun_family );
+        ok = 1;
     }
 # endif /* AF_UNIX */
 
@@ -2406,72 +2406,72 @@
      * this has never been tested ....
      */
     if (myDomain == @symbol(appletalk)) {
-	/*
-	 * APPLETALK addresses - port must be a smallinteger or nil
-	 */
-	sa.at.sat_family = AF_APPLETALK;
-
-	if (portNrOrName == nil) {
-	    sa.at.sat_port = 0;
-	} else {
-	    if (! __isSmallInteger(portNrOrName)) {
-		DBGPRINTF(("SOCKET: invalid port arg\n"));
-		RETURN (false);
-	    }
-	    sa.at.sat_port = __intVal(portNrOrName);
-	}
-
-	/*
-	 * APPLETALK addresses - addr must be nil, integer or byteArray
-	 * if integer, the low 8 bits are the node, the next higher 16
-	 * bit are the net.
-	 */
-	if (address == nil) {
-	    sa.at.sat_addr.s_net = ATADDR_ANYNET;
-	    sa.at.sat_addr.s_node = ATADDR_ANYNODE;
-	} else {
-	    if (__isInteger(address)) {
-		unsigned a = __longIntVal(address);
-		sa.at.sat_addr.s_net = htons((a >> 8) & 0xFFFF);
-		sa.at.sat_addr.s_node = htons(a & 0xFF);
-	    } else {
-		if (__isByteArray(address)) {
-		    unsigned char *cp;
-		    int n;
-
-		    cp = __ByteArrayInstPtr(address)->ba_element;
-		    n = __byteArraySize(address);
-		    if (n > 3) n = 3;
-		    bcopy(cp, &sa.at.sat_addr, n);
-		} else {
-		    unsigned addr;
-		    struct hostent *hp ;
-
-		    if (! __isString(address)) {
-			DBGPRINTF(("SOCKET: invalid address arg in bind\n"));
-			RETURN (false);
-		    }
-
-		    /* 
-		     * do we know the host's address? 
-		     */
-		    GETHOSTBYNAME(hp, __stringVal(address))
-		    if (hp == NULL) {
-			DBGPRINTF(("SOCKET: unknown host: %s\n", __stringVal(address)));
-			RETURN (false);
-		    }
-		    if (hp->h_addrtype != AF_APPLETALK) {
-			DBGPRINTF(("SOCKET: host:%s is not an appletalk host\n", __stringVal(address)));
-			RETURN (false);
-		    }
-		    bcopy(hp->h_addr, (char *) &sa.at.sat_addr, hp->h_length) ;
-		    sa.at.sat_family = hp->h_addrtype;
-		}
-	    }
-	}
-	DBGPRINTF(("SOCKET: bind addr: %x port: %x\n", sa.in.sin_addr.s_addr, sa.in.sin_port));
-	sockaddr_size = sizeof(struct sockaddr_at);
-	ok = 1;
+        /*
+         * APPLETALK addresses - port must be a smallinteger or nil
+         */
+        sa.at.sat_family = AF_APPLETALK;
+
+        if (portNrOrName == nil) {
+            sa.at.sat_port = 0;
+        } else {
+            if (! __isSmallInteger(portNrOrName)) {
+                DBGPRINTF(("SOCKET: invalid port arg\n"));
+                RETURN (false);
+            }
+            sa.at.sat_port = __intVal(portNrOrName);
+        }
+
+        /*
+         * APPLETALK addresses - addr must be nil, integer or byteArray
+         * if integer, the low 8 bits are the node, the next higher 16
+         * bit are the net.
+         */
+        if (address == nil) {
+            sa.at.sat_addr.s_net = ATADDR_ANYNET;
+            sa.at.sat_addr.s_node = ATADDR_ANYNODE;
+        } else {
+            if (__isInteger(address)) {
+                unsigned a = __longIntVal(address);
+                sa.at.sat_addr.s_net = htons((a >> 8) & 0xFFFF);
+                sa.at.sat_addr.s_node = htons(a & 0xFF);
+            } else {
+                if (__isByteArray(address)) {
+                    unsigned char *cp;
+                    int n;
+
+                    cp = __ByteArrayInstPtr(address)->ba_element;
+                    n = __byteArraySize(address);
+                    if (n > 3) n = 3;
+                    bcopy(cp, &sa.at.sat_addr, n);
+                } else {
+                    unsigned addr;
+                    struct hostent *hp ;
+
+                    if (! __isString(address)) {
+                        DBGPRINTF(("SOCKET: invalid address arg in bind\n"));
+                        RETURN (false);
+                    }
+
+                    /* 
+                     * do we know the host's address? 
+                     */
+                    GETHOSTBYNAME(hp, __stringVal(address))
+                    if (hp == NULL) {
+                        DBGPRINTF(("SOCKET: unknown host: %s\n", __stringVal(address)));
+                        RETURN (false);
+                    }
+                    if (hp->h_addrtype != AF_APPLETALK) {
+                        DBGPRINTF(("SOCKET: host:%s is not an appletalk host\n", __stringVal(address)));
+                        RETURN (false);
+                    }
+                    bcopy(hp->h_addr, (char *) &sa.at.sat_addr, hp->h_length) ;
+                    sa.at.sat_family = hp->h_addrtype;
+                }
+            }
+        }
+        DBGPRINTF(("SOCKET: bind addr: %x port: %x\n", sa.in.sin_addr.s_addr, sa.in.sin_port));
+        sockaddr_size = sizeof(struct sockaddr_at);
+        ok = 1;
     }
 # endif /* AF_APPLETALK */
 
@@ -2528,89 +2528,89 @@
 # endif
 
     if (! ok) {
-	DBGPRINTF(("SOCKET: unsupported domain\n"));
-	RETURN (false);
+        DBGPRINTF(("SOCKET: unsupported domain\n"));
+        RETURN (false);
     }
 
     sock = fileno(__FILEVal(t));
 
 # ifdef SO_REUSEADDR
     if (reuse == true) {
-	if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char *) &on, sizeof (on)) < 0) {
-	    DBGPRINTF(("SOCKET: setsockopt - SO_REUSEADDR failed\n"));
-	}
+        if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char *) &on, sizeof (on)) < 0) {
+            DBGPRINTF(("SOCKET: setsockopt - SO_REUSEADDR failed\n"));
+        }
     }
 # endif /* SO_REUSEADDR */
 
     __BEGIN_INTERRUPTABLE__
     do {
-	ret = bind(sock, (struct sockaddr *)&sa, sockaddr_size);
+        ret = bind(sock, (struct sockaddr *)&sa, sockaddr_size);
     } while ((ret < 0) && (errno == EINTR));
     __END_INTERRUPTABLE__
 
     if (ret < 0) {
-	DBGPRINTF(("SOCKET: bind failed errno=%d\n", errno));
-	__INST(lastErrorNumber) = __MKSMALLINT(errno);
-	RETURN (false);
+        DBGPRINTF(("SOCKET: bind failed errno=%d\n", errno));
+        __INST(lastErrorNumber) = __MKSMALLINT(errno);
+        RETURN (false);
     }
 
     __INST(port) = portNrOrName; __STORE(self, portNrOrName);
 
 # ifdef AF_INET
     if (myDomain == @symbol(inet)) {
-	if (! __isSmallInteger(portNrOrName)
-	 || (portNrOrName == __MKSMALLINT(0))) {
-	    int p;
-
-	    /*
-	     * INET anonymous port - get the actual portNr
-	     */
-	    if (getsockname(sock, (struct sockaddr *)&sa, &sockaddr_size) < 0) {
-		DBGPRINTF(("SOCKET: cannot get peername\n"));
-	    } else {
-		DBGPRINTF(("SOCKET: anon port=%x\n", sa.in.sin_port));
-		p = ntohs(sa.in.sin_port);
-		__INST(port) = __MKSMALLINT(p);
-	    }
-	}
+        if (! __isSmallInteger(portNrOrName)
+         || (portNrOrName == __MKSMALLINT(0))) {
+            int p;
+
+            /*
+             * INET anonymous port - get the actual portNr
+             */
+            if (getsockname(sock, (struct sockaddr *)&sa, &sockaddr_size) < 0) {
+                DBGPRINTF(("SOCKET: cannot get peername\n"));
+            } else {
+                DBGPRINTF(("SOCKET: anon port=%x\n", sa.in.sin_port));
+                p = ntohs(sa.in.sin_port);
+                __INST(port) = __MKSMALLINT(p);
+            }
+        }
     }
 # endif
 # ifdef AF_INET6
     if (myDomain == @symbol(inet6)) {
-	if (! __isSmallInteger(portNrOrName)
-	 || (portNrOrName == __MKSMALLINT(0))) {
-	    int p;
-
-	    /*
-	     * INET6 anonymous port - get the actual portNr
-	     */
-	    if (getsockname(sock, (struct sockaddr *)&sa, &sockaddr_size) < 0) {
-		DBGPRINTF(("SOCKET: cannot get peername\n"));
-	    } else {
-		DBGPRINTF(("SOCKET: anon port=%x\n", sa.in.sin_port));
-		p = ntohs(sa.in6.sin6_port);
-		__INST(port) = __MKSMALLINT(p);
-	    }
-	}
+        if (! __isSmallInteger(portNrOrName)
+         || (portNrOrName == __MKSMALLINT(0))) {
+            int p;
+
+            /*
+             * INET6 anonymous port - get the actual portNr
+             */
+            if (getsockname(sock, (struct sockaddr *)&sa, &sockaddr_size) < 0) {
+                DBGPRINTF(("SOCKET: cannot get peername\n"));
+            } else {
+                DBGPRINTF(("SOCKET: anon port=%x\n", sa.in.sin_port));
+                p = ntohs(sa.in6.sin6_port);
+                __INST(port) = __MKSMALLINT(p);
+            }
+        }
     }
 # endif
 # ifdef AF_APPLETALK
     if (myDomain == @symbol(appletalk)) {
-	if (! __isSmallInteger(portNrOrName)
-	 || (portNrOrName == __MKSMALLINT(0))) {
-	    int p;
-
-	    /*
-	     * APPLETALK anonymous port - get the actual portNr
-	     */
-	    if (getsockname(sock, (struct sockaddr *)&sa, &sockaddr_size) < 0) {
-		DBGPRINTF(("SOCKET: cannot get peername\n"));
-	    } else {
-		DBGPRINTF(("SOCKET: anon port=%x\n", sa.in.sin_port));
-		p = sa.at.sat_port;
-		__INST(port) = __MKSMALLINT(p);
-	    }
-	}
+        if (! __isSmallInteger(portNrOrName)
+         || (portNrOrName == __MKSMALLINT(0))) {
+            int p;
+
+            /*
+             * APPLETALK anonymous port - get the actual portNr
+             */
+            if (getsockname(sock, (struct sockaddr *)&sa, &sockaddr_size) < 0) {
+                DBGPRINTF(("SOCKET: cannot get peername\n"));
+            } else {
+                DBGPRINTF(("SOCKET: anon port=%x\n", sa.in.sin_port));
+                p = sa.at.sat_port;
+                __INST(port) = __MKSMALLINT(p);
+            }
+        }
     }
 # endif
 
@@ -2622,8 +2622,8 @@
 
     "
      (Socket domain:#inet type:#stream)
-	 bindTo:9999
-	 address:nil
+         bindTo:9999
+         address:nil
     "
 !
 
@@ -2659,7 +2659,7 @@
     "start listening; return true if ok, false on error"
 
     filePointer isNil ifTrue:[
-	^ self error:'not a valid socket'
+        ^ self errorNotOpen
     ].
 %{
 #ifndef NO_SOCKET
@@ -2668,22 +2668,22 @@
     int ret;
 
     if (! __isSmallInteger(aNumber)) {
-	DBGPRINTF(("SOCKET: invalid arg\n"));
-	RETURN (false);
+        DBGPRINTF(("SOCKET: invalid arg\n"));
+        RETURN (false);
     }
 
     sock = fileno(__FILEVal(fp));
 
     __BEGIN_INTERRUPTABLE__
     do {
-	ret = listen(sock, _intVal(aNumber));
+        ret = listen(sock, _intVal(aNumber));
     } while ((ret < 0) && (errno == EINTR));
     __END_INTERRUPTABLE__
 
     if (ret < 0) {
-	DBGPRINTF(("SOCKET: listen call failed errno=%d\n", errno));
-	__INST(lastErrorNumber) = __MKSMALLINT(errno);
-	RETURN (false);
+        DBGPRINTF(("SOCKET: listen call failed errno=%d\n", errno));
+        __INST(lastErrorNumber) = __MKSMALLINT(errno);
+        RETURN (false);
     }
 #else
     RETURN (false);
@@ -2761,22 +2761,22 @@
      Return the true if ok; false if not.
 
      NOTICE: this method will block, if no connection is already pending.
-	     use readWait or Socket>>accept."
+             use readWait or Socket>>accept."
 
     |serverSocketFd|
 
     filePointer notNil ifTrue:[
-	^ self error:'already connected'
+        ^ self errorAlreadyOpen
     ].
 
     domain := aSocket domain.
     socketType := aSocket type.
     serverSocketFd := aSocket fileDescriptor.
     serverSocketFd isNil ifTrue:[
-	^ self error:'invalid server socket'
+        ^ self error:'invalid server socket'
     ].
     (serverSocketFd isMemberOf:SmallInteger) ifFalse:[
-	^ self error:'invalid server socket'
+        ^ self error:'invalid server socket'
     ].
 %{
 #ifndef NO_SOCKET
@@ -2785,16 +2785,16 @@
     int sock, newSock;
     union {
 #ifdef AF_INET
-	struct sockaddr_in in;
+        struct sockaddr_in in;
 #endif
 # ifdef AF_INET6
-	struct sockaddr_in6 in6;
+        struct sockaddr_in6 in6;
 # endif
 # ifdef AF_UNIX
-	struct sockaddr_un un;
+        struct sockaddr_un un;
 # endif
 # ifdef AF_APPLETALK
-	struct sockaddr_at at;
+        struct sockaddr_at at;
 # endif
     } sa;
     int alen, alen0;
@@ -2810,22 +2810,22 @@
 
 #ifdef AF_INET
     if (__INST(domain) == @symbol(inet)) {
-	alen0 = sizeof(sa.in);
+        alen0 = sizeof(sa.in);
     }
 #endif
 #ifdef AF_INET6
     if (__INST(domain) == @symbol(inet6)) {
-	alen0 = sizeof(sa.in6);
+        alen0 = sizeof(sa.in6);
     }
 #endif
 #ifdef AF_UNIX
     if (__INST(domain) == @symbol(unix)) {
-	alen0 = sizeof(sa.un);
+        alen0 = sizeof(sa.un);
     }
 #endif
 # ifdef AF_APPLETALK
     if (__INST(domain) == @symbol(appletalk)) {
-	alen0 = sizeof(sa.at);
+        alen0 = sizeof(sa.at);
     }
 # endif
 
@@ -2883,8 +2883,8 @@
 
     __BEGIN_INTERRUPTABLE__
     do {
-	alen = alen0;
-	newSock = accept(sock, (struct sockaddr *) &sa, &alen);
+        alen = alen0;
+        newSock = accept(sock, (struct sockaddr *) &sa, &alen);
     } while ((newSock < 0) && (errno == EINTR));
     __END_INTERRUPTABLE__
 
@@ -2893,9 +2893,9 @@
 #endif
 
     if (newSock < 0) {
-	DBGPRINTF(("SOCKET: accept call failed errno=%d\n", errno));
-	__INST(lastErrorNumber) = __MKSMALLINT(errno);
-	RETURN (false);
+        DBGPRINTF(("SOCKET: accept call failed errno=%d\n", errno));
+        __INST(lastErrorNumber) = __MKSMALLINT(errno);
+        RETURN (false);
     }
 
     /*
@@ -2903,71 +2903,71 @@
      */
 #ifdef AF_INET
     if (__INST(domain) == @symbol(inet)) {
-	GETHOSTBYADDR(he, (char *) &sa.in.sin_addr.s_addr, alen, AF_INET);
-	if (! he) {
-	    unsigned long norder;
-
-	    norder = htonl(sa.in.sin_addr.s_addr) ;
-	    sprintf(dotted, "%d.%d.%d.%d",
-		    (norder >> 24) & 0xFF,
-		    (norder >> 16) & 0xFF,
-		    (norder >> 8) & 0xFF,
-		    norder & 0xFF);
-	}
-	DBGPRINTF(("SOCKET: accepted connection from host %s\n", (he ? he->h_name : dotted))) ;
-	__INST(peerName) = __MKSTRING((he ? he->h_name : dotted));
-	__STORESELF(peerName);
+        GETHOSTBYADDR(he, (char *) &sa.in.sin_addr.s_addr, alen, AF_INET);
+        if (! he) {
+            unsigned long norder;
+
+            norder = htonl(sa.in.sin_addr.s_addr) ;
+            sprintf(dotted, "%d.%d.%d.%d",
+                    (norder >> 24) & 0xFF,
+                    (norder >> 16) & 0xFF,
+                    (norder >> 8) & 0xFF,
+                    norder & 0xFF);
+        }
+        DBGPRINTF(("SOCKET: accepted connection from host %s\n", (he ? he->h_name : dotted))) ;
+        __INST(peerName) = __MKSTRING((he ? he->h_name : dotted));
+        __STORESELF(peerName);
     }
 #endif
 
 #ifdef AF_INET6
     if (__INST(domain) == @symbol(inet6)) {
-	GETHOSTBYADDR(he, (char *) &sa.in6.sin6_addr.s6_addr, alen, AF_INET6);
-	if (! he) {
-	    unsigned long norder;
-
-	    /*
-	     * XXX: what is inet6's naming convention ?
-	     */
-	    norder = htonl(sa.in.sin_addr.s_addr) ;
-	    sprintf(dotted, "%d.%d.%d.%d",
-		    sa.in6.sin6_addr.s6_addr[0],
-		    sa.in6.sin6_addr.s6_addr[1],
-		    sa.in6.sin6_addr.s6_addr[2],
-		    sa.in6.sin6_addr.s6_addr[3],
-		    sa.in6.sin6_addr.s6_addr[4],
-		    sa.in6.sin6_addr.s6_addr[5]);
-	}
-	DBGPRINTF(("SOCKET: accepted connection from host %s\n", (he ? he->h_name : dotted))) ;
-	__INST(peerName) = __MKSTRING((he ? he->h_name : dotted));
-	__STORESELF(peerName);
+        GETHOSTBYADDR(he, (char *) &sa.in6.sin6_addr.s6_addr, alen, AF_INET6);
+        if (! he) {
+            unsigned long norder;
+
+            /*
+             * XXX: what is inet6's naming convention ?
+             */
+            norder = htonl(sa.in.sin_addr.s_addr) ;
+            sprintf(dotted, "%d.%d.%d.%d",
+                    sa.in6.sin6_addr.s6_addr[0],
+                    sa.in6.sin6_addr.s6_addr[1],
+                    sa.in6.sin6_addr.s6_addr[2],
+                    sa.in6.sin6_addr.s6_addr[3],
+                    sa.in6.sin6_addr.s6_addr[4],
+                    sa.in6.sin6_addr.s6_addr[5]);
+        }
+        DBGPRINTF(("SOCKET: accepted connection from host %s\n", (he ? he->h_name : dotted))) ;
+        __INST(peerName) = __MKSTRING((he ? he->h_name : dotted));
+        __STORESELF(peerName);
     }
 #endif
 
 #ifdef AF_UNIX
     if (__INST(domain) == @symbol(unix)) {
-	DBGPRINTF(("SOCKET: accepted connection on unix socket\n")) ;
-	/* nothing to be done here */
+        DBGPRINTF(("SOCKET: accepted connection on unix socket\n")) ;
+        /* nothing to be done here */
     }
 #endif
 
 #ifdef AF_APPLETALK
     if (__INST(domain) == @symbol(appletalk)) {
-	GETHOSTBYADDR(he, (char *) &sa.at.sat_addr, alen, AF_APPLETALK);
-	if (! he) {
-	    unsigned net;
-
-	    /*
-	     * XXX: what is apples naming convention ?
-	     */
-	    net = htons(sa.at.sat_addr.s_net) ;
-	    sprintf(dotted, "%d.%d",
-		    net,
-		    sa.at.sat_addr.s_node);
-	}
-	DBGPRINTF(("SOCKET: accepted connection from host %s\n", (he ? he->h_name : dotted))) ;
-	__INST(peerName) = __MKSTRING((he ? he->h_name : dotted));
-	__STORESELF(peerName);
+        GETHOSTBYADDR(he, (char *) &sa.at.sat_addr, alen, AF_APPLETALK);
+        if (! he) {
+            unsigned net;
+
+            /*
+             * XXX: what is apples naming convention ?
+             */
+            net = htons(sa.at.sat_addr.s_net) ;
+            sprintf(dotted, "%d.%d",
+                    net,
+                    sa.at.sat_addr.s_node);
+        }
+        DBGPRINTF(("SOCKET: accepted connection from host %s\n", (he ? he->h_name : dotted))) ;
+        __INST(peerName) = __MKSTRING((he ? he->h_name : dotted));
+        __STORESELF(peerName);
     }
 # endif
 
@@ -3028,17 +3028,17 @@
      */
     fp = fdopen(newSock, "r+");
     if (! fp) {
-	DBGPRINTF(("SOCKET: fdopen call failed\n"));
-	__INST(lastErrorNumber) = __MKSMALLINT(errno);
-	close(newSock);
-	RETURN (false);
+        DBGPRINTF(("SOCKET: fdopen call failed\n"));
+        __INST(lastErrorNumber) = __MKSMALLINT(errno);
+        close(newSock);
+        RETURN (false);
     } else {
 #ifdef BUGGY_STDIO_LIB
-	setbuf(fp, NULL);
-	__INST(buffered) = false;
+        setbuf(fp, NULL);
+        __INST(buffered) = false;
 #endif
-	__INST(filePointer) = __MKOBJ(fp);
-	__STORESELF(filePointer);
+        __INST(filePointer) = __MKOBJ(fp);
+        __STORESELF(filePointer);
     }
 #endif
 %}.
@@ -3151,7 +3151,7 @@
     |isAsync|
 
     filePointer isNil ifTrue:[
-        ^ self error:'not a valid socket'
+        ^ self errorNotOpen
     ].
 %{
 
@@ -3658,7 +3658,7 @@
     |errorNr|
 
     filePointer notNil ifTrue:[
-        ^ self error:'already created'
+        ^ self errorAlreadyOpen
     ].
 %{
 
@@ -3864,10 +3864,10 @@
     self obsoleteMethodWarning.
 
     filePointer notNil ifTrue:[
-	^ self error:'already created'
+        ^ self errorAlreadyOpen
     ].
     (portNr isMemberOf:SmallInteger) ifFalse:[
-	^ self error:'invalid portNr'
+        self error:'invalid portNr'
     ].
 %{
 #ifndef NO_SOCKET
@@ -3884,24 +3884,24 @@
     sa.sin_addr.s_addr = htonl(INADDR_ANY);
 
     if ((hostName != nil) && __isString(hostName)){
-	bzero(&sa, sizeof(sa)) ;
-	if ((addr = inet_addr((char *) __stringVal(hostName))) != -1) {
-	    /* 
-	     * is Internet addr in octet notation 
-	     */
-	    bcopy(&addr, (char *) &sa.sin_addr, sizeof(addr)) ; /* set address */
-	} else {
-	    /* 
-	     * do we know the host's address? 
-	     */
-	    GETHOSTBYNAME(hp, __stringVal(hostName))
-	    if (hp == NULL) {
-		DBGPRINTF(("SOCKET: unknown host: %s\n", __stringVal(hostName)));
-		RETURN ( nil );
-	    }
-	    bcopy(hp->h_addr, (char *) &sa.sin_addr, hp->h_length) ;
-	    sa.sin_family = hp->h_addrtype;
-	}
+        bzero(&sa, sizeof(sa)) ;
+        if ((addr = inet_addr((char *) __stringVal(hostName))) != -1) {
+            /* 
+             * is Internet addr in octet notation 
+             */
+            bcopy(&addr, (char *) &sa.sin_addr, sizeof(addr)) ; /* set address */
+        } else {
+            /* 
+             * do we know the host's address? 
+             */
+            GETHOSTBYNAME(hp, __stringVal(hostName))
+            if (hp == NULL) {
+                DBGPRINTF(("SOCKET: unknown host: %s\n", __stringVal(hostName)));
+                RETURN ( nil );
+            }
+            bcopy(hp->h_addr, (char *) &sa.sin_addr, hp->h_length) ;
+            sa.sin_family = hp->h_addrtype;
+        }
     }
 
     /*
@@ -3909,71 +3909,71 @@
      */
     __BEGIN_INTERRUPTABLE__
     do {
-	sock = socket(sa.sin_family, SOCK_STREAM, 0);
+        sock = socket(sa.sin_family, SOCK_STREAM, 0);
     } while ((sock < 0) && (errno == EINTR));
     __END_INTERRUPTABLE__
 
     if (sock < 0) {
-	DBGPRINTF(("SOCKET: socket(dom=%d typ=%d proto=0) call failed errno=%d\n", sa.sin_family, SOCK_STREAM, errno));
-	__INST(lastErrorNumber) = __MKSMALLINT(errno);
+        DBGPRINTF(("SOCKET: socket(dom=%d typ=%d proto=0) call failed errno=%d\n", sa.sin_family, SOCK_STREAM, errno));
+        __INST(lastErrorNumber) = __MKSMALLINT(errno);
     } else {
-	/* 
-	 * connect/bind 
-	 */
-	sa.sin_port = htons((u_short) _intVal(portNr)) ;
-
-	__BEGIN_INTERRUPTABLE__
-	if (hostName != nil) {
-	    do {
-		ret = connect(sock, (struct sockaddr *)&sa, sizeof(sa));
-	    } while ((ret < 0) && (errno == EINTR));
-	} else {
+        /* 
+         * connect/bind 
+         */
+        sa.sin_port = htons((u_short) _intVal(portNr)) ;
+
+        __BEGIN_INTERRUPTABLE__
+        if (hostName != nil) {
+            do {
+                ret = connect(sock, (struct sockaddr *)&sa, sizeof(sa));
+            } while ((ret < 0) && (errno == EINTR));
+        } else {
 #ifdef SO_REUSEADDR
-	    /*
-	     * should I also do this for DGRAM sockets ?
-	     */
-	    if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char *) &on, sizeof (on)) < 0) {
-		DBGPRINTF(("SOCKET: setsockopt - SO_REUSEADDR failed\n"));
-	    }
+            /*
+             * should I also do this for DGRAM sockets ?
+             */
+            if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char *) &on, sizeof (on)) < 0) {
+                DBGPRINTF(("SOCKET: setsockopt - SO_REUSEADDR failed\n"));
+            }
 #endif /* SO_REUSEADDR */
-	    sa.sin_addr.s_addr = htonl(INADDR_ANY);
-	    do {
-		ret = bind(sock, (struct sockaddr *)&sa, sizeof(sa));
-	    } while ((ret < 0) && (errno == EINTR));
-	}
-	__END_INTERRUPTABLE__
-
-	if (ret < 0) { 
-	    DBGPRINTF(("SOCKET: bind/connect call failed errno=%d\n", errno));
-	    __INST(lastErrorNumber) = __MKSMALLINT(errno);
-	    __BEGIN_INTERRUPTABLE__
-	    close(sock) ;
-	    __END_INTERRUPTABLE__
-	} else {
-	    /* 
-	     * make it a FILE * 
-	     */
-	    fp = fdopen(sock, "r+");
-	    if (! fp) {
-		DBGPRINTF(("SOCKET: fdopen failed\n"));
-		__INST(lastErrorNumber) = __MKSMALLINT(errno);
-		__BEGIN_INTERRUPTABLE__
-		close(sock);
-		__END_INTERRUPTABLE__
-	    } else {
+            sa.sin_addr.s_addr = htonl(INADDR_ANY);
+            do {
+                ret = bind(sock, (struct sockaddr *)&sa, sizeof(sa));
+            } while ((ret < 0) && (errno == EINTR));
+        }
+        __END_INTERRUPTABLE__
+
+        if (ret < 0) { 
+            DBGPRINTF(("SOCKET: bind/connect call failed errno=%d\n", errno));
+            __INST(lastErrorNumber) = __MKSMALLINT(errno);
+            __BEGIN_INTERRUPTABLE__
+            close(sock) ;
+            __END_INTERRUPTABLE__
+        } else {
+            /* 
+             * make it a FILE * 
+             */
+            fp = fdopen(sock, "r+");
+            if (! fp) {
+                DBGPRINTF(("SOCKET: fdopen failed\n"));
+                __INST(lastErrorNumber) = __MKSMALLINT(errno);
+                __BEGIN_INTERRUPTABLE__
+                close(sock);
+                __END_INTERRUPTABLE__
+            } else {
 #ifdef BUGGY_STDIO_LIB
-		setbuf(fp, NULL);
-		__INST(buffered) = false;
+                setbuf(fp, NULL);
+                __INST(buffered) = false;
 #endif
-		__INST(filePointer) = __MKOBJ(fp);
-		__STORESELF(filePointer);
-	    }
-	}
+                __INST(filePointer) = __MKOBJ(fp);
+                __STORESELF(filePointer);
+            }
+        }
     }
 #endif
 %}.
     filePointer isNil ifTrue:[
-	^ nil
+        ^ nil
     ].
     mode := #readwrite.
     Lobby register:self.
@@ -4004,10 +4004,10 @@
     self obsoleteMethodWarning.
 
     filePointer notNil ifTrue:[
-	^ self error:'already created'
+        ^ self errorAlreadyOpen
     ].
     (portNr isMemberOf:SmallInteger) ifFalse:[
-	^ self error:'invalid portNr'
+        self error:'invalid portNr'
     ].
 %{
 #ifndef NO_SOCKET
@@ -4019,28 +4019,28 @@
     int ret;
 
     if (hostName != nil) {
-	bzero(&sa, sizeof(sa)) ;
-	if ((addr = inet_addr((char *) __stringVal(hostName))) != -1) {
-	    /* 
-	     * is Internet addr in octet notation 
-	     */
-	    bcopy(&addr, (char *) &sa.sin_addr, sizeof(addr)) ; /* set address */
-	    sa.sin_family = AF_INET ;
-	} else {
-	    /* 
-	     * is hostname - 
-	     * do we know the host's address? 
-	     */
-	    GETHOSTBYNAME(hp, __stringVal(hostName))
-	    if (hp == NULL) {
-		DBGPRINTF(("SOCKET: unknown host: %s\n", __stringVal(hostName)));
-		RETURN ( nil );
-	    }
-	    bcopy(hp->h_addr, (char *) &sa.sin_addr, hp->h_length) ;
-	    sa.sin_family = hp->h_addrtype ;
-	}
+        bzero(&sa, sizeof(sa)) ;
+        if ((addr = inet_addr((char *) __stringVal(hostName))) != -1) {
+            /* 
+             * is Internet addr in octet notation 
+             */
+            bcopy(&addr, (char *) &sa.sin_addr, sizeof(addr)) ; /* set address */
+            sa.sin_family = AF_INET ;
+        } else {
+            /* 
+             * is hostname - 
+             * do we know the host's address? 
+             */
+            GETHOSTBYNAME(hp, __stringVal(hostName))
+            if (hp == NULL) {
+                DBGPRINTF(("SOCKET: unknown host: %s\n", __stringVal(hostName)));
+                RETURN ( nil );
+            }
+            bcopy(hp->h_addr, (char *) &sa.sin_addr, hp->h_length) ;
+            sa.sin_family = hp->h_addrtype ;
+        }
     } else {
-	sa.sin_family = AF_INET;
+        sa.sin_family = AF_INET;
     }
 
     /*
@@ -4048,63 +4048,63 @@
      */
     __BEGIN_INTERRUPTABLE__
     do {
-	sock = socket(sa.sin_family, SOCK_DGRAM, 0);
+        sock = socket(sa.sin_family, SOCK_DGRAM, 0);
     } while ((sock < 0) && (errno == EINTR));
     __END_INTERRUPTABLE__
 
     if (sock < 0) {
-	DBGPRINTF(("SOCKET: socket(dom=%d typ=%d proto=0) call failed errno=%d\n", sa.sin_family, SOCK_DGRAM, errno));
-	__INST(lastErrorNumber) = __MKSMALLINT(errno);
+        DBGPRINTF(("SOCKET: socket(dom=%d typ=%d proto=0) call failed errno=%d\n", sa.sin_family, SOCK_DGRAM, errno));
+        __INST(lastErrorNumber) = __MKSMALLINT(errno);
     } else {
-	/* 
-	 * ok,
-	 * connect/bind 
-	 */
-	__BEGIN_INTERRUPTABLE__
-	if (hostName == nil) {
-	    sa.sin_addr.s_addr = htonl(INADDR_ANY);
-	    do {
-		ret = bind(sock, (struct sockaddr *)&sa, sizeof(sa));
-	    } while ((ret < 0) && (errno == EINTR));
-	} else {
-	    sa.sin_port = htons((u_short) _intVal(portNr)) ;
-	    do {
-		ret = connect(sock, (struct sockaddr *)&sa, sizeof(sa));
-	    } while ((ret < 0) && (errno == EINTR));
-	}
-	__END_INTERRUPTABLE__
-
-	if (ret < 0) {
-	    DBGPRINTF(("SOCKET: bind/connect call failed\n"));
-	    __INST(lastErrorNumber) = __MKSMALLINT(errno);
-	    __BEGIN_INTERRUPTABLE__
-	    close(sock) ;
-	    __END_INTERRUPTABLE__
-	} else {
-	    /* 
-	     * make it a FILE * 
-	     */
-	    fp = fdopen(sock, "r+");
-	    if (! fp) {
-		DBGPRINTF(("SOCKET: fdopen call failed\n"));
-		__INST(lastErrorNumber) = __MKSMALLINT(errno);
-		__BEGIN_INTERRUPTABLE__
-		close(sock);
-		__END_INTERRUPTABLE__
-	    } else {
+        /* 
+         * ok,
+         * connect/bind 
+         */
+        __BEGIN_INTERRUPTABLE__
+        if (hostName == nil) {
+            sa.sin_addr.s_addr = htonl(INADDR_ANY);
+            do {
+                ret = bind(sock, (struct sockaddr *)&sa, sizeof(sa));
+            } while ((ret < 0) && (errno == EINTR));
+        } else {
+            sa.sin_port = htons((u_short) _intVal(portNr)) ;
+            do {
+                ret = connect(sock, (struct sockaddr *)&sa, sizeof(sa));
+            } while ((ret < 0) && (errno == EINTR));
+        }
+        __END_INTERRUPTABLE__
+
+        if (ret < 0) {
+            DBGPRINTF(("SOCKET: bind/connect call failed\n"));
+            __INST(lastErrorNumber) = __MKSMALLINT(errno);
+            __BEGIN_INTERRUPTABLE__
+            close(sock) ;
+            __END_INTERRUPTABLE__
+        } else {
+            /* 
+             * make it a FILE * 
+             */
+            fp = fdopen(sock, "r+");
+            if (! fp) {
+                DBGPRINTF(("SOCKET: fdopen call failed\n"));
+                __INST(lastErrorNumber) = __MKSMALLINT(errno);
+                __BEGIN_INTERRUPTABLE__
+                close(sock);
+                __END_INTERRUPTABLE__
+            } else {
 #ifdef BUGGY_STDIO_LIB
-		setbuf(fp, NULL);
-		__INST(buffered) = false;
+                setbuf(fp, NULL);
+                __INST(buffered) = false;
 #endif
-		__INST(filePointer) = __MKOBJ(fp);
-		__STORESELF(filePointer);
-	    }
-	}
+                __INST(filePointer) = __MKOBJ(fp);
+                __STORESELF(filePointer);
+            }
+        }
     }
 #endif
 %}.
     filePointer isNil ifTrue:[
-	^ nil
+        ^ nil
     ].
 
     mode := #readwrite.
@@ -4131,20 +4131,20 @@
     |millis|
 
     filePointer isNil ifTrue:[
-	^ self error:'not a valid socket'
+        ^ self errorNotOpen
     ].
     millis := (seconds * 1000) rounded.
 %{
 #if defined(SO_RCVTIMEO) && defined(SOL_SOCKET) && defined(HZ)
     if (__isSmallInteger(millis)) {
-	OBJ fp = __INST(filePointer);
-	int sock;
-	int opt;
-
-	sock = fileno(__FILEVal(fp));
-	opt = _intVal(millis) / (1000 / HZ);
-	setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, (char *)&opt, sizeof(int));
-	RETURN(true);
+        OBJ fp = __INST(filePointer);
+        int sock;
+        int opt;
+
+        sock = fileno(__FILEVal(fp));
+        opt = _intVal(millis) / (1000 / HZ);
+        setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, (char *)&opt, sizeof(int));
+        RETURN(true);
     }
 #endif
 %}.
@@ -4159,20 +4159,20 @@
     |millis|
 
     filePointer isNil ifTrue:[
-	^ self error:'not a valid socket'
+        ^ self errorNotOpen
     ].
     millis := (seconds * 1000) rounded.
 %{
 #if defined(SO_SNDTIMEO) && defined(SOL_SOCKET) && defined(HZ)
     if (__isSmallInteger(millis)) {
-	OBJ fp = __INST(filePointer);
-	int sock;
-	int opt;
-
-	sock = fileno(__FILEVal(fp));
-	opt = _intVal(millis) / (1000 / HZ);
-	setsockopt(sock, SOL_SOCKET, SO_SNDTIMEO, (char *)&opt, sizeof(int));
-	RETURN(true);
+        OBJ fp = __INST(filePointer);
+        int sock;
+        int opt;
+
+        sock = fileno(__FILEVal(fp));
+        opt = _intVal(millis) / (1000 / HZ);
+        setsockopt(sock, SOL_SOCKET, SO_SNDTIMEO, (char *)&opt, sizeof(int));
+        RETURN(true);
     }
 #endif
 %}.
@@ -4182,5 +4182,5 @@
 !Socket class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic2/Socket.st,v 1.121 1999-07-23 09:03:59 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic2/Socket.st,v 1.122 1999-08-04 14:12:12 cg Exp $'
 ! !