From fb5e2b8c2f661f935f5181765ddc6ceb94882ff9 Mon Sep 17 00:00:00 2001
From: Sergey Lyubka <valenok@gmail.com>
Date: Tue, 5 Mar 2013 18:55:33 +0000
Subject: [PATCH] Setting off IPV6_V6ONLY for USE_IPV6 case

---
 mongoose.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/mongoose.c b/mongoose.c
index f407688d7..732695ed6 100644
--- a/mongoose.c
+++ b/mongoose.c
@@ -4474,6 +4474,9 @@ static int parse_port_string(const struct vec *vec, struct socket *so) {
 static int set_ports_option(struct mg_context *ctx) {
   const char *list = ctx->config[LISTENING_PORTS];
   int on = 1, success = 1;
+#if defined(USE_IPV6)
+  int off = 0;
+#endif
   struct vec vec;
   struct socket so;
 
@@ -4491,6 +4494,10 @@ static int set_ports_option(struct mg_context *ctx) {
                // broadcast UDP sockets
                setsockopt(so.sock, SOL_SOCKET, SO_REUSEADDR,
                           (void *) &on, sizeof(on)) != 0 ||
+#if defined(USE_IPV6)
+               setsockopt(so.sock, IPPROTO_IPV6, IPV6_V6ONLY, (void *) &off,
+                          sizeof(off)) != 0 ||
+#endif
                bind(so.sock, &so.lsa.sa, sizeof(so.lsa)) != 0 ||
                listen(so.sock, SOMAXCONN) != 0) {
       cry(fc(ctx), "%s: cannot bind to %.*s: %s", __func__,
-- 
GitLab