From 6a54704b297a0bee90501abe5211fcca46306f1c Mon Sep 17 00:00:00 2001 From: Sergey Lyubka <valenok@gmail.com> Date: Wed, 11 Jun 2014 20:12:23 +0100 Subject: [PATCH] mg_set_option(): always set correct actual listening port --- examples/unit_test.c | 16 ---------------- mongoose.c | 14 ++++++-------- 2 files changed, 6 insertions(+), 24 deletions(-) diff --git a/examples/unit_test.c b/examples/unit_test.c index d0bcdda38..64e350cc6 100644 --- a/examples/unit_test.c +++ b/examples/unit_test.c @@ -502,21 +502,6 @@ static const char *test_rewrites(void) { return NULL; } -static const char *test_mg_parse_url(void) { - unsigned short port; - char a[100], b[100]; - ASSERT(parse_url("", a, sizeof(a), b, sizeof(b), &port) == 0); - ASSERT(parse_url("ws://foo ", a, sizeof(a), b, sizeof(b), &port) == 8); - ASSERT(strcmp(a, "ws") == 0 && strcmp(b, "foo") == 0 && port == 80); - ASSERT(parse_url("xx://y:123 ", a, sizeof(a), b, sizeof(b), &port) == 10); - ASSERT(strcmp(a, "xx") == 0 && strcmp(b, "y") == 0 && port == 123); - ASSERT(parse_url(" foo ", a, sizeof(a), b, sizeof(b), &port) == 0); - ASSERT(parse_url(" foo:44 ", a, sizeof(a), b, sizeof(b), &port) == 0); - ASSERT(parse_url("foo:44 ", a, sizeof(a), b, sizeof(b), &port) == 6); - ASSERT(strcmp(a, "") == 0 && strcmp(b, "foo") == 0 && port == 44); - return NULL; -} - static const char *run_all_tests(void) { RUN_TEST(test_should_keep_alive); RUN_TEST(test_match_prefix); @@ -533,7 +518,6 @@ static const char *run_all_tests(void) { RUN_TEST(test_mg_set_option); RUN_TEST(test_server); RUN_TEST(test_rewrites); - RUN_TEST(test_mg_parse_url); return NULL; } diff --git a/mongoose.c b/mongoose.c index 7760f6ff0..82b27ddba 100644 --- a/mongoose.c +++ b/mongoose.c @@ -677,8 +677,8 @@ void ns_sock_to_str(sock_t sock, char *buf, size_t len, int flags) { #endif } if (flags & 2) { - snprintf(buf + strlen(buf), len - (strlen(buf) + 1), ":%d", - (int) ntohs(sa.sin.sin_port)); + snprintf(buf + strlen(buf), len - (strlen(buf) + 1), "%s%d", + flags & 1 ? ":" : "", (int) ntohs(sa.sin.sin_port)); } } } @@ -4732,12 +4732,10 @@ const char *mg_set_option(struct mg_server *server, const char *name, if (port < 0) { error_msg = "Cannot bind to port"; } else { - if (!strcmp(value, "0")) { - char buf[10]; - mg_snprintf(buf, sizeof(buf), "%d", port); - free(*v); - *v = mg_strdup(buf); - } + char buf[100]; + ns_sock_to_str(server->ns_server.listening_sock, buf, sizeof(buf), 2); + free(*v); + *v = mg_strdup(buf); } #ifndef _WIN32 } else if (ind == RUN_AS_USER) { -- GitLab