pulse-server: iterate addresses correctly

When creating servers, actually iterate the addresses correctly instead
of only using the first address.

Fixes #2047
This commit is contained in:
Barnabás Pőcze 2022-01-21 10:25:46 +01:00 committed by Wim Taymans
parent ee257b148b
commit cec9347864

View file

@ -944,7 +944,7 @@ int servers_create_and_start(struct impl *impl, const char *addresses, struct pw
while ((len = spa_json_next(&it[1], &v)) > 0) { while ((len = spa_json_next(&it[1], &v)) > 0) {
char addr_str[FORMATTED_SOCKET_ADDR_STRLEN] = { 0 }; char addr_str[FORMATTED_SOCKET_ADDR_STRLEN] = { 0 };
char key[128], client_access[64] = { 0 }; char key[128], client_access[64] = { 0 };
struct sockaddr_storage addr[2]; struct sockaddr_storage addrs[2];
int i, max_clients = MAX_CLIENTS, listen_backlog = LISTEN_BACKLOG, n_addr; int i, max_clients = MAX_CLIENTS, listen_backlog = LISTEN_BACKLOG, n_addr;
if (spa_json_is_object(v, len)) { if (spa_json_is_object(v, len)) {
@ -967,7 +967,7 @@ int servers_create_and_start(struct impl *impl, const char *addresses, struct pw
spa_json_parse_stringn(v, len, addr_str, sizeof(addr_str)); spa_json_parse_stringn(v, len, addr_str, sizeof(addr_str));
} }
n_addr = parse_address(addr_str, addr, 2); n_addr = parse_address(addr_str, addrs, SPA_N_ELEMENTS(addrs));
if (n_addr < 0) { if (n_addr < 0) {
pw_log_warn("pulse-server %p: failed to parse address '%s': %s", pw_log_warn("pulse-server %p: failed to parse address '%s': %s",
impl, addr_str, spa_strerror(n_addr)); impl, addr_str, spa_strerror(n_addr));
@ -977,7 +977,9 @@ int servers_create_and_start(struct impl *impl, const char *addresses, struct pw
/* try to create sockets for each address in the list */ /* try to create sockets for each address in the list */
for (i = 0; i < n_addr; i++) { for (i = 0; i < n_addr; i++) {
const struct sockaddr_storage *addr = &addrs[i];
struct server * const server = server_new(impl); struct server * const server = server_new(impl);
if (server == NULL) { if (server == NULL) {
UPDATE_ERR(-errno); UPDATE_ERR(-errno);
continue; continue;