summaryrefslogtreecommitdiff
path: root/pjmedia
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2006-10-16 16:43:25 +0000
committerBenny Prijono <bennylp@teluu.com>2006-10-16 16:43:25 +0000
commit79770ffce0f1240f4230a5bb96c0bb937ec21991 (patch)
tree890a2d060aafb6f8509bb6609ad6c3a5f3daefb6 /pjmedia
parent74d582d15d820c18bf0d8b0c309a0dcd0968738d (diff)
Removed colon from SDP attribute value [thanks Olivier Gournet]
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@775 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjmedia')
-rw-r--r--pjmedia/src/pjmedia/endpoint.c8
-rw-r--r--pjmedia/src/pjmedia/sdp.c56
2 files changed, 20 insertions, 44 deletions
diff --git a/pjmedia/src/pjmedia/endpoint.c b/pjmedia/src/pjmedia/endpoint.c
index 6f834ce9..4fcb4450 100644
--- a/pjmedia/src/pjmedia/endpoint.c
+++ b/pjmedia/src/pjmedia/endpoint.c
@@ -340,7 +340,7 @@ PJ_DEF(pj_status_t) pjmedia_endpt_create_sdp( pjmedia_endpt *endpt,
attr->value.ptr = pj_pool_alloc(pool, 80);
attr->value.slen =
pj_ansi_snprintf(attr->value.ptr, 80,
- ":%u IN IP4 %s",
+ "%u IN IP4 %s",
pj_ntohs(sock_info[0].rtcp_addr_name.sin_port),
pj_inet_ntoa(sock_info[0].rtcp_addr_name.sin_addr));
pjmedia_sdp_attr_add(&m->attr_count, m->attr, attr);
@@ -403,7 +403,7 @@ PJ_DEF(pj_status_t) pjmedia_endpt_create_sdp( pjmedia_endpt *endpt,
attr->value.ptr = pj_pool_alloc(pool, 32);
attr->value.slen =
pj_ansi_snprintf( attr->value.ptr, 32,
- ":%d mode=%d",
+ "%d mode=%d",
codec_info->pt,
codec_param.setting.dec_fmtp_mode);
m->attr[m->attr_count++] = attr;
@@ -427,14 +427,14 @@ PJ_DEF(pj_status_t) pjmedia_endpt_create_sdp( pjmedia_endpt *endpt,
/* Add rtpmap. */
attr = pj_pool_zalloc(pool, sizeof(pjmedia_sdp_attr));
attr->name = pj_str("rtpmap");
- attr->value = pj_str(":" PJMEDIA_RTP_PT_TELEPHONE_EVENTS_STR
+ attr->value = pj_str(PJMEDIA_RTP_PT_TELEPHONE_EVENTS_STR
" telephone-event/8000");
m->attr[m->attr_count++] = attr;
/* Add fmtp */
attr = pj_pool_zalloc(pool, sizeof(pjmedia_sdp_attr));
attr->name = pj_str("fmtp");
- attr->value = pj_str(":" PJMEDIA_RTP_PT_TELEPHONE_EVENTS_STR " 0-15");
+ attr->value = pj_str(PJMEDIA_RTP_PT_TELEPHONE_EVENTS_STR " 0-15");
m->attr[m->attr_count++] = attr;
#endif
diff --git a/pjmedia/src/pjmedia/sdp.c b/pjmedia/src/pjmedia/sdp.c
index 0820b514..211838d5 100644
--- a/pjmedia/src/pjmedia/sdp.c
+++ b/pjmedia/src/pjmedia/sdp.c
@@ -137,29 +137,14 @@ pjmedia_sdp_attr_find (unsigned count,
const pj_str_t *name,
const pj_str_t *c_fmt)
{
- char fmtbuf[16];
- pj_str_t fmt = { NULL, 0};
unsigned i;
- if (c_fmt) {
- /* To search the format, we prepend the string with a colon and
- * append space
- */
- PJ_ASSERT_RETURN(c_fmt->slen<sizeof(fmtbuf)-2, NULL);
- fmt.ptr = fmtbuf;
- fmt.slen = c_fmt->slen + 2;
- fmtbuf[0] = ':';
- pj_memcpy(fmt.ptr+1, c_fmt->ptr, c_fmt->slen);
- fmtbuf[c_fmt->slen+1] = ' ';
-
- }
-
for (i=0; i<count; ++i) {
if (pj_strcmp(&attr_array[i]->name, name) == 0) {
const pjmedia_sdp_attr *a = attr_array[i];
if (c_fmt) {
- if (a->value.slen > fmt.slen &&
- pj_strncmp(&a->value, &fmt, fmt.slen)==0)
+ if (a->value.slen > c_fmt->slen &&
+ pj_strncmp(&a->value, c_fmt, c_fmt->slen)==0)
{
return (pjmedia_sdp_attr*)a;
}
@@ -289,12 +274,6 @@ PJ_DEF(pj_status_t) pjmedia_sdp_attr_get_rtpmap( const pjmedia_sdp_attr *attr,
/* Parse */
PJ_TRY {
- /* Eat the first ':' */
- if (pj_scan_get_char(&scanner) != ':') {
- status = PJMEDIA_SDP_EINRTPMAP;
- goto on_return;
- }
-
/* Get payload type. */
pj_scan_get(&scanner, &cs_token, &rtpmap->pt);
@@ -352,12 +331,6 @@ PJ_DEF(pj_status_t) pjmedia_sdp_attr_get_fmtp( const pjmedia_sdp_attr *attr,
* a=fmtp:<format> <format specific parameter>
*/
- /* Eat the first ':' */
- if (*p != ':') return PJMEDIA_SDP_EINFMTP;
-
- /* Get ':' */
- ++p;
-
/* Get format. */
token.ptr = (char*)p;
while (pj_isdigit(*p) && p!=end)
@@ -405,13 +378,6 @@ PJ_DEF(pj_status_t) pjmedia_sdp_attr_get_rtcp(const pjmedia_sdp_attr *attr,
/* Parse */
PJ_TRY {
- /* Get the first ":" */
- if (pj_scan_get_char(&scanner) != ':')
- {
- status = PJMEDIA_SDP_EINRTCP;
- goto on_return;
- }
-
/* Get the port */
pj_scan_get(&scanner, &cs_token, &token);
rtcp->port = pj_strtoul(&token);
@@ -438,7 +404,6 @@ PJ_DEF(pj_status_t) pjmedia_sdp_attr_get_rtcp(const pjmedia_sdp_attr *attr,
}
PJ_END;
-on_return:
pj_scan_fini(&scanner);
return status;
}
@@ -463,7 +428,7 @@ PJ_DEF(pj_status_t) pjmedia_sdp_rtpmap_to_attr(pj_pool_t *pool,
pjmedia_sdp_attr **p_attr)
{
pjmedia_sdp_attr *attr;
- char tempbuf[64];
+ char tempbuf[128];
int len;
/* Check arguments. */
@@ -482,7 +447,7 @@ PJ_DEF(pj_status_t) pjmedia_sdp_rtpmap_to_attr(pj_pool_t *pool,
/* Format: ":pt enc_name/clock_rate[/param]" */
len = pj_ansi_snprintf(tempbuf, sizeof(tempbuf),
- ":%.*s %.*s/%u%s%.*s",
+ "%.*s %.*s/%u%s%.*s",
(int)rtpmap->pt.slen,
rtpmap->pt.ptr,
(int)rtpmap->enc_name.slen,
@@ -550,6 +515,7 @@ static pj_ssize_t print_attr(const pjmedia_sdp_attr *attr,
if (attr->value.slen) {
+ *p++ = ':';
pj_memcpy(p, attr->value.ptr, attr->value.slen);
p += attr->value.slen;
}
@@ -1007,8 +973,18 @@ static pjmedia_sdp_attr *parse_attr( pj_pool_t *pool, pj_scanner *scanner,
pj_scan_get(scanner, &cs_token, &attr->name);
if (*scanner->curptr != '\r' && *scanner->curptr != '\n') {
+ /* skip ':' if present. */
+ if (*scanner->curptr == ':')
+ pj_scan_get_char(scanner);
+
/* get value */
- pj_scan_get_until_ch(scanner, '\r', &attr->value);
+ if (*scanner->curptr != '\r') {
+ pj_scan_get_until_ch(scanner, '\r', &attr->value);
+ } else {
+ attr->value.ptr = NULL;
+ attr->value.slen = 0;
+ }
+
} else {
attr->value.ptr = NULL;
attr->value.slen = 0;