Index: main/format_cap.c =================================================================== --- main/format_cap.c (revision 385594) +++ main/format_cap.c (working copy) @@ -161,6 +161,9 @@ void ast_format_cap_append(struct ast_format_cap *dst, const struct ast_format_cap *src) { + if (!src || !src->formats) { + return; + } ao2_callback(src->formats, OBJ_NODATA, append_cb, dst); } Index: channels/chan_sip.c =================================================================== --- channels/chan_sip.c (revision 385594) +++ channels/chan_sip.c (working copy) @@ -32646,7 +32657,12 @@ static void sip_get_codec(struct ast_channel *chan, struct ast_format_cap *result) { struct sip_pvt *p = ast_channel_tech_pvt(chan); - ast_format_cap_append(result, ast_format_cap_is_empty(p->peercaps) ? p->caps : p->peercaps); + + if (!ast_format_cap_is_empty(p->peercaps)) { + ast_format_cap_append(result, p->peercaps); + } else if (!ast_format_cap_is_empty(p->caps)) { + ast_format_cap_append(result, p->caps); + } } static struct ast_rtp_glue sip_rtp_glue = {