llama_backend_free();
};
- // bind HTTP listen port, run the HTTP server in a thread
- if (!svr->bind_to_port(params.hostname, params.port)) {
+ // bind HTTP listen port
+ bool was_bound = false;
+ if (params.port == 0) {
+ int bound_port = svr->bind_to_any_port(params.hostname);
+ if ((was_bound = (bound_port >= 0))) {
+ params.port = bound_port;
+ }
+ } else {
+ was_bound = svr->bind_to_port(params.hostname, params.port);
+ }
+
+ if (!was_bound) {
//LOG_ERROR("couldn't bind HTTP server socket", {
// {"hostname", params.hostname},
// {"port", params.port},
clean_up();
return 1;
}
+
+ // run the HTTP server in a thread
std::thread t([&]() { svr->listen_after_bind(); });
svr->wait_until_ready();