From 1cee8a16b9669b64cd19905850556eaf281a54e8 Mon Sep 17 00:00:00 2001
From: Deomid Ryabkov <rojer@cesanta.com>
Date: Tue, 18 Apr 2017 13:26:46 +0100
Subject: [PATCH] Fix mg_socket_if_get_conn_addr for UDP sockets

Remote address is not associated with an outgoing UDP socket.
Instead, it is stored in mg_connection.sa

PUBLISHED_FROM=16f82ee8a69b995d684ec96b8db6b5591cd400db
---
 mongoose.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/mongoose.c b/mongoose.c
index 7840a2649..7c40cb9c0 100644
--- a/mongoose.c
+++ b/mongoose.c
@@ -3792,6 +3792,10 @@ void mg_sock_to_str(sock_t sock, char *buf, size_t len, int flags) {
 
 void mg_socket_if_get_conn_addr(struct mg_connection *nc, int remote,
                                 union socket_address *sa) {
+  if ((nc->flags & MG_F_UDP) && remote) {
+    memcpy(sa, &nc->sa, sizeof(*sa));
+    return;
+  }
   mg_sock_get_addr(nc->sock, remote, sa);
 }
 
-- 
GitLab