Closing a socket - Mac/2.1

Bob Arning arning at charm.net
Fri Jul 24 22:33:24 UTC 1998


On Fri, 24 Jul 1998 13:06:06 -0700 Maloney <johnm at wdi.disney.com> =
wrote:=3D20
>From your discription, it sounds as though the server that Squeak is
>talking to is not closing the connection properly. I don't know of any
>bug in the Mac socket implementation that would cause this to happen.
>(There was a recent bug related to socket closing in the Win32
>implementation, but it had different symptoms from those you describe.)

Part of what I am wondering about is the following code from =
sqMacNetwork.c:

void TCPSockCloseConnection(TCPSockPtr s) {
	/* Note: This operation uses a dedicated parameter block so that it
	   can be invoked even in the previous send is not yet complete.
	   It will eventually use a completion routine to delete the
	   socket automatically. For now, this is the client's responsibility.
	*/
	if ((s =3D3D=3D3D nil) || (s->tcpStream =3D3D=3D3D nil)) return;  /* =
socket destroyed */

	InitTCPCmd(TCPClose, s->tcpStream, &s->closePB);
//	s->closePB.ioCompletion =3D3D tcpCloseDoneProc;
	s->connectStatus =3D3D ThisEndClosed; // xxx remove when making this =
async
	s->lastError =3D3D PBControlSync((ParmBlkPtr) &s->closePB);
}

are those //'s some sort of comment? Does this accurately reflect the =
2.1 vm?

>
>What is the server? Is it implemented in Squeak?

Whatever my ISP uses as a POP server. This is what appears when I =
connect:
+OK QPOP (version 2.5) at fellspt.charm.net starting. =3D20

>
>It could be merely that you need a longer timeout in the call
>to waitForDisconnectionUntil:.
>

I just raised the timeout to 60 seconds and it took 60 seconds to close =
the connection (abort it actually).

Cheers,
Bob





More information about the Squeak-dev mailing list