projects
/
awesomized
/
libmemcached
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
|
github
raw
|
inline
| side by side
Update to include build info.
[awesomized/libmemcached]
/
libtest
/
port.cc
diff --git
a/libtest/port.cc
b/libtest/port.cc
index 904a0addc5733d3ea4f8715057aa1befa8f0292a..01e0e88b34426e1f014db5fd43346903d004570e 100644
(file)
--- a/
libtest/port.cc
+++ b/
libtest/port.cc
@@
-69,12
+69,13
@@
struct socket_st {
void release(in_port_t _arg)
{
void release(in_port_t _arg)
{
- for(socket_port_t::iterator iter= _pair.begin();
- iter != _pair.end();
-
iter++
)
+ for
(socket_port_t::iterator iter= _pair.begin();
+
iter != _pair.end();
+
++iter
)
{
if ((*iter).second == _arg)
{
{
if ((*iter).second == _arg)
{
+ shutdown((*iter).first, SHUT_RDWR);
close((*iter).first);
}
}
close((*iter).first);
}
}
@@
-82,10
+83,11
@@
struct socket_st {
~socket_st()
{
~socket_st()
{
- for(socket_port_t::iterator iter= _pair.begin();
- iter != _pair.end();
-
iter++
)
+ for
(socket_port_t::iterator iter= _pair.begin();
+
iter != _pair.end();
+
++iter
)
{
{
+ shutdown((*iter).first, SHUT_RDWR);
close((*iter).first);
}
}
close((*iter).first);
}
}
@@
-118,7
+120,7
@@
in_port_t get_free_port()
int retries= 1024;
int retries= 1024;
- while (
retries--
)
+ while (
--retries
)
{
int sd;
if ((sd= socket(AF_INET, SOCK_STREAM, 0)) != -1)
{
int sd;
if ((sd= socket(AF_INET, SOCK_STREAM, 0)) != -1)
@@
-153,11
+155,21
@@
in_port_t get_free_port()
}
// We handle the case where if we max out retries, we still abort.
}
// We handle the case where if we max out retries, we still abort.
- if (ret_port <= 1024)
+ if (retries == 0)
+ {
+ fatal_message("No port could be found, exhausted retry");
+ }
+
+ if (ret_port == 0)
{
fatal_message("No port could be found");
}
{
fatal_message("No port could be found");
}
+ if (ret_port <= 1024)
+ {
+ fatal_message("No port could be found, though some where available below or at 1024");
+ }
+
return ret_port;
}
return ret_port;
}