prevent overlapping api ports

This commit is contained in:
Scott E. Graves 2025-03-22 16:39:32 -05:00
parent c2eaa92f4a
commit e53acf799a
3 changed files with 12 additions and 3 deletions

View File

@ -143,8 +143,11 @@ void server::start() {
initialize(*server_);
server_thread_ = std::make_unique<std::thread>(
[this]() { server_->listen("127.0.0.1", config_.get_api_port()); });
fmt::println("port|{}", config_.get_api_port());
server_thread_ = std::make_unique<std::thread>([this]() {
server_->set_socket_options([](auto && /* sock */) {});
server_->listen("127.0.0.1", config_.get_api_port());
});
event_system::instance().raise<service_start_end>(function_name, "server");
}

View File

@ -98,7 +98,7 @@ mount(std::vector<const char *> args, std::string data_directory,
#endif // defined(_WIN32)
lock_data global_lock(provider_type::unknown, "global");
lock_result = global_lock.grab_lock();
lock_result = global_lock.grab_lock(100U);
if (lock_result != lock_result::success) {
std::cerr << "FATAL: Unable to get global lock" << std::endl;
return exit_code::lock_failed;
@ -112,6 +112,7 @@ mount(std::vector<const char *> args, std::string data_directory,
std::cerr << "FATAL: Unable to get available port" << std::endl;
return exit_code::startup_exception;
}
fmt::println("port|{}", port);
config.set_api_port(port);
}
@ -168,6 +169,7 @@ mount(std::vector<const char *> args, std::string data_directory,
std::cerr << "failed to set mount state" << std::endl;
}
global_lock.release();
mount_result = drive.mount(drive_args);
return exit_code::mount_result;
} catch (const std::exception &e) {
@ -188,6 +190,8 @@ mount(std::vector<const char *> args, std::string data_directory,
if (not lock.set_mount_state(true, "", -1)) {
std::cerr << "failed to set mount state" << std::endl;
}
global_lock.release();
mount_result = drive.mount(drive_args);
return exit_code::mount_result;
} catch (const std::exception &e) {

View File

@ -109,6 +109,8 @@ handlers::handlers(mgmt_app_config *config, httplib::Server *server)
server_(server) {
REPERTORY_USES_FUNCTION_NAME();
server->set_socket_options([](auto && /* sock */) {});
server_->set_pre_routing_handler(
[this](const httplib::Request &req,
auto &&res) -> httplib::Server::HandlerResponse {