Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2008-06-24 17:13:44 +0400
committerCorinna Vinschen <corinna@vinschen.de>2008-06-24 17:13:44 +0400
commit7b3e3bfd49bef27c5df703e9c079c0c1eb454ecc (patch)
tree2738ce15cc47141ea0acec86e190975d6a7fb650
parent6b9b8ecd853a1a01fd7650a48b4dd842bbaecdc9 (diff)
* net.cc (cygwin_bindresvport_sa): Fix usage of last_used_bindresvport.
-rw-r--r--winsup/cygwin/ChangeLog4
-rw-r--r--winsup/cygwin/net.cc4
2 files changed, 6 insertions, 2 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 5c818f603..9eecb64ac 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,7 @@
+2008-06-24 Corinna Vinschen <corinna@vinschen.de>
+
+ * net.cc (cygwin_bindresvport_sa): Fix usage of last_used_bindresvport.
+
2008-06-21 Corinna Vinschen <corinna@vinschen.de>
* include/limits.h (PATH_MAX): Add comment.
diff --git a/winsup/cygwin/net.cc b/winsup/cygwin/net.cc
index c18a775de..7e9d14c45 100644
--- a/winsup/cygwin/net.cc
+++ b/winsup/cygwin/net.cc
@@ -2219,9 +2219,9 @@ cygwin_bindresvport_sa (int fd, struct sockaddr *sa)
for (int i = 0; i < NUM_PORTS; i++)
{
- while ((myport = InterlockedExchange (&cygwin_shared->last_used_bindresvport, 0)) == 0)
+ while ((myport = InterlockedExchange (&cygwin_shared->last_used_bindresvport, -1)) == -1)
low_priority_sleep (0);
- if (--myport < PORT_LOW)
+ if (myport == 0 || --myport < PORT_LOW)
myport = PORT_HIGH;
InterlockedExchange (&cygwin_shared->last_used_bindresvport, myport);