diff options
author | Ondrej Zajicek <santiago@crfreenet.org> | 2009-06-26 13:33:41 +0200 |
---|---|---|
committer | Ondrej Zajicek <santiago@crfreenet.org> | 2009-06-26 13:33:41 +0200 |
commit | 2d785e8d6a646a878c970583aa54a15209fa0e6e (patch) | |
tree | e2ef9f0ba5ed45c8543ac09dda3e6cd0b6262b3f /sysdep/unix | |
parent | 5004d02cb9df1f3ee231632a8e89929f4eb4f088 (diff) | |
download | bird-2d785e8d6a646a878c970583aa54a15209fa0e6e.tar bird-2d785e8d6a646a878c970583aa54a15209fa0e6e.zip |
Fixes bug on TCP passive socket binding on BSD.
BGP on BSD was bound to random port. I am surprised that
nobody noticed it already.
Diffstat (limited to 'sysdep/unix')
-rw-r--r-- | sysdep/unix/io.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sysdep/unix/io.c b/sysdep/unix/io.c index c86c120..a5e0522 100644 --- a/sysdep/unix/io.c +++ b/sysdep/unix/io.c @@ -934,7 +934,8 @@ sk_open(sock *s) } fill_in_sockaddr(&sa, s->saddr, port); #ifdef CONFIG_SKIP_MC_BIND - if (type == SK_IP && bind(fd, (struct sockaddr *) &sa, sizeof(sa)) < 0) + if ((type != SK_UDP_MC) && (type != SK_IP_MC) && + bind(fd, (struct sockaddr *) &sa, sizeof(sa)) < 0) #else if (bind(fd, (struct sockaddr *) &sa, sizeof(sa)) < 0) #endif |