diff --git a/daemon/log.c b/daemon/log.c index 9667591d3..90b5a0d12 100644 --- a/daemon/log.c +++ b/daemon/log.c @@ -67,6 +67,12 @@ static void ilog_prefix_default(char *prefix, size_t prefix_len) { STR_FMT_M(&log_info.u.ice_agent->media->monologue->tag), log_info.u.ice_agent->media->index); break; + case LOG_INFO_MEDIA: + snprintf(prefix, prefix_len, "[" STR_FORMAT_M "/" STR_FORMAT_M "/%u]: ", + STR_FMT_M(&log_info.u.call->callid), + STR_FMT_M(&log_info.v.media->monologue->tag), + log_info.v.media->index); + break; } } @@ -98,6 +104,12 @@ static void ilog_prefix_parsable(char *prefix, size_t prefix_len) { STR_FMT(&log_info.u.ice_agent->media->monologue->tag), log_info.u.ice_agent->media->index); break; + case LOG_INFO_MEDIA: + snprintf(prefix, prefix_len, "[ID=\""STR_FORMAT"\" tag=\""STR_FORMAT"\" index=\"%u\"]: ", + STR_FMT(&log_info.u.call->callid), + STR_FMT(&log_info.v.media->monologue->tag), + log_info.v.media->index); + break; } } @@ -142,6 +154,7 @@ int get_local_log_level(unsigned int subsystem_idx) { switch (log_info.e) { case LOG_INFO_CALL: + case LOG_INFO_MEDIA: call = log_info.u.call; break; case LOG_INFO_STREAM_FD: diff --git a/daemon/log.h b/daemon/log.h index 5f9d5263a..78fcfa4e6 100644 --- a/daemon/log.h +++ b/daemon/log.h @@ -21,6 +21,9 @@ struct log_info { struct ice_agent *ice_agent; void *ptr; } u; + union { + struct call_media *media; + } v; enum { LOG_INFO_NONE = 0, LOG_INFO_CALL, @@ -28,6 +31,7 @@ struct log_info { LOG_INFO_STR, LOG_INFO_C_STRING, LOG_INFO_ICE_AGENT, + LOG_INFO_MEDIA, } e; }; diff --git a/daemon/log_funcs.h b/daemon/log_funcs.h index 31d91b54c..5155e056d 100644 --- a/daemon/log_funcs.h +++ b/daemon/log_funcs.h @@ -13,6 +13,7 @@ INLINE void __log_info_release(struct log_info *li) { case LOG_INFO_NONE: return; case LOG_INFO_CALL: + case LOG_INFO_MEDIA: obj_put(li->u.call); break; case LOG_INFO_STREAM_FD: @@ -105,6 +106,16 @@ INLINE void log_info_ice_agent(struct ice_agent *ag) { log_info.e = LOG_INFO_ICE_AGENT; log_info.u.ice_agent = obj_get(&ag->tt_obj); } +INLINE void log_info_media(struct call_media *m) { + if (!m) + return; + if (!m->call) + return; + __log_info_push(); + log_info.e = LOG_INFO_MEDIA; + log_info.u.call = obj_get(m->call); + log_info.v.media = m; +} diff --git a/t/log_funcs.h b/t/log_funcs.h index d1444f007..334a5782a 100644 --- a/t/log_funcs.h +++ b/t/log_funcs.h @@ -7,6 +7,7 @@ struct call; struct stream_fd; struct ice_agent; +struct call_media; INLINE void log_info_reset(void) { } @@ -24,5 +25,7 @@ INLINE void log_info_c_string(const char *s) { } INLINE void log_info_ice_agent(struct ice_agent *ag) { } +INLINE void log_info_media(struct call_media *m) { +} #endif