std.socket and std.socketstream

Steve Teale steve.teale at britseyeview.com
Tue Nov 16 10:37:46 PST 2010


Users who consider using these two modules in conjunction should beware of clashes.

I used std.socketstream in a micro-server context to read the individual lines of an http request.

After that I reverted to socket level to keep the connection open for some time so that the client could re-use it.

At that point, Socket.select() became completely broken, always returning immediately, regardless of the timeout argument. Creating the SocketStream within a block cured this to some extent, but then there appeared to be some persistence of the object after the closing brace of the block, possibly before the garbage collector killed it, and after an unknown timeout period, everything broke again.

I would therefore suggest that use of SocketStream be restricted to circumstances where the socket connection is local and reliable, and not intermingled with the direct use of Socket.select().

I can't be more specific at the moment, but even this little knowledge might save somebody a lot of wasted time.

Steve


More information about the Digitalmars-d mailing list