Skip to content

Commit 88416b8

Browse files
author
Sebastiano Merlino
committed
Added capability to pass personal sockaddr or sock pointers to the daemon
1 parent 6474ed2 commit 88416b8

2 files changed

Lines changed: 22 additions & 0 deletions

File tree

‎src/Webserver.cpp‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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
892894
inline CreateWebserver& CreateWebserver::logDelegate(const LoggingDelegate* logDelegate) { _logDelegate = logDelegate; return *this; }
893895
inline CreateWebserver& CreateWebserver::validator(const RequestValidator* validator) { _validator = validator; return *this; }
894896
inline 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; }
895899
inline CreateWebserver& CreateWebserver::maxThreadStackSize(const int maxThreadStackSize) { _maxThreadStackSize = maxThreadStackSize; return *this; }
896900
inline CreateWebserver& CreateWebserver::useSsl() { _useSsl = true; return *this; }
897901
inline 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)

‎src/Webserver.hpp‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -826,6 +826,8 @@ class Webserver
826826
const LoggingDelegate* logDelegate = 0x0,
827827
const RequestValidator* validator = 0x0,
828828
const Unescaper* unescaper = 0x0,
829+
const struct sockaddr* bindAddress = 0x0,
830+
const int bindSocket = 0,
829831
const int maxThreadStackSize = 0,
830832
const bool useSsl = false,
831833
const bool useIpv6 = false,
@@ -896,6 +898,8 @@ class Webserver
896898
const LoggingDelegate* logDelegate;
897899
const RequestValidator* validator;
898900
const Unescaper* unescaper;
901+
const struct sockaddr* bindAddress;
902+
int bindSocket;
899903
std::string httpsMemKey;
900904
std::string httpsMemCert;
901905
std::string httpsMemTrust;
@@ -962,6 +966,8 @@ class CreateWebserver
962966
CreateWebserver& logDelegate(const LoggingDelegate* logDelegate);
963967
CreateWebserver& validator(const RequestValidator* validator);
964968
CreateWebserver& unescaper(const Unescaper* unescaper);
969+
CreateWebserver& bindAddress(const struct sockaddr* bindAddress);
970+
CreateWebserver& bindSocket(const int bindSocket);
965971
CreateWebserver& maxThreadStackSize(const int maxThreadStackSize);
966972
CreateWebserver& useSsl();
967973
CreateWebserver& noSsl();
@@ -989,6 +995,8 @@ class CreateWebserver
989995
const LoggingDelegate* _logDelegate;
990996
const RequestValidator* _validator;
991997
const Unescaper* _unescaper;
998+
const struct sockaddr* _bindAddress;
999+
int _bindSocket;
9921000
int _maxThreadStackSize;
9931001
bool _useSsl;
9941002
bool _useIpv6;

0 commit comments

Comments
 (0)