mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
Fix #1543, use getpeername to retrieve client ip. 3.0.92
This commit is contained in:
parent
498f3c5df9
commit
bc6c61e546
5 changed files with 63 additions and 3 deletions
|
@ -146,6 +146,7 @@ For previous versions, please read:
|
||||||
|
|
||||||
## V3 changes
|
## V3 changes
|
||||||
|
|
||||||
|
* v3.0, 2020-01-05, For [#1543][bug #1543], use getpeername to retrieve client ip. 3.0.92
|
||||||
* v3.0, 2020-01-02, For [#1042][bug #1042], improve test coverage for config. 3.0.91
|
* v3.0, 2020-01-02, For [#1042][bug #1042], improve test coverage for config. 3.0.91
|
||||||
* v3.0, 2019-12-30, Fix mp4 security issue, check buffer when required size is variable.
|
* v3.0, 2019-12-30, Fix mp4 security issue, check buffer when required size is variable.
|
||||||
* <strong>v3.0, 2019-12-29, [3.0 alpha7(3.0.90)][r3.0a7] released. 116356 lines.</strong>
|
* <strong>v3.0, 2019-12-29, [3.0 alpha7(3.0.90)][r3.0a7] released. 116356 lines.</strong>
|
||||||
|
@ -1581,6 +1582,7 @@ Winlin
|
||||||
[bug #1105]: https://github.com/ossrs/srs/issues/1105
|
[bug #1105]: https://github.com/ossrs/srs/issues/1105
|
||||||
[bug #1544]: https://github.com/ossrs/srs/issues/1544
|
[bug #1544]: https://github.com/ossrs/srs/issues/1544
|
||||||
[bug #1255]: https://github.com/ossrs/srs/issues/1255
|
[bug #1255]: https://github.com/ossrs/srs/issues/1255
|
||||||
|
[bug #1543]: https://github.com/ossrs/srs/issues/1543
|
||||||
[bug #xxxxxxxxxxxxx]: https://github.com/ossrs/srs/issues/xxxxxxxxxxxxx
|
[bug #xxxxxxxxxxxxx]: https://github.com/ossrs/srs/issues/xxxxxxxxxxxxx
|
||||||
|
|
||||||
[exo #828]: https://github.com/google/ExoPlayer/pull/828
|
[exo #828]: https://github.com/google/ExoPlayer/pull/828
|
||||||
|
|
|
@ -1142,7 +1142,7 @@ string srs_get_peer_ip(int fd)
|
||||||
// discovery client information
|
// discovery client information
|
||||||
sockaddr_storage addr;
|
sockaddr_storage addr;
|
||||||
socklen_t addrlen = sizeof(addr);
|
socklen_t addrlen = sizeof(addr);
|
||||||
if (getsockname(fd, (sockaddr*)&addr, &addrlen) == -1) {
|
if (getpeername(fd, (sockaddr*)&addr, &addrlen) == -1) {
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
// The version config.
|
// The version config.
|
||||||
#define VERSION_MAJOR 3
|
#define VERSION_MAJOR 3
|
||||||
#define VERSION_MINOR 0
|
#define VERSION_MINOR 0
|
||||||
#define VERSION_REVISION 91
|
#define VERSION_REVISION 92
|
||||||
|
|
||||||
// The macros generated by configure script.
|
// The macros generated by configure script.
|
||||||
#include <srs_auto_headers.hpp>
|
#include <srs_auto_headers.hpp>
|
||||||
|
|
|
@ -183,11 +183,11 @@ string srs_dns_resolve(string host, int& family)
|
||||||
char* h = (char*)saddr;
|
char* h = (char*)saddr;
|
||||||
socklen_t nbh = sizeof(saddr);
|
socklen_t nbh = sizeof(saddr);
|
||||||
const int r0 = getnameinfo(r->ai_addr, r->ai_addrlen, h, nbh, NULL, 0, NI_NUMERICHOST);
|
const int r0 = getnameinfo(r->ai_addr, r->ai_addrlen, h, nbh, NULL, 0, NI_NUMERICHOST);
|
||||||
|
|
||||||
if(!r0) {
|
if(!r0) {
|
||||||
family = r->ai_family;
|
family = r->ai_family;
|
||||||
return string(saddr);
|
return string(saddr);
|
||||||
}
|
}
|
||||||
|
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -35,6 +35,7 @@ using namespace std;
|
||||||
#include <srs_core_autofree.hpp>
|
#include <srs_core_autofree.hpp>
|
||||||
#include <srs_utest_protocol.hpp>
|
#include <srs_utest_protocol.hpp>
|
||||||
#include <srs_utest_http.hpp>
|
#include <srs_utest_http.hpp>
|
||||||
|
#include <srs_service_utility.hpp>
|
||||||
|
|
||||||
class MockSrsConnection : public ISrsConnection
|
class MockSrsConnection : public ISrsConnection
|
||||||
{
|
{
|
||||||
|
@ -924,3 +925,60 @@ VOID TEST(TCPServerTest, TCPClientServer)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
VOID TEST(TCPServerTest, CoverUtility)
|
||||||
|
{
|
||||||
|
EXPECT_TRUE(srs_string_is_http("http://"));
|
||||||
|
EXPECT_TRUE(srs_string_is_http("https://"));
|
||||||
|
EXPECT_TRUE(srs_string_is_http("http://localhost"));
|
||||||
|
EXPECT_TRUE(srs_string_is_http("https://localhost"));
|
||||||
|
EXPECT_FALSE(srs_string_is_http("ftp://"));
|
||||||
|
EXPECT_FALSE(srs_string_is_http("ftps://"));
|
||||||
|
EXPECT_FALSE(srs_string_is_http("http:"));
|
||||||
|
EXPECT_FALSE(srs_string_is_http("https:"));
|
||||||
|
EXPECT_TRUE(srs_string_is_rtmp("rtmp://"));
|
||||||
|
EXPECT_TRUE(srs_string_is_rtmp("rtmp://localhost"));
|
||||||
|
EXPECT_FALSE(srs_string_is_rtmp("http://"));
|
||||||
|
EXPECT_FALSE(srs_string_is_rtmp("rtmp:"));
|
||||||
|
|
||||||
|
if (true) {
|
||||||
|
sockaddr_in6 addr;
|
||||||
|
memset(&addr, 0, sizeof(addr));
|
||||||
|
addr.sin6_family = AF_INET6;
|
||||||
|
EXPECT_FALSE(srs_net_device_is_internet((sockaddr*)&addr));
|
||||||
|
}
|
||||||
|
|
||||||
|
EXPECT_FALSE(srs_net_device_is_internet("eth0"));
|
||||||
|
|
||||||
|
if (true) {
|
||||||
|
sockaddr_in addr;
|
||||||
|
addr.sin_family = AF_INET;
|
||||||
|
|
||||||
|
addr.sin_addr.s_addr = htonl(0x12000000);
|
||||||
|
EXPECT_TRUE(srs_net_device_is_internet((sockaddr*)&addr));
|
||||||
|
|
||||||
|
addr.sin_addr.s_addr = htonl(0x7f000000);
|
||||||
|
EXPECT_FALSE(srs_net_device_is_internet((sockaddr*)&addr));
|
||||||
|
|
||||||
|
addr.sin_addr.s_addr = htonl(0x7f000001);
|
||||||
|
EXPECT_FALSE(srs_net_device_is_internet((sockaddr*)&addr));
|
||||||
|
|
||||||
|
addr.sin_addr.s_addr = htonl(0x0a000000);
|
||||||
|
EXPECT_FALSE(srs_net_device_is_internet((sockaddr*)&addr));
|
||||||
|
|
||||||
|
addr.sin_addr.s_addr = htonl(0x0a000001);
|
||||||
|
EXPECT_FALSE(srs_net_device_is_internet((sockaddr*)&addr));
|
||||||
|
|
||||||
|
addr.sin_addr.s_addr = htonl(0x0affffff);
|
||||||
|
EXPECT_FALSE(srs_net_device_is_internet((sockaddr*)&addr));
|
||||||
|
|
||||||
|
addr.sin_addr.s_addr = htonl(0xc0a80000);
|
||||||
|
EXPECT_FALSE(srs_net_device_is_internet((sockaddr*)&addr));
|
||||||
|
|
||||||
|
addr.sin_addr.s_addr = htonl(0xc0a80001);
|
||||||
|
EXPECT_FALSE(srs_net_device_is_internet((sockaddr*)&addr));
|
||||||
|
|
||||||
|
addr.sin_addr.s_addr = htonl(0xc0a8ffff);
|
||||||
|
EXPECT_FALSE(srs_net_device_is_internet((sockaddr*)&addr));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue