summaryrefslogtreecommitdiffstats
path: root/library/cpp/actors/http/http_proxy_acceptor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'library/cpp/actors/http/http_proxy_acceptor.cpp')
-rw-r--r--library/cpp/actors/http/http_proxy_acceptor.cpp16
1 files changed, 9 insertions, 7 deletions
diff --git a/library/cpp/actors/http/http_proxy_acceptor.cpp b/library/cpp/actors/http/http_proxy_acceptor.cpp
index c44921fe0c1..3c90f8cbe97 100644
--- a/library/cpp/actors/http/http_proxy_acceptor.cpp
+++ b/library/cpp/actors/http/http_proxy_acceptor.cpp
@@ -19,13 +19,7 @@ public:
: NActors::TActor<TAcceptorActor>(&TAcceptorActor::StateInit)
, Owner(owner)
, Poller(poller)
- , Socket(new TSocketDescriptor())
{
- // for unit tests :(
- SetSockOpt(Socket->Socket, SOL_SOCKET, SO_REUSEADDR, (int)true);
-#ifdef SO_REUSEPORT
- SetSockOpt(Socket->Socket, SOL_SOCKET, SO_REUSEPORT, (int)true);
-#endif
}
protected:
@@ -45,7 +39,15 @@ protected:
}
void HandleInit(TEvHttpProxy::TEvAddListeningPort::TPtr event, const NActors::TActorContext& ctx) {
- SocketAddressType bindAddress(Socket->Socket.MakeAddress(event->Get()->Address,event->Get()->Port));
+ TString address = event->Get()->Address;
+ ui16 port = event->Get()->Port;
+ Socket = new TSocketDescriptor(SocketType::GuessAddressFamily(address));
+ // for unit tests :(
+ SetSockOpt(Socket->Socket, SOL_SOCKET, SO_REUSEADDR, (int)true);
+#ifdef SO_REUSEPORT
+ SetSockOpt(Socket->Socket, SOL_SOCKET, SO_REUSEPORT, (int)true);
+#endif
+ SocketAddressType bindAddress(Socket->Socket.MakeAddress(address, port));
Endpoint = std::make_shared<TPrivateEndpointInfo>(event->Get()->CompressContentTypes);
Endpoint->Owner = ctx.SelfID;
Endpoint->Proxy = Owner;