Module: sip-router Branch: ser_core_cvs Commit: 98d282a690331cb2f1bcd97f32d307f71290e752 URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=98d282a6...
Author: Andrei Pelinescu-Onciul andrei@iptel.org Committer: Andrei Pelinescu-Onciul andrei@iptel.org Date: Fri Apr 10 10:26:01 2009 +0000
tcp: tcp_blocking_connect timeout fix
- tcp_blocking_connect timeout might have elapsed sooner then configured due to a bug in the way it was checked in the code. (affects tcp only in the old non-async mode)
Author: Libor Chocholaty libor@iptel.org Committer: Andrei Pelinescu-Onciul andrei@iptel.org
---
tcp_main.c | 8 +++----- 1 files changed, 3 insertions(+), 5 deletions(-)
diff --git a/tcp_main.c b/tcp_main.c index 6f7271a..4f93154 100644 --- a/tcp_main.c +++ b/tcp_main.c @@ -520,17 +520,15 @@ again: #endif while(1){ elapsed=(get_ticks()-ticks)*TIMER_TICK; - if (elapsed<to) - to-=elapsed; - else + if (elapsed>=to) goto error_timeout; #if defined(HAVE_SELECT) && defined(BLOCKING_USE_SELECT) sel_set=orig_set; - timeout.tv_sec=to; + timeout.tv_sec=to-elapsed; timeout.tv_usec=0; n=select(fd+1, 0, &sel_set, 0, &timeout); #else - n=poll(&pf, 1, to*1000); + n=poll(&pf, 1, (to-elapsed)*1000); #endif if (n<0){ if (errno==EINTR) continue;