Skip to content

Commit da058b3

Browse files
committed
Don't assume AF_INET6 or AF_INET
1 parent 7964f1b commit da058b3

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

Release/src/http/listener/http_server_httpsys.cpp

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -557,19 +557,23 @@ void windows_request_context::read_headers_io_completion(DWORD error_code, DWORD
557557

558558
// Retrieve the remote IP address
559559
std::vector<wchar_t> remoteAddressBuffer(50);
560-
PVOID inAddr;
561560

562561
if (m_request->Address.pRemoteAddress->sa_family == AF_INET6)
563562
{
564-
inAddr = &reinterpret_cast<SOCKADDR_IN6 *>(m_request->Address.pRemoteAddress)->sin6_addr;
563+
auto inAddr = &reinterpret_cast<SOCKADDR_IN6 *>(m_request->Address.pRemoteAddress)->sin6_addr;
564+
InetNtopW(AF_INET6, inAddr, &remoteAddressBuffer[0], remoteAddressBuffer.size());
565+
}
566+
else if (m_request->Address.pRemoteAddress->sa_family == AF_INET)
567+
{
568+
auto inAddr = &reinterpret_cast<SOCKADDR_IN *>(m_request->Address.pRemoteAddress)->sin_addr;
569+
InetNtopW(AF_INET, inAddr, &remoteAddressBuffer[0], remoteAddressBuffer.size());
565570
}
566571
else
567572
{
568-
inAddr = &reinterpret_cast<SOCKADDR_IN *>(m_request->Address.pRemoteAddress)->sin_addr;
573+
remoteAddressBuffer[0] = L'\0';
569574
}
570575

571-
InetNtopW(m_request->Address.pRemoteAddress->sa_family, inAddr, &remoteAddressBuffer[0], remoteAddressBuffer.size());
572-
m_msg._get_impl()->_set_remote_address(std::wstring(&remoteAddressBuffer[0]));
576+
m_msg._get_impl()->_set_remote_address(&remoteAddressBuffer[0]);
573577

574578
// Start reading in body from the network.
575579
m_msg._get_impl()->_prepare_to_receive_data();

0 commit comments

Comments
 (0)