Browse Source

Fix IGMP timer (#3476)

LWIP_RAND() return type is int, value returned is sometimes negative.
This causes timer to sometimes (often) go outside of max_time, which in turn causes IGMP snoopers or IGMP routers to drop the subscription
Johan Ström 2 years ago
parent
commit
35e34140dc
1 changed files with 1 additions and 1 deletions
  1. 1 1
      app/lwip/core/ipv4/igmp.c

+ 1 - 1
app/lwip/core/ipv4/igmp.c

@@ -731,7 +731,7 @@ igmp_start_timer(struct igmp_group *group, u8_t max_time)
 if(max_time == 1)
   group->timer = 1;
 else
-  group->timer = (LWIP_RAND() % (max_time - 1)) + 1;
+  group->timer = (u16_t) ((unsigned int)LWIP_RAND() % (max_time - 1)) + 1;
 }
 
 /**