mirror of https://github.com/kiwix/libkiwix.git
Server can be started on a random free port
If the server is started with a port value of 0, it binds to a random free port. The bound port can be obtained with a `getPort()` method.
This commit is contained in:
parent
9bf6d0621f
commit
b0f65a02f2
|
@ -53,6 +53,7 @@ namespace kiwix
|
|||
void setRoot(const std::string& root);
|
||||
void setAddress(const std::string& addr) { m_addr = addr; }
|
||||
void setPort(int port) { m_port = port; }
|
||||
int getPort() const { return m_port; }
|
||||
void setNbThreads(int threads) { m_nbThreads = threads; }
|
||||
void setVerbose(bool verbose) { m_verbose = verbose; }
|
||||
void setTaskbar(bool withTaskbar, bool withLibraryButton)
|
||||
|
|
|
@ -109,6 +109,8 @@ class InternalServer {
|
|||
bool start();
|
||||
void stop();
|
||||
|
||||
int getPort() const { return m_port; }
|
||||
|
||||
private:
|
||||
Response handle_request(const RequestContext& request);
|
||||
Response build_500(const std::string& msg);
|
||||
|
@ -162,7 +164,9 @@ bool Server::start() {
|
|||
m_withTaskbar,
|
||||
m_withLibraryButton,
|
||||
m_blockExternalLinks));
|
||||
return mp_server->start();
|
||||
auto s = mp_server->start();
|
||||
m_port = mp_server->getPort();
|
||||
return s;
|
||||
}
|
||||
|
||||
void Server::stop() {
|
||||
|
@ -245,6 +249,8 @@ bool InternalServer::start() {
|
|||
<< std::endl;
|
||||
return false;
|
||||
}
|
||||
if (m_port == 0)
|
||||
m_port = MHD_get_daemon_info(mp_daemon, MHD_DAEMON_INFO_BIND_PORT)->port;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -50,6 +50,8 @@ ZimFileServer::ZimFileServer(int serverPort, std::string zimpath)
|
|||
|
||||
if ( !server->start() )
|
||||
throw std::runtime_error("ZimFileServer failed to start");
|
||||
if ( serverPort == 0 )
|
||||
serverPort = server->getPort();
|
||||
|
||||
client.reset(new httplib::Client(address, serverPort));
|
||||
}
|
||||
|
@ -64,7 +66,7 @@ class ServerTest : public ::testing::Test
|
|||
protected:
|
||||
std::unique_ptr<ZimFileServer> zfs1_;
|
||||
|
||||
const int PORT = 8001;
|
||||
const int PORT = 0;
|
||||
const std::string ZIMFILE = "./test/zimfile.zim";
|
||||
|
||||
protected:
|
||||
|
|
Loading…
Reference in New Issue