Bug 979966: Dump diagnostic information when an ICE stream fails. r=mjf

Differential Revision: https://phabricator.services.mozilla.com/D18589

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Byron Campen [:bwc] 2019-02-04 22:01:36 +00:00
Родитель 93d67afd46
Коммит 8f731d7999
8 изменённых файлов: 49 добавлений и 31 удалений

Просмотреть файл

@ -586,11 +586,9 @@ void nr_ice_candidate_pair_set_state(nr_ice_peer_ctx *pctx, nr_ice_cand_pair *pa
}
}
int nr_ice_candidate_pair_dump_state(nr_ice_cand_pair *pair, FILE *out)
void nr_ice_candidate_pair_dump_state(nr_ice_cand_pair *pair, int log_level)
{
/*r_log(LOG_ICE,LOG_DEBUG,"CAND-PAIR(%s): pair %s: state=%s, priority=0x%llx\n",pair->codeword,pair->as_string,nr_ice_cand_pair_states[pair->state],pair->priority);*/
return(0);
r_log(LOG_ICE,log_level,"CAND-PAIR(%s): pair %s: state=%s, priority=0x%llx\n",pair->codeword,pair->as_string,nr_ice_cand_pair_states[pair->state],pair->priority);
}

Просмотреть файл

@ -84,7 +84,7 @@ int nr_ice_candidate_pair_create(nr_ice_peer_ctx *pctx, nr_ice_candidate *lcand,
int nr_ice_candidate_pair_unfreeze(nr_ice_peer_ctx *pctx, nr_ice_cand_pair *pair);
int nr_ice_candidate_pair_start(nr_ice_peer_ctx *pctx, nr_ice_cand_pair *pair);
void nr_ice_candidate_pair_set_state(nr_ice_peer_ctx *pctx, nr_ice_cand_pair *pair, int state);
int nr_ice_candidate_pair_dump_state(nr_ice_cand_pair *pair, FILE *out);
void nr_ice_candidate_pair_dump_state(nr_ice_cand_pair *pair, int log_level);
void nr_ice_candidate_pair_cancel(nr_ice_peer_ctx *pctx,nr_ice_cand_pair *pair, int move_to_wait_state);
int nr_ice_candidate_pair_select(nr_ice_cand_pair *pair);
int nr_ice_candidate_pair_do_triggered_check(nr_ice_peer_ctx *pctx, nr_ice_cand_pair *pair);

Просмотреть файл

@ -1737,3 +1737,21 @@ int nr_ice_component_get_default_candidate(nr_ice_component *comp, nr_ice_candid
}
void nr_ice_component_dump_state(nr_ice_component *comp, int log_level)
{
nr_ice_candidate *cand;
if (comp->local_component) {
r_log(LOG_ICE,log_level,"ICE(%s)/ICE-STREAM(%s): Remote component %d in state %d - dumping candidates",comp->ctx->label,comp->stream->label,comp->component_id,comp->state);
} else {
r_log(LOG_ICE,log_level,"ICE(%s)/ICE-STREAM(%s): Local component %d - dumping candidates",comp->ctx->label,comp->stream->label,comp->component_id);
}
cand=TAILQ_FIRST(&comp->candidates);
while(cand){
r_log(LOG_ICE,log_level,"ICE(%s)/ICE-STREAM(%s)/CAND(%s): %s",comp->ctx->label,comp->stream->label,cand->codeword,cand->label);
cand=TAILQ_NEXT(cand,entry_comp);
}
}

Просмотреть файл

@ -102,6 +102,7 @@ int nr_ice_component_get_default_candidate(nr_ice_component *comp, nr_ice_candid
void nr_ice_component_consent_destroy(nr_ice_component *comp);
void nr_ice_component_refresh_consent_now(nr_ice_component *comp);
void nr_ice_component_disconnected(nr_ice_component *comp);
void nr_ice_component_dump_state(nr_ice_component *comp, int log_level);
#ifdef __cplusplus
}

Просмотреть файл

@ -383,7 +383,7 @@ static void nr_ice_media_stream_check_timer_cb(NR_SOCKET s, int h, void *cb_arg)
NR_ASYNC_TIMER_SET(timer_val,nr_ice_media_stream_check_timer_cb,cb_arg,&stream->timer);
}
else {
r_log(LOG_ICE,LOG_WARNING,"ICE-PEER(%s): no pairs for %s",stream->pctx->label,stream->label);
r_log(LOG_ICE,LOG_INFO,"ICE-PEER(%s): no FROZEN/WAITING pairs for %s",stream->pctx->label,stream->label);
}
_status=0;
@ -557,28 +557,36 @@ int nr_ice_media_stream_unfreeze_pairs_foundation(nr_ice_media_stream *stream, c
str=STAILQ_NEXT(str,entry);
}
/* nr_ice_media_stream_dump_state(stream->pctx,stream,stderr); */
_status=0;
abort:
return(_status);
}
int nr_ice_media_stream_dump_state(nr_ice_peer_ctx *pctx, nr_ice_media_stream *stream,FILE *out)
void nr_ice_media_stream_dump_state(nr_ice_peer_ctx *pctx, nr_ice_media_stream *stream, int log_level)
{
nr_ice_cand_pair *pair;
nr_ice_component *comp;
if(stream->local_stream){
/* stream has a corresponding local_stream */
nr_ice_media_stream_dump_state(stream->local_stream->pctx,stream->local_stream, log_level);
r_log(LOG_ICE,log_level,"ICE-PEER(%s)/STREAM(%s): state dump", stream->pctx->label, stream->label);
} else {
r_log(LOG_ICE,log_level,"ICE(%s)/STREAM(%s): state dump", stream->ctx->label, stream->label);
}
/* r_log(LOG_ICE,LOG_DEBUG,"MEDIA-STREAM(%s): state dump", stream->label); */
pair=TAILQ_FIRST(&stream->check_list);
while(pair){
nr_ice_candidate_pair_dump_state(pair,out);
nr_ice_candidate_pair_dump_state(pair, log_level);
pair=TAILQ_NEXT(pair,check_queue_entry);
}
return(0);
comp=STAILQ_FIRST(&stream->components);
while(comp){
nr_ice_component_dump_state(comp, log_level);
comp=STAILQ_NEXT(comp,entry);
}
}
int nr_ice_media_stream_set_state(nr_ice_media_stream *str, int state)
@ -604,6 +612,9 @@ int nr_ice_media_stream_set_state(nr_ice_media_stream *str, int state)
str->pctx->label, str->pctx->active_streams);
str->ice_state=state;
if (state == NR_ICE_MEDIA_STREAM_CHECKS_FAILED) {
nr_ice_media_stream_dump_state(str->pctx,str,LOG_ERR);
}
return(0);
}

Просмотреть файл

@ -93,7 +93,7 @@ int nr_ice_media_stream_start_checks(nr_ice_peer_ctx *pctx, nr_ice_media_stream
int nr_ice_media_stream_service_pre_answer_requests(nr_ice_peer_ctx *pctx,nr_ice_media_stream *lstream,nr_ice_media_stream *pstream, int *serviced);
int nr_ice_media_stream_unfreeze_pairs(nr_ice_peer_ctx *pctx, nr_ice_media_stream *stream);
int nr_ice_media_stream_unfreeze_pairs_foundation(nr_ice_media_stream *stream, char *foundation);
int nr_ice_media_stream_dump_state(nr_ice_peer_ctx *pctx, nr_ice_media_stream *stream,FILE *out);
void nr_ice_media_stream_dump_state(nr_ice_peer_ctx *pctx, nr_ice_media_stream *stream, int log_level);
void nr_ice_media_stream_component_nominated(nr_ice_media_stream *stream,nr_ice_component *component);
void nr_ice_media_stream_component_failed(nr_ice_media_stream *stream,nr_ice_component *component);
void nr_ice_media_stream_refresh_consent_all(nr_ice_media_stream *stream);

Просмотреть файл

@ -626,28 +626,18 @@ void nr_ice_peer_ctx_stream_started_checks(nr_ice_peer_ctx *pctx, nr_ice_media_s
}
}
#ifndef NDEBUG
int nr_ice_peer_ctx_dump_state(nr_ice_peer_ctx *pctx,FILE *out)
void nr_ice_peer_ctx_dump_state(nr_ice_peer_ctx *pctx, int log_level)
{
int r,_status;
nr_ice_media_stream *stream;
fprintf(out,"PEER %s STATE DUMP\n",pctx->label);
fprintf(out,"==========================================\n");
r_log(LOG_ICE,log_level,"PEER %s STATE DUMP",pctx->label);
r_log(LOG_ICE,log_level,"==========================================");
stream=STAILQ_FIRST(&pctx->peer_streams);
while(stream){
if(r=nr_ice_media_stream_dump_state(pctx,stream,out))
ABORT(r);
stream=STAILQ_NEXT(stream,entry);
nr_ice_media_stream_dump_state(pctx,stream,log_level);
}
fprintf(out,"==========================================\n");
_status=0;
abort:
return(_status);
r_log(LOG_ICE,log_level,"==========================================");
}
#endif
void nr_ice_peer_ctx_refresh_consent_all_streams(nr_ice_peer_ctx *pctx)
{

Просмотреть файл

@ -85,7 +85,7 @@ void nr_ice_peer_ctx_refresh_consent_all_streams(nr_ice_peer_ctx *pctx);
void nr_ice_peer_ctx_disconnect_all_streams(nr_ice_peer_ctx *pctx);
void nr_ice_peer_ctx_disconnected(nr_ice_peer_ctx *pctx);
void nr_ice_peer_ctx_connected(nr_ice_peer_ctx *pctx);
int nr_ice_peer_ctx_dump_state(nr_ice_peer_ctx *pctx,FILE *out);
void nr_ice_peer_ctx_dump_state(nr_ice_peer_ctx *pctx, int log_level);
int nr_ice_peer_ctx_log_state(nr_ice_peer_ctx *pctx);
void nr_ice_peer_ctx_check_if_connected(nr_ice_peer_ctx *pctx);
int nr_ice_peer_ctx_find_component(nr_ice_peer_ctx *pctx, nr_ice_media_stream *str, int component_id, nr_ice_component **compp);