mirror of
https://github.com/tonusoo/koduinternet-cpe
synced 2024-11-10 21:31:03 +02:00
27 lines
1.0 KiB
Diff
27 lines
1.0 KiB
Diff
--- src/igmpproxy.c~ 2023-05-15 23:19:03.446584147 +0300
|
|
+++ src/igmpproxy.c 2023-05-15 23:20:55.125401534 +0300
|
|
@@ -263,7 +263,7 @@
|
|
int MaxFD, Rt, secs;
|
|
fd_set ReadFDS;
|
|
socklen_t dummy = 0;
|
|
- struct timespec curtime, lasttime, difftime, tv;
|
|
+ struct timespec curtime, lasttime, difftime, tv, pselect_timeout;
|
|
// The timeout is a pointer in order to set it to NULL if nessecary.
|
|
struct timespec *timeout = &tv;
|
|
|
|
@@ -306,8 +306,13 @@
|
|
FD_ZERO( &ReadFDS );
|
|
FD_SET( MRouterFD, &ReadFDS );
|
|
|
|
+ // https://github.com/pali/igmpproxy/issues/95
|
|
+ memcpy(&pselect_timeout, timeout, sizeof(struct timespec));
|
|
+ pselect_timeout.tv_sec *= 2;
|
|
+ my_log(LOG_DEBUG, 0, "Calling pselect() with %ld.%09ld seconds timeout", pselect_timeout.tv_sec, pselect_timeout.tv_nsec);
|
|
+
|
|
// wait for input
|
|
- Rt = pselect( MaxFD +1, &ReadFDS, NULL, NULL, timeout, NULL );
|
|
+ Rt = pselect( MaxFD +1, &ReadFDS, NULL, NULL, &pselect_timeout, NULL );
|
|
|
|
// log and ignore failures
|
|
if( Rt < 0 ) {
|