From 2cce91de9a69e9bf395ddab6dbb99e363447d543 Mon Sep 17 00:00:00 2001
From: Sergey Lyubka <valenok@gmail.com>
Date: Tue, 14 Oct 2014 14:22:26 +0100
Subject: [PATCH] Refactored code for multiple listeners

---
 mongoose.c | 30 ++++++++++++------------------
 1 file changed, 12 insertions(+), 18 deletions(-)

diff --git a/mongoose.c b/mongoose.c
index 46b7e66ad..76efa7a3b 100644
--- a/mongoose.c
+++ b/mongoose.c
@@ -4946,22 +4946,6 @@ static void set_default_option_values(char **opts) {
   }
 }
 
-static const char *add_listener(struct mg_server *server, char **v,
-                                const char *value) {
-  const char *error_msg = NULL;
-  struct ns_connection *c;
-
-  if ((c = ns_bind(&server->ns_mgr, value, mg_ev_handler, NULL)) == NULL) {
-    error_msg = "Cannot bind to port";
-  } else {
-    char buf[100];
-    ns_sock_to_str(c->sock, buf, sizeof(buf), 2);
-    free(*v);
-    *v = mg_strdup(buf);
-  }
-  return error_msg;
-}
-
 const char *mg_set_option(struct mg_server *server, const char *name,
                           const char *value) {
   int ind = get_option_index(name);
@@ -4989,8 +4973,18 @@ const char *mg_set_option(struct mg_server *server, const char *name,
 
   if (ind == LISTENING_PORT) {
     struct vec vec;
-    while (!error_msg && (value = next_option(value, &vec, NULL)) != NULL) {
-      error_msg = add_listener(server, v, vec.ptr);
+    while ((value = next_option(value, &vec, NULL)) != NULL) {
+      struct ns_connection *c = ns_bind(&server->ns_mgr, vec.ptr,
+                                        mg_ev_handler, NULL);
+      if (c== NULL) {
+        error_msg = "Cannot bind to port";
+        break;
+      } else {
+        char buf[100];
+        ns_sock_to_str(c->sock, buf, sizeof(buf), 2);
+        free(*v);
+        *v = mg_strdup(buf);
+      }
     }
 #ifndef MONGOOSE_NO_FILESYSTEM
   } else if (ind == HEXDUMP_FILE) {
-- 
GitLab