I'm running scsh 0.5.2 on a Linux box -- Red Hat version 6.0.
I've written a little server that uses read-string/partial to get data from
clients. The server waits in select until data is available, then reads
from the sockets that select has indicated are readable.
Sometimes, the read system call on a client socket returns -1 with errno set
to ECONNRESET, since a client has closed its communications socket.
The code in generic-read-string!/partial does not catch this case, so my
server was dying. Is this a bug in read-string/partial?
I now wrap read-string/partial as follows, which has made the problem go
away:
(define (read-carefully port)
(with-errno-handler
((err data) ((errno/connreset) #f))
(read-string/partial 1024 port)))
Is this the right approach?
bob
|