--- chan_sip.c 2004-11-30 19:25:46.000000000 -0500 +++ chan_sip.c_nonformat 2004-11-30 20:04:06.000000000 -0500 @@ -569,6 +569,35 @@ static int sip_do_reload(void); +char* ast_getnonformatname(int); +char* ast_getnonformatname_multiple(char* buf, unsigned n, int format); + +char* ast_getnonformatname(int format) +{ + switch (format) { + case AST_RTP_DTMF: return "DTMF"; + case AST_RTP_CN: return "Comfort Noise"; + case AST_RTP_CISCO_DTMF: return "CISCO-DTMF"; + default: return "UNKN"; + }; +} + +char* ast_getnonformatname_multiple(char* buf, unsigned n, int format) { + unsigned len, u, empty; + if (!n) return buf; + empty = len = snprintf(buf, n, "0x%x(", format); + for (u = 1; u < 1<<31 && len < n; u<<=1) { + if (u&format) + len += snprintf(buf + len, n - len, "%s|", ast_getnonformatname(u)); + } + if (len > empty) + buf[len-1] =')'; + else + snprintf(buf + len, n - len, "none)"); + return buf; +} + + /*--- sip_debug_test_addr: See if we pass debug IP filter */ static inline int sip_debug_test_addr(struct sockaddr_in *addr) { @@ -2780,9 +2809,9 @@ ast_getformatname_multiple(s4, slen, p->jointcapability)); ast_verbose("Non-codec capabilities: us - %s, peer - %s, combined - %s\n", - ast_getformatname_multiple(s1, slen, noncodeccapability), - ast_getformatname_multiple(s2, slen, peernoncodeccapability), - ast_getformatname_multiple(s3, slen, p->noncodeccapability)); + ast_getnonformatname_multiple(s1, slen, noncodeccapability), + ast_getnonformatname_multiple(s2, slen, peernoncodeccapability), + ast_getnonformatname_multiple(s3, slen, p->noncodeccapability)); } if (!p->jointcapability) { ast_log(LOG_WARNING, "No compatible codecs!\n"); @@ -3473,7 +3502,7 @@ for (x = 1; x <= AST_RTP_MAX; x <<= 1) { if (p->noncodeccapability & x) { if (debug) - ast_verbose("Answering with non-codec capability 0x%x(%s)\n", x, ast_getformatname(x)); + ast_verbose("Answering with non-codec capability 0x%x(%s)\n", x, ast_getnonformatname(x)); codec = ast_rtp_lookup_code(p->rtp, 0, x); if (codec > -1) { snprintf(costr, sizeof(costr), " %d", codec);