reject renewal of subscribtion that already timeouted
This commit is contained in:
parent
7cb493919f
commit
19261b6fef
|
@ -1,4 +1,7 @@
|
||||||
$Id: Changelog.txt,v 1.363 2014/03/13 10:53:40 nanard Exp $
|
$Id: Changelog.txt,v 1.365 2014/03/14 21:26:34 nanard Exp $
|
||||||
|
|
||||||
|
2014/03/14:
|
||||||
|
reject renewal of subscribtion that already timeouted
|
||||||
|
|
||||||
2014/03/13:
|
2014/03/13:
|
||||||
fix getifaddr_in6() (used for PCP)
|
fix getifaddr_in6() (used for PCP)
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* $Id: upnpevents.c,v 1.28 2014/03/13 10:53:40 nanard Exp $ */
|
/* $Id: upnpevents.c,v 1.30 2014/03/14 22:26:07 nanard Exp $ */
|
||||||
/* MiniUPnP project
|
/* MiniUPnP project
|
||||||
* http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/
|
* http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/
|
||||||
* (c) 2008-2013 Thomas Bernard
|
* (c) 2008-2014 Thomas Bernard
|
||||||
* This software is subject to the conditions detailed
|
* This software is subject to the conditions detailed
|
||||||
* in the LICENCE file provided within the distribution */
|
* in the LICENCE file provided within the distribution */
|
||||||
|
|
||||||
|
@ -149,6 +149,11 @@ renewSubscription(const char * sid, int sidlen, int timeout)
|
||||||
struct subscriber * sub;
|
struct subscriber * sub;
|
||||||
for(sub = subscriberlist.lh_first; sub != NULL; sub = sub->entries.le_next) {
|
for(sub = subscriberlist.lh_first; sub != NULL; sub = sub->entries.le_next) {
|
||||||
if((sidlen == 41) && (memcmp(sid, sub->uuid, 41) == 0)) {
|
if((sidlen == 41) && (memcmp(sid, sub->uuid, 41) == 0)) {
|
||||||
|
#ifdef UPNP_STRICT
|
||||||
|
/* check if the subscription already timeouted */
|
||||||
|
if(sub->timeout && time(NULL) > sub->timeout)
|
||||||
|
continue;
|
||||||
|
#endif
|
||||||
sub->timeout = (timeout ? time(NULL) + timeout : 0);
|
sub->timeout = (timeout ? time(NULL) + timeout : 0);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -542,6 +547,8 @@ void upnpevents_processfds(fd_set *readset, fd_set *writeset)
|
||||||
for(sub = subscriberlist.lh_first; sub != NULL; ) {
|
for(sub = subscriberlist.lh_first; sub != NULL; ) {
|
||||||
subnext = sub->entries.le_next;
|
subnext = sub->entries.le_next;
|
||||||
if(sub->timeout && curtime > sub->timeout && sub->notify == NULL) {
|
if(sub->timeout && curtime > sub->timeout && sub->notify == NULL) {
|
||||||
|
syslog(LOG_INFO, "subscriber timeouted : %u > %u SID=%s",
|
||||||
|
(unsigned)curtime, (unsigned)sub->timeout, sub->uuid);
|
||||||
LIST_REMOVE(sub, entries);
|
LIST_REMOVE(sub, entries);
|
||||||
free(sub);
|
free(sub);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue