From 7b3e3bfd49bef27c5df703e9c079c0c1eb454ecc Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 24 Jun 2008 13:13:44 +0000 Subject: [PATCH] * net.cc (cygwin_bindresvport_sa): Fix usage of last_used_bindresvport. --- winsup/cygwin/ChangeLog | 4 ++++ winsup/cygwin/net.cc | 4 ++-- 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 + + * net.cc (cygwin_bindresvport_sa): Fix usage of last_used_bindresvport. + 2008-06-21 Corinna Vinschen * 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);