diff options
Diffstat (limited to 'network/redir/patches/04_fix_timeouts.dpatch')
-rw-r--r-- | network/redir/patches/04_fix_timeouts.dpatch | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/network/redir/patches/04_fix_timeouts.dpatch b/network/redir/patches/04_fix_timeouts.dpatch new file mode 100644 index 0000000000..87c1984517 --- /dev/null +++ b/network/redir/patches/04_fix_timeouts.dpatch @@ -0,0 +1,45 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 04_fix_timeouts.dpatch by Daniel Kahn Gillmor <dkg@fifthhorseman.net> +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Apply a close approximation of Robert de Bath's patch for bug #142382 + +@DPATCH@ +diff -urNad redir-2.2.1~/redir.c redir-2.2.1/redir.c +--- redir-2.2.1~/redir.c 2005-10-22 22:44:39.504061784 -0400 ++++ redir-2.2.1/redir.c 2005-10-22 22:47:14.746461352 -0400 +@@ -598,10 +598,6 @@ + /* Record start time */ + start_time = (unsigned int) time(NULL); + +- /* Set up timeout */ +- timeout.tv_sec = timeout_secs; +- timeout.tv_usec = 0; +- + /* file descriptor bits */ + FD_ZERO(&iofds); + FD_SET(insock, &iofds); +@@ -618,14 +614,21 @@ + while(1) { + (void) memcpy(&c_iofds, &iofds, sizeof(iofds)); + ++ /* Set up timeout, Linux returns seconds left in this structure ++ * so we have to reset it before each select(). */ ++ timeout.tv_sec = timeout_secs; ++ timeout.tv_usec = 0; ++ + + if (select(max_fd + 1, + &c_iofds, + (fd_set *)0, + (fd_set *)0, + (timeout_secs ? &timeout : NULL)) <= 0) { +- /* syslog(LLEV,"connection timeout: %d sec",timeout.tv_sec);*/ +- break; ++ if (dosyslog) { ++ syslog(LOG_NOTICE,"connection timeout: %d sec",timeout_secs); ++ } ++ break; + } + + if(FD_ISSET(insock, &c_iofds)) { |