From 55c26344160a16873602f56653c0b247f108f2b9 Mon Sep 17 00:00:00 2001
From: Alexander Alashkin <alexander.alashkin@cesanta.com>
Date: Fri, 1 Apr 2016 16:03:54 +0100
Subject: [PATCH] Check listener when reusing UDP conn. Closes cesanta/dev#3139

PUBLISHED_FROM=f03f8fad30faee62f290d37b0b909ef49f301b80
---
 mongoose.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/mongoose.c b/mongoose.c
index bc6afca74..81c6ee184 100644
--- a/mongoose.c
+++ b/mongoose.c
@@ -2698,7 +2698,9 @@ void mg_if_recv_udp_cb(struct mg_connection *nc, void *buf, int len,
      * This is very inefficient for long connection lists.
      */
     for (nc = mg_next(lc->mgr, NULL); nc != NULL; nc = mg_next(lc->mgr, nc)) {
-      if (memcmp(&nc->sa.sa, &sa->sa, sa_len) == 0) break;
+      if (memcmp(&nc->sa.sa, &sa->sa, sa_len) == 0 && nc->listener == lc) {
+        break;
+      }
     }
     if (nc == NULL) {
       struct mg_add_sock_opts opts;
-- 
GitLab