};
typedef struct raop_callbacks_s raop_callbacks_t;
-RAOP_API raop_t *raop_init(raop_callbacks_t *callbacks, const char *pemkey);
-RAOP_API raop_t *raop_init_from_keyfile(raop_callbacks_t *callbacks, const char *keyfile);
+RAOP_API raop_t *raop_init(int max_clients, raop_callbacks_t *callbacks, const char *pemkey);
+RAOP_API raop_t *raop_init_from_keyfile(int max_clients, raop_callbacks_t *callbacks, const char *keyfile);
RAOP_API void raop_set_log_level(raop_t *raop, int level);
RAOP_API void raop_set_log_callback(raop_t *raop, raop_log_callback_t callback);
}
}
if (i == httpd->max_connections) {
+ /* This code should never be reached, we do not select server_fd when full */
logger_log(httpd->logger, LOGGER_INFO, "Max connections reached");
shutdown(fd, SHUT_RDWR);
closesocket(fd);
}
raop_t *
-raop_init(raop_callbacks_t *callbacks, const char *pemkey)
+raop_init(int max_clients, raop_callbacks_t *callbacks, const char *pemkey)
{
raop_t *raop;
httpd_t *httpd;
httpd_callbacks_t httpd_cbs;
assert(callbacks);
+ assert(max_clients > 0);
+ assert(max_clients < 100);
assert(pemkey);
/* Initialize the network */
httpd_cbs.conn_destroy = &conn_destroy;
/* Initialize the http daemon */
- httpd = httpd_init(raop->logger, &httpd_cbs, 10, 1);
+ httpd = httpd_init(raop->logger, &httpd_cbs, max_clients, 1);
if (!httpd) {
free(raop);
return NULL;
}
raop_t *
-raop_init_from_keyfile(raop_callbacks_t *callbacks, const char *keyfile)
+raop_init_from_keyfile(int max_clients, raop_callbacks_t *callbacks, const char *keyfile)
{
raop_t *raop;
char *pemstr;
if (utils_read_file(&pemstr, keyfile) < 0) {
return NULL;
}
- raop = raop_init(callbacks, pemstr);
+ raop = raop_init(max_clients, callbacks, pemstr);
free(pemstr);
return raop;
}
raop_cbs.audio_flush = audio_flush;
raop_cbs.audio_destroy = audio_destroy;
- raop = raop_init_from_keyfile(&raop_cbs, "airport.key");
+ raop = raop_init_from_keyfile(10, &raop_cbs, "airport.key");
raop_set_log_level(raop, RAOP_LOG_DEBUG);
raop_set_log_callback(raop, &raop_log_callback);
raop_start(raop, &raop_port, hwaddr, sizeof(hwaddr), "test");