From e8278315146e8567bdc15c091297ccf65ba5aa11 Mon Sep 17 00:00:00 2001 From: Neels Hofmeyr Date: Thu, 19 Sep 2019 03:06:46 +0200 Subject: [PATCH] accept MGCP without SDP SDP is an optional part of MGCP messages. Do not fail when there is no SDP part. Practically this is useful to compose simpler MGCP responses from TTCN3 tests. osmo-mgw itself always includes SDP, so there is no real impact on operating libosmo-mgcp-client with osmo-mgw from osmo-bsc or osmo-msc. Change-Id: I608001626459ea72415fb142f857550bbb90c683 --- src/libosmo-mgcp-client/mgcp_client.c | 5 ++--- tests/mgcp_client/mgcp_client_test.c | 8 ++++---- tests/mgcp_client/mgcp_client_test.err | 20 ++++++++++++-------- 3 files changed, 18 insertions(+), 15 deletions(-) diff --git a/src/libosmo-mgcp-client/mgcp_client.c b/src/libosmo-mgcp-client/mgcp_client.c index 5823e2bab..a65cd6191 100644 --- a/src/libosmo-mgcp-client/mgcp_client.c +++ b/src/libosmo-mgcp-client/mgcp_client.c @@ -466,9 +466,8 @@ int mgcp_response_parse_params(struct mgcp_response *r) /* Find beginning of the parameter (SDP) section */ data_ptr = mgcp_find_section_end(data); if (!data_ptr) { - LOGP(DLMGCP, LOGL_ERROR, - "MGCP response: cannot find start of SDP parameters\n"); - rc = -EINVAL; + LOGP(DLMGCP, LOGL_DEBUG, "MGCP response contains no SDP parameters\n"); + rc = 0; goto exit; } diff --git a/tests/mgcp_client/mgcp_client_test.c b/tests/mgcp_client/mgcp_client_test.c index 9c4392f7d..d2e34a646 100644 --- a/tests/mgcp_client/mgcp_client_test.c +++ b/tests/mgcp_client/mgcp_client_test.c @@ -360,7 +360,7 @@ struct sdp_section_start_test { static struct sdp_section_start_test sdp_section_start_tests[] = { { .body = "", - .expect_rc = -EINVAL, + .expect_rc = 0, }, { .body = "\n\n", @@ -399,19 +399,19 @@ static struct sdp_section_start_test sdp_section_start_tests[] = { .body = "some mgcp header data\r\nand header params" "\n\r\n" "m=audio 23\r\n", - .expect_rc = -EINVAL, + .expect_rc = 0, }, { .body = "some mgcp header data\r\nand header params" "\r\n\r" "m=audio 23\r\n", - .expect_rc = -EINVAL, + .expect_rc = 0, }, { .body = "some mgcp header data\r\nand header params" "\n\r\r" "m=audio 23\r\n", - .expect_rc = -EINVAL, + .expect_rc = 0, }, }; diff --git a/tests/mgcp_client/mgcp_client_test.err b/tests/mgcp_client/mgcp_client_test.err index 627b2d938..fbcf8f6cd 100644 --- a/tests/mgcp_client/mgcp_client_test.err +++ b/tests/mgcp_client/mgcp_client_test.err @@ -17,8 +17,9 @@ test_mgcp_client_cancel() done test_sdp_section_start() test [0]: body: "" -DLMGCP MGCP response: cannot find start of SDP parameters -got rc=-22 +DLMGCP MGCP response contains no SDP parameters +got rc=0 +got audio_port=0 test_sdp_section_start() test [1]: body: "\n\n" @@ -52,18 +53,21 @@ got audio_port=23 test_sdp_section_start() test [7]: body: "some mgcp header data\r\nand header params\n\r\nm=audio 23\r\n" -DLMGCP MGCP response: cannot find start of SDP parameters -got rc=-22 +DLMGCP MGCP response contains no SDP parameters +got rc=0 +got audio_port=0 test_sdp_section_start() test [8]: body: "some mgcp header data\r\nand header params\r\n\rm=audio 23\r\n" -DLMGCP MGCP response: cannot find start of SDP parameters -got rc=-22 +DLMGCP MGCP response contains no SDP parameters +got rc=0 +got audio_port=0 test_sdp_section_start() test [9]: body: "some mgcp header data\r\nand header params\n\r\rm=audio 23\r\n" -DLMGCP MGCP response: cannot find start of SDP parameters -got rc=-22 +DLMGCP MGCP response contains no SDP parameters +got rc=0 +got audio_port=0 DLMGCP ptmap contains illegal mapping: codec=113 maps to pt=2 DLMGCP ptmap contains illegal mapping: codec=0 maps to pt=100 DLMGCP ptmap contains illegal mapping: codec=113 maps to pt=2