@@ -3305,7 +3305,7 @@ static void startFrontends()
33053305struct ListeningSockets
33063306{
33073307 Socket d_consoleSocket{-1 };
3308- Socket d_webServerSocket{- 1 } ;
3308+ std::vector<std::pair<ComboAddress, Socket>> d_webServerSockets ;
33093309};
33103310
33113311static ListeningSockets initListeningSockets ()
@@ -3325,12 +3325,12 @@ static ListeningSockets initListeningSockets()
33253325 }
33263326 }
33273327
3328- if (currentConfig.d_webServerAddress ) {
3329- const auto & local = *currentConfig.d_webServerAddress ;
3328+ for (const auto & local : currentConfig.d_webServerAddresses ) {
33303329 try {
3331- result.d_webServerSocket = Socket (local.sin4 .sin_family , SOCK_STREAM, 0 );
3332- result.d_webServerSocket .bind (local, true );
3333- result.d_webServerSocket .listen (5 );
3330+ auto webServerSocket = Socket (local.sin4 .sin_family , SOCK_STREAM, 0 );
3331+ webServerSocket.bind (local, true );
3332+ webServerSocket.listen (5 );
3333+ result.d_webServerSockets .emplace_back (local, std::move (webServerSocket));
33343334 }
33353335 catch (const std::exception& exp) {
33363336 errlog (" Unable to bind to web server socket on %s: %s" , local.toStringWithPort (), exp.what ());
@@ -3603,8 +3603,8 @@ int main(int argc, char** argv)
36033603 std::thread consoleControlThread (dnsdist::console::controlThread, std::move (listeningSockets.d_consoleSocket ));
36043604 consoleControlThread.detach ();
36053605 }
3606- if ( dnsdist::configuration::getCurrentRuntimeConfiguration (). d_webServerAddress ) {
3607- std::thread webServerThread (dnsdist::webserver::WebserverThread, std::move (listeningSockets. d_webServerSocket ));
3606+ for ( auto & [listeningAddress, socket] : listeningSockets. d_webServerSockets ) {
3607+ std::thread webServerThread (dnsdist::webserver::WebserverThread, listeningAddress, std::move (socket ));
36083608 webServerThread.detach ();
36093609 }
36103610
0 commit comments