MCPcopy Create free account
hub / github.com/OpenSIPS/opensips / extract_mediainfo

Function extract_mediainfo

modules/rtpproxy/rtpproxy.c:1708–1794  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1706
1707
1708static int
1709extract_mediainfo(str *body, str *mediaport, str *payload_types)
1710{
1711 char *cp, *cp1;
1712 int len, i;
1713 str ptype;
1714
1715 cp1 = NULL;
1716 for (cp = body->s; (len = body->s + body->len - cp) > 0;) {
1717 cp1 = l_memmem(cp, "m=", len, 2);
1718 if (cp1 == NULL || cp1[-1] == '\n' || cp1[-1] == '\r')
1719 break;
1720 cp = cp1 + 2;
1721 }
1722 if (cp1 == NULL) {
1723 LM_ERR("no `m=' in SDP\n");
1724 return -1;
1725 }
1726 mediaport->s = cp1 + 2; /* skip `m=' */
1727 mediaport->len = eat_line(mediaport->s, body->s + body->len -
1728 mediaport->s) - mediaport->s;
1729 trim_len(mediaport->len, mediaport->s, *mediaport);
1730
1731 /* Skip media supertype and spaces after it */
1732 cp = eat_token_end(mediaport->s, mediaport->s + mediaport->len);
1733 mediaport->len -= cp - mediaport->s;
1734 if (mediaport->len <= 0 || cp == mediaport->s) {
1735 LM_ERR("no port in `m='\n");
1736 return -1;
1737 }
1738 mediaport->s = cp;
1739 cp = eat_space_end(mediaport->s, mediaport->s + mediaport->len);
1740 mediaport->len -= cp - mediaport->s;
1741 if (mediaport->len <= 0 || cp == mediaport->s) {
1742 LM_ERR("no port in `m='\n");
1743 return -1;
1744 }
1745 /* Extract port */
1746 mediaport->s = cp;
1747 cp = eat_token_end(mediaport->s, mediaport->s + mediaport->len);
1748 ptype.len = mediaport->len - (cp - mediaport->s);
1749 if (ptype.len <= 0 || cp == mediaport->s) {
1750 LM_ERR("no port in `m='\n");
1751 return -1;
1752 }
1753 ptype.s = cp;
1754 mediaport->len = cp - mediaport->s;
1755 /* Skip spaces after port */
1756 cp = eat_space_end(ptype.s, ptype.s + ptype.len);
1757 ptype.len -= cp - ptype.s;
1758 if (ptype.len <= 0 || cp == ptype.s) {
1759 LM_ERR("no protocol type in `m='\n");
1760 return -1;
1761 }
1762 /* Extract protocol type */
1763 ptype.s = cp;
1764 cp = eat_token_end(ptype.s, ptype.s + ptype.len);
1765 if (cp == ptype.s) {

Callers 1

rtpproxy_offer_answerFunction · 0.85

Calls 4

l_memmemFunction · 0.85
eat_lineFunction · 0.85
eat_token_endFunction · 0.85
eat_space_endFunction · 0.85

Tested by

no test coverage detected