diff --git a/components/squeezelite/slimproto.c b/components/squeezelite/slimproto.c index 7a70614d..6a83176a 100644 --- a/components/squeezelite/slimproto.c +++ b/components/squeezelite/slimproto.c @@ -825,7 +825,7 @@ in_addr_t discover_server(char *default_server, int max) { do { - LOG_INFO("sending discovery"); + LOG_INFO("sending discovery %u", max); memset(&s, 0, sizeof(s)); if (sendto(disc_sock, buf, len, 0, (struct sockaddr *)&d, sizeof(d)) < 0) { @@ -885,7 +885,13 @@ void slimproto(log_level level, char *server, u8_t mac[6], const char *name, con } if (!slimproto_ip) { - slimproto_ip = discover_server(server, 0); +#if EMBEDDED + // on first attempt, try really hard to connect before exiting (and only exit if we are not on another sink) + slimproto_ip = discover_server(server, MAX_SERVER_RETRIES * 5); + if (!slimproto_ip && !output.external) return; +#else + slimproto_ip = discover_server(server, 0); +#endif } if (!slimproto_port) { @@ -970,7 +976,7 @@ void slimproto(log_level level, char *server, u8_t mac[6], const char *name, con #if EMBEDDED // in embedded we give up after a while no matter what - if (++failed_connect > 5 && !server) { + if (++failed_connect > MAX_SERVER_RETRIES && !server) { slimproto_ip = serv_addr.sin_addr.s_addr = discover_server(NULL, MAX_SERVER_RETRIES); if (!slimproto_ip) return; } else if (reconnect && MAX_SERVER_RETRIES && failed_connect > 5 * MAX_SERVER_RETRIES) return;