aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVlad Yasevich <vladislav.yasevich@hp.com>2007-08-21 14:24:30 +0900
committerVlad Yasevich <vladislav.yasevich@hp.com>2007-08-30 13:55:20 -0400
commit2772b495efe341a02c867bc3a03d7362bd336832 (patch)
tree7ca42b0e414fffd340bb2242cc1f61547cf21183
parentd99fa42963a5ae394cf1df9d5bb739eb378a189b (diff)
downloadkernel_samsung_crespo-2772b495efe341a02c867bc3a03d7362bd336832.zip
kernel_samsung_crespo-2772b495efe341a02c867bc3a03d7362bd336832.tar.gz
kernel_samsung_crespo-2772b495efe341a02c867bc3a03d7362bd336832.tar.bz2
SCTP: Pick the correct port when binding to 0.
sctp_bindx() allows the use of unspecified port. The problem is that every address we bind to ends up selecting a new port if the user specified port 0. This patch allows re-use of the already selected port when the port from bindx was 0. Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com>
-rw-r--r--net/sctp/socket.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/net/sctp/socket.c b/net/sctp/socket.c
index 01c6364..de79212 100644
--- a/net/sctp/socket.c
+++ b/net/sctp/socket.c
@@ -353,6 +353,7 @@ SCTP_STATIC int sctp_do_bind(struct sock *sk, union sctp_addr *addr, int len)
* The function sctp_get_port_local() does duplicate address
* detection.
*/
+ addr->v4.sin_port = htons(snum);
if ((ret = sctp_get_port_local(sk, addr))) {
if (ret == (long) sk) {
/* This endpoint has a conflicting address. */