mgcp: Avoid crashing when rtpmap is not complete
The NAT sends an incomplete SDP file for the purpose of informing the BSC about the remote IP/PORT early. The case of an incomplete SDP file was not considered. Check if there is a codec and if not skip it. TODO: We need to have a better end-point life cycle test.
This commit is contained in:
parent
a334e90ddf
commit
d17bc7b3a8
|
@ -159,6 +159,9 @@ int is_codec_compatible(struct mgcp_endpoint *endp, struct sdp_rtp_map *codec)
|
|||
char *bts_codec;
|
||||
char audio_codec[64];
|
||||
|
||||
if (!codec->codec_name)
|
||||
return 0;
|
||||
|
||||
/*
|
||||
* GSM, GSM/8000 and GSM/8000/1 should all be compatible.. let's go
|
||||
* by name first.
|
||||
|
|
|
@ -350,7 +350,7 @@ static void test_strline(void)
|
|||
"v=0\r\n" \
|
||||
"o=- 1439038275 1439038275 IN IP4 192.168.181.247\r\n" \
|
||||
"s=-\r\nc=IN IP4 192.168.181.247\r\n" \
|
||||
"t=0 0\r\nm=audio 29084 RTP/AVP 0 8 3 18 4 96 97 101\r\n" \
|
||||
"t=0 0\r\nm=audio 29084 RTP/AVP 255 0 8 3 18 4 96 97 101\r\n" \
|
||||
"a=rtpmap:0 PCMU/8000\r\n" \
|
||||
"a=rtpmap:8 PCMA/8000\r\n" \
|
||||
"a=rtpmap:3 gsm/8000\r\n" \
|
||||
|
@ -1068,8 +1068,8 @@ static void test_multilple_codec(void)
|
|||
|
||||
OSMO_ASSERT(last_endpoint == 5);
|
||||
endp = &cfg->trunk.endpoints[last_endpoint];
|
||||
OSMO_ASSERT(endp->net_end.codec.payload_type == 0);
|
||||
OSMO_ASSERT(endp->net_end.alt_codec.payload_type == 8);
|
||||
OSMO_ASSERT(endp->net_end.codec.payload_type == 255);
|
||||
OSMO_ASSERT(endp->net_end.alt_codec.payload_type == 0);
|
||||
|
||||
talloc_free(cfg);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue