diff options
author | Gerald Carter <jerry@samba.org> | 2003-07-16 02:17:55 +0000 |
---|---|---|
committer | Gerald Carter <jerry@samba.org> | 2003-07-16 02:17:55 +0000 |
commit | 6b814c9908c307abf427af37c00332de5e369eb4 (patch) | |
tree | a14e967f015601212828f6600f8cb743f351819c | |
parent | bd9a42fa8df5eb37af9f23ff4498c4747f084131 (diff) | |
download | samba-6b814c9908c307abf427af37c00332de5e369eb4.tar.gz samba-6b814c9908c307abf427af37c00332de5e369eb4.tar.bz2 samba-6b814c9908c307abf427af37c00332de5e369eb4.zip |
Volker's patch for open_socket_out() to speed up connections
(This used to be commit 7d63b690004a59316a70059db0d9ad0ea9001288)
-rw-r--r-- | source3/lib/util_sock.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/source3/lib/util_sock.c b/source3/lib/util_sock.c index 8c171852ab..1bd4c3a96b 100644 --- a/source3/lib/util_sock.c +++ b/source3/lib/util_sock.c @@ -654,8 +654,8 @@ int open_socket_out(int type, struct in_addr *addr, int port ,int timeout) { struct sockaddr_in sock_out; int res,ret; - int connect_loop = 250; /* 250 milliseconds */ - int loops = (timeout) / connect_loop; + int connect_loop = 10; + int increment = 10; /* create a socket to write to */ res = socket(PF_INET, type, 0); @@ -681,8 +681,13 @@ connect_again: /* Some systems return EAGAIN when they mean EINPROGRESS */ if (ret < 0 && (errno == EINPROGRESS || errno == EALREADY || - errno == EAGAIN) && loops--) { + errno == EAGAIN) && (connect_loop < timeout) ) { msleep(connect_loop); + connect_loop += increment; + if (increment < 250) { + /* After 8 rounds we end up at a max of 255 msec */ + increment *= 1.5; + } goto connect_again; } |