diff --git a/trunk/src/kernel/srs_kernel_utility.cpp b/trunk/src/kernel/srs_kernel_utility.cpp index a956bb3b6c..8629bde9db 100644 --- a/trunk/src/kernel/srs_kernel_utility.cpp +++ b/trunk/src/kernel/srs_kernel_utility.cpp @@ -189,7 +189,7 @@ void srs_parse_hostport(string hostport, string& host, int& port) if (hostport.find(":") == pos) { host = hostport.substr(0, pos); string p = hostport.substr(pos + 1); - if (!p.empty()) { + if (!p.empty() && p != "0") { port = ::atoi(p.c_str()); } return; @@ -204,7 +204,7 @@ void srs_parse_hostport(string hostport, string& host, int& port) // For ipv6, [host]:port. host = hostport.substr(1, pos - 1); string p = hostport.substr(pos + 2); - if (!p.empty()) { + if (!p.empty() && p != "0") { port = ::atoi(p.c_str()); } } diff --git a/trunk/src/utest/srs_utest_kernel.cpp b/trunk/src/utest/srs_utest_kernel.cpp index b3ce712b8e..cef48ea921 100644 --- a/trunk/src/utest/srs_utest_kernel.cpp +++ b/trunk/src/utest/srs_utest_kernel.cpp @@ -4570,6 +4570,14 @@ VOID TEST(KernelUtilityTest, CoverTimeUtilityAll) srs_parse_hostport("domain.com", host, port); EXPECT_STREQ("domain.com", host.c_str()); } + + if (true) { + string host; + int port = 1935; + srs_parse_hostport("domain.com:0", host, port); + EXPECT_EQ(1935, port); + EXPECT_STREQ("domain.com", host.c_str()); + } if (true) { string ep = srs_any_address_for_listener();