[Spread-users] how to check for available messages

Taj Khattra taj.khattra at pobox.com
Thu Mar 18 20:06:58 EST 2004

> like any other socket handle.  There's also the SP_poll() function, but it's
> not particularly good even for polling because it doesn't return an error
> code if the client has gotten disconnected (it returns 0 then, so a "polling
> loop" just using SP_poll() will never know it if the client gets
> disconnected).

i modified my local copy of SP_poll() to work around this:

instead of returning the #bytes available with ioctl(), it returns
true/false by using a non-blocking select().  if the client gets
disconnected, select() returns readable but the next send() or
recv() will return -1 w/EPIPE.

	FD_SET(mbox, &rset);
	tv.tv_sec = tv.tv_usec = 0;
	ret = select(mbox+1, &rset, 0, 0, &tv);
	if (ret < 0) return ILLEGAL_SESSION;
	else return ret;

haven't noticed any problems so far...

More information about the Spread-users mailing list