report non-codec capabilities in 'sip debug' properly (bug #3960)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@5416 f38db490-d61c-443f-a65b-d21fe96a405b
This commit is contained in:
parent
4c012d7a1f
commit
899e2d0fe0
3 changed files with 29 additions and 5 deletions
|
@ -3012,9 +3012,9 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req)
|
|||
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_rtp_lookup_mime_multiple(s1, slen, noncodeccapability, 0),
|
||||
ast_rtp_lookup_mime_multiple(s2, slen, peernoncodeccapability, 0),
|
||||
ast_rtp_lookup_mime_multiple(s3, slen, p->noncodeccapability, 0));
|
||||
}
|
||||
if (!p->jointcapability) {
|
||||
ast_log(LOG_NOTICE, "No compatible codecs!\n");
|
||||
|
|
|
@ -104,6 +104,9 @@ void ast_rtp_get_current_formats(struct ast_rtp* rtp,
|
|||
/* Mapping an Asterisk code into a MIME subtype (string): */
|
||||
char* ast_rtp_lookup_mime_subtype(int isAstFormat, int code);
|
||||
|
||||
/* Build a string of MIME subtype names from a capability list */
|
||||
char *ast_rtp_lookup_mime_multiple(char *buf, int size, const int capability, const int isAstFormat);
|
||||
|
||||
void ast_rtp_setnat(struct ast_rtp *rtp, int nat);
|
||||
|
||||
int ast_rtp_bridge(struct ast_channel *c0, struct ast_channel *c1, int flags, struct ast_frame **fo, struct ast_channel **rc);
|
||||
|
|
25
rtp.c
25
rtp.c
|
@ -805,7 +805,7 @@ struct rtpPayloadType ast_rtp_lookup_pt(struct ast_rtp* rtp, int pt)
|
|||
}
|
||||
|
||||
/* Looks up an RTP code out of our *static* outbound list */
|
||||
int ast_rtp_lookup_code(struct ast_rtp* rtp, int isAstFormat, int code) {
|
||||
int ast_rtp_lookup_code(struct ast_rtp* rtp, const int isAstFormat, const int code) {
|
||||
|
||||
int pt;
|
||||
|
||||
|
@ -838,7 +838,7 @@ int ast_rtp_lookup_code(struct ast_rtp* rtp, int isAstFormat, int code) {
|
|||
return -1;
|
||||
}
|
||||
|
||||
char* ast_rtp_lookup_mime_subtype(int isAstFormat, int code) {
|
||||
char* ast_rtp_lookup_mime_subtype(const int isAstFormat, const int code) {
|
||||
|
||||
int i;
|
||||
|
||||
|
@ -850,6 +850,27 @@ char* ast_rtp_lookup_mime_subtype(int isAstFormat, int code) {
|
|||
return "";
|
||||
}
|
||||
|
||||
char *ast_rtp_lookup_mime_multiple(char *buf, int size, const int capability, const int isAstFormat)
|
||||
{
|
||||
int format;
|
||||
|
||||
if (!buf || !size)
|
||||
return NULL;
|
||||
|
||||
snprintf(buf, size, "0x%x (", capability);
|
||||
|
||||
for (format = 1; format < AST_RTP_MAX; format <<= 1) {
|
||||
if (capability & format) {
|
||||
const char *name = ast_rtp_lookup_mime_subtype(isAstFormat, format);
|
||||
snprintf(buf + strlen(buf), size - strlen(buf), "%s|", name);
|
||||
}
|
||||
}
|
||||
if (!ast_strlen_zero(buf))
|
||||
buf[strlen(buf)] = ')';
|
||||
|
||||
return buf;
|
||||
}
|
||||
|
||||
static int rtp_socket(void)
|
||||
{
|
||||
int s;
|
||||
|
|
Reference in a new issue