From 54727b2a9ea53ec873b833fc86138723bfc77767 Mon Sep 17 00:00:00 2001 From: Marcelo Roberto Jimenez Date: Fri, 7 May 2010 11:20:00 +0000 Subject: [PATCH] Forward port of svn revision 548: [svn] SF Bug Tracker [ 2995758 ] libupnp 1.6.6, wrong bind when reuseaddr is 1. Submitted: viallard anthony ( homer242 ) When trying to use reuseaddr option in miniserver/miniserver.c, there isn't a affectation of the port chosen (serverAddr.sin_port isn't receive listen_port variable value). git-svn-id: https://pupnp.svn.sourceforge.net/svnroot/pupnp/trunk@549 119443c7-1b9e-41f8-b6fc-b9c35fce742c --- ChangeLog | 8 ++++++++ THANKS | 1 + upnp/src/genlib/miniserver/miniserver.c | 5 +++-- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index fe5b652..9f9466b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -211,6 +211,14 @@ Version 1.8.0 Version 1.6.7 ******************************************************************************* +2010-05-07 Marcelo Jimenez + SF Bug Tracker [ 2995758 ] libupnp 1.6.6, wrong bind when reuseaddr is + 1. + Submitted: viallard anthony ( homer242 ) + When trying to use reuseaddr option in miniserver/miniserver.c, there + isn't a affectation of the port chosen (serverAddr.sin_port isn't + receive listen_port variable value). + 2010-04-25 Marcelo Jimenez Define PROTOTYPES to be one by default in global.h. This affects the RSA MD5 code. diff --git a/THANKS b/THANKS index 7c2f1a3..9c4e654 100644 --- a/THANKS +++ b/THANKS @@ -8,6 +8,7 @@ exempt of errors. - Alex (afaucher) - Andre Sodermans (wienerschnitzel) +- Anthony Viallard (homer242) - Apostolos Syropoulos - Arno Willig - Bob Ciora diff --git a/upnp/src/genlib/miniserver/miniserver.c b/upnp/src/genlib/miniserver/miniserver.c index 870b9ab..4d69efd 100644 --- a/upnp/src/genlib/miniserver/miniserver.c +++ b/upnp/src/genlib/miniserver/miniserver.c @@ -625,8 +625,8 @@ static int get_miniserver_sockets( return UPNP_E_SOCKET_BIND; } - sockError = bind(listenfd4, (struct sockaddr *)&__ss_v4, - sizeof (__ss_v4)); + serverAddr4->sin_port = htons(listen_port4); + sockError = bind(listenfd4, (struct sockaddr *)&__ss_v4, sizeof (__ss_v4)); if (sockError == -1) { strerror_r(errno, errorBuffer, ERROR_BUFFER_LEN); UpnpPrintf( UPNP_INFO, MSERV, __FILE__, __LINE__, @@ -652,6 +652,7 @@ static int get_miniserver_sockets( return UPNP_E_SOCKET_BIND; } + serverAddr6->sin6_port = htons(listen_port6); sockError = bind(listenfd6, (struct sockaddr *)&__ss_v6, sizeof (__ss_v6)); if (sockError == -1) { strerror_r(errno, errorBuffer, ERROR_BUFFER_LEN);