Hi,
I've same problem, after a quick look I've found that
upnp_clean_expired_pinholes initialize next_pinhole_ts to MAX_UINT. So
your problem is only a conversion problem between signed, unsigned and
overflow.
I've made a quick patch you can see in attachment.
Regards,
--
Frederic Planchon
diff -ur miniupnpd-1.7//miniupnpd.c miniupnpd-1.7-patched/miniupnpd.c
--- miniupnpd-1.7//miniupnpd.c 2012-05-21 17:50:03.000000000 +0200
+++ miniupnpd-1.7-patched/miniupnpd.c 2012-09-09 10:00:01.000000000 +0200
@@ -1443,7 +1443,8 @@
next_pinhole_ts = 0;
upnp_clean_expired_pinholes(&next_pinhole_ts);
if(next_pinhole_ts &&
- timeout.tv_sec >= (int)(next_pinhole_ts - timeofday.tv_sec))
{
+ timeout.tv_sec >= (int)(next_pinhole_ts - timeofday.tv_sec)
&&
+ (int)(next_pinhole_ts - timeofday.tv_sec) >= 0 ) {
timeout.tv_sec = next_pinhole_ts - timeofday.tv_sec;
timeout.tv_usec = 0;
}