diff --git a/src/filters/out_route.c b/src/filters/out_route.c index 1428167b69..e807eb2db1 100644 --- a/src/filters/out_route.c +++ b/src/filters/out_route.c @@ -890,7 +890,7 @@ static GF_Err routeout_check_service_updates(GF_ROUTEOutCtx *ctx, ROUTEService * //not ready, waiting for manifest if (!serv->manifest && !nb_raw_files) { - return GF_OK; + return GF_NOT_READY; } //already setup and no changes else if (!serv->wait_for_inputs) { @@ -1055,7 +1055,8 @@ static GF_Err routeout_check_service_updates(GF_ROUTEOutCtx *ctx, ROUTEService * char szIP[GF_MAX_IP_NAME_LEN]; src_ip = ctx->ifce; if (!src_ip) { - gf_sk_get_local_ip(rlct->sock, szIP); + if (gf_sk_get_local_ip(rlct->sock, szIP) != GF_OK) + strcpy(szIP, "127.0.0.1"); src_ip = szIP; } @@ -1669,10 +1670,12 @@ static GF_Err routeout_process_service(GF_ROUTEOutCtx *ctx, ROUTEService *serv) GF_Err e; e = routeout_check_service_updates(ctx, serv); + if (e==GF_NOT_READY) + return GF_OK; if (serv->stsid_bundle) { u64 diff = ctx->clock - serv->last_stsid_clock; - if (diff >= ctx->carousel) { + if (!serv->last_stsid_clock || (diff >= ctx->carousel)) { routeout_service_send_bundle(ctx, serv); serv->last_stsid_clock = ctx->clock; } else { @@ -2004,7 +2007,8 @@ static void routeout_send_lls(GF_ROUTEOutCtx *ctx) src_ip = ctx->ifce; if (!src_ip) { - gf_sk_get_local_ip(serv->rlct_base->sock, szIP); + if (gf_sk_get_local_ip(serv->rlct_base->sock, szIP)!=GF_OK) + strcpy(szIP, "127.0.0.1"); src_ip = szIP; } int res = snprintf(tmp, 1000, " \n" diff --git a/src/ietf/rtsp_session.c b/src/ietf/rtsp_session.c index d16e600ca7..2223a0f58a 100644 --- a/src/ietf/rtsp_session.c +++ b/src/ietf/rtsp_session.c @@ -1023,7 +1023,8 @@ GF_EXPORT GF_Err gf_rtsp_get_session_ip(GF_RTSPSession *sess, char buffer[GF_MAX_IP_NAME_LEN]) { if (!sess || !sess->connection) return GF_BAD_PARAM; - gf_sk_get_local_ip(sess->connection, buffer); + if (gf_sk_get_local_ip(sess->connection, buffer) != GF_OK) + strcpy(buffer, "127.0.0.1"); return GF_OK; } diff --git a/src/utils/os_net.c b/src/utils/os_net.c index 7ad2c2f4d4..e41ef8e652 100644 --- a/src/utils/os_net.c +++ b/src/utils/os_net.c @@ -641,6 +641,8 @@ GF_Err gf_sk_get_local_ip(GF_Socket *sock, char *buffer) } else { struct sockaddr_storage clientaddr; socklen_t addrlen = sizeof(clientaddr); + if (sock->flags & GF_SOCK_IS_MULTICAST) + return GF_BAD_PARAM; if (getsockname(sock->socket, (struct sockaddr *)&clientaddr, &addrlen)) return GF_IP_NETWORK_FAILURE; if (getnameinfo((struct sockaddr *)&clientaddr, addrlen, clienthost, sizeof(clienthost), NULL, 0, NI_NUMERICHOST))