@@ -867,6 +867,8 @@ inline CreateWebserver::CreateWebserver(const int port):
867867 _logDelegate(0x0 ),
868868 _validator(0x0 ),
869869 _unescaper(0x0 ),
870+ _bindAddress(0x0 ),
871+ _bindSocket(0 ),
870872 _maxThreadStackSize(0 ),
871873 _useSsl(false ),
872874 _useIpv6(false ),
@@ -892,6 +894,8 @@ inline CreateWebserver& CreateWebserver::perIPConnectionLimit(const int perIPCon
892894inline CreateWebserver& CreateWebserver::logDelegate (const LoggingDelegate* logDelegate) { _logDelegate = logDelegate; return *this ; }
893895inline CreateWebserver& CreateWebserver::validator (const RequestValidator* validator) { _validator = validator; return *this ; }
894896inline CreateWebserver& CreateWebserver::unescaper (const Unescaper* unescaper) { _unescaper = unescaper; return *this ; }
897+ inline CreateWebserver& CreateWebserver::bindAddress (const struct sockaddr * bindAddress) { _bindAddress = bindAddress; return *this ; }
898+ inline CreateWebserver& CreateWebserver::bindSocket (const int bindSocket) { _bindSocket = bindSocket; return *this ; }
895899inline CreateWebserver& CreateWebserver::maxThreadStackSize (const int maxThreadStackSize) { _maxThreadStackSize = maxThreadStackSize; return *this ; }
896900inline CreateWebserver& CreateWebserver::useSsl () { _useSsl = true ; return *this ; }
897901inline CreateWebserver& CreateWebserver::noSsl () { _useSsl = false ; return *this ; }
@@ -922,6 +926,8 @@ Webserver::Webserver
922926 const LoggingDelegate* logDelegate,
923927 const RequestValidator* validator,
924928 const Unescaper* unescaper,
929+ const struct sockaddr * bindAddress,
930+ const int bindSocket,
925931 const int maxThreadStackSize,
926932 const bool useSsl,
927933 const bool useIpv6,
@@ -944,6 +950,8 @@ Webserver::Webserver
944950 logDelegate(logDelegate),
945951 validator(validator),
946952 unescaper(unescaper),
953+ bindAddress(bindAddress),
954+ bindSocket(bindSocket),
947955 maxThreadStackSize(maxThreadStackSize),
948956 useSsl(useSsl),
949957 useIpv6(useIpv6),
@@ -971,6 +979,8 @@ Webserver::Webserver(const CreateWebserver& params):
971979 logDelegate(params._logDelegate),
972980 validator(params._validator),
973981 unescaper(params._unescaper),
982+ bindAddress(params._bindAddress),
983+ bindSocket(params._bindSocket),
974984 maxThreadStackSize(params._maxThreadStackSize),
975985 useSsl(params._useSsl),
976986 useIpv6(params._useIpv6),
@@ -1029,6 +1039,10 @@ bool Webserver::start(bool blocking)
10291039 iov.push_back (gen (MHD_OPTION_EXTERNAL_LOGGER , (intptr_t ) &error_log, this ));
10301040 iov.push_back (gen (MHD_OPTION_UNESCAPE_CALLBACK , (intptr_t ) &unescaper_func, this ));
10311041 iov.push_back (gen (MHD_OPTION_CONNECTION_TIMEOUT , connectionTimeout));
1042+ if (bindAddress != 0x0 )
1043+ iov.push_back (gen (MHD_OPTION_SOCK_ADDR , (intptr_t ) bindAddress));
1044+ if (bindSocket != 0 )
1045+ iov.push_back (gen (MHD_OPTION_LISTEN_SOCKET , bindSocket));
10321046 if (maxThreads != 0 )
10331047 iov.push_back (gen (MHD_OPTION_THREAD_POOL_SIZE , maxThreads));
10341048 if (maxConnections != 0 )
0 commit comments