Socket(2) problems (who has a fix ?)
Dan Lorenzini
dal at philabs.UUCP
Wed Aug 29 01:25:30 AEST 1984
We are Philips Research Laboratory of Brussels, we are not (yet) on Usenet
but we can thanks to the amiability of Dan Lorenzini of philabs post it to
the net.
Apparently, 4.2 hangs when:
- a socket(2) is select(2)ed for accept(2)
- another process does a connect(2)
- the server exits before accepting the connect request
Just run the following program:
#include <sys/types.h>
#include <sys/socket.h>
#define SOCKET "/tmp/sck"
struct sockaddr sa={AF_UNIX,SOCKET};
int s,m,d;
main() {
unlink(SOCKET);
if ((s = socket(AF_UNIX , SOCK_STREAM , 0)) < 0) perror("socket");
if (bind(s, &sa, 10) < 0) perror("bind");
if (listen(s, 1) < 0) perror("listen");
if (fork() == 0) {
d = socket(AF_UNIX , SOCK_STREAM , 0);
if (d < 0) perror("child socket");
if (connect(d, &sa, 10) < 0) perror("connect");
sleep(10);
}
m = 1 << s;
if (select(20, &m, 0, 0, 0) < 0) perror("select");
exit(0);
}
----------------------------------------------------------------------------
Please answer by mail. We can be reached by mail at the following addresses :
...!philabs!prlb2!heymans
...!decvax!cca!prlb2!heymans
Franz Heymans
More information about the Comp.unix.wizards
mailing list