Ulrich Marx writes:
authorEric Andersen <andersen@codepoet.org>
Fri, 14 Nov 2003 03:00:04 +0000 (03:00 -0000)
committerEric Andersen <andersen@codepoet.org>
Fri, 14 Nov 2003 03:00:04 +0000 (03:00 -0000)
hello

i had some trouble with the filedescriptor in udhcp.
Two things happened on my device:
1.) broken or not connected cable (no dhcp-server)
2.) daemonizing (starting with option -b)

i got a filedescriptor fd=0 from function raw_socket,
after daemonizing (daemon call) the fd is closed.
Client can't recieve data's anymore.

i fixed this problem (like pidfile handling):

networking/udhcp/socket.c

index f12fa929099e759e78850901d8274adda9e8abcf..df00e69854cc6059576561f8cc74d069e37db7d3 100644 (file)
@@ -141,6 +141,8 @@ int raw_socket(int ifindex)
                DEBUG(LOG_ERR, "socket call failed: %m");
                return -1;
        }
+
+       while (fd >= 0 && fd < 3) fd = dup(fd); /* don't let daemon close fds on us */
        
        sock.sll_family = AF_PACKET;
        sock.sll_protocol = htons(ETH_P_IP);