<p>pespin has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-mgw/+/14590">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">mgw: Support upper-case header parameters<br><br>MGCP RFC3435 (https://tools.ietf.org/html/rfc3435) states almost all<br>text has to be handled in a case-insensitive way, except SDP parts.<br><br>Related: OS#4001<br>Change-Id: I48252415f9d0cd985ad097f334aa4c1665f52511<br>---<br>M src/libosmo-mgcp/mgcp_protocol.c<br>M tests/mgcp/mgcp_test.c<br>M tests/mgcp/mgcp_test.ok<br>3 files changed, 18 insertions(+), 20 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-mgw refs/changes/90/14590/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/libosmo-mgcp/mgcp_protocol.c b/src/libosmo-mgcp/mgcp_protocol.c</span><br><span>index 841440b..6473394 100644</span><br><span>--- a/src/libosmo-mgcp/mgcp_protocol.c</span><br><span>+++ b/src/libosmo-mgcp/mgcp_protocol.c</span><br><span>@@ -812,7 +812,7 @@</span><br><span>              if (!mgcp_check_param(endp, line))</span><br><span>                   continue;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-           switch (line[0]) {</span><br><span style="color: hsl(120, 100%, 40%);">+            switch (toupper(line[0])) {</span><br><span>          case 'L':</span><br><span>                    local_options = (const char *)line + 3;</span><br><span>                      break;</span><br><span>@@ -830,7 +830,6 @@</span><br><span>                         mode = (const char *)line + 3;</span><br><span>                       break;</span><br><span>               case 'X':</span><br><span style="color: hsl(0, 100%, 40%);">-               case 'x':</span><br><span>                    if (strncasecmp("Osmux: ", line + 2, strlen("Osmux: ")) == 0) {</span><br><span>                          /* If osmux is disabled, just skip setting it up */</span><br><span>                          if (!p->endp->cfg->osmux)</span><br><span>@@ -1089,7 +1088,7 @@</span><br><span>           if (!mgcp_check_param(endp, line))</span><br><span>                   continue;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-           switch (line[0]) {</span><br><span style="color: hsl(120, 100%, 40%);">+            switch (toupper(line[0])) {</span><br><span>          case 'C':</span><br><span>                    if (mgcp_verify_call_id(endp, line + 3) != 0) {</span><br><span>                              rate_ctr_inc(&rate_ctrs->ctr[MGCP_MDCX_FAIL_INVALID_CALLID]);</span><br><span>@@ -1114,7 +1113,6 @@</span><br><span>                         silent = strcmp("noanswer", line + 3) == 0;</span><br><span>                        break;</span><br><span>               case 'X':</span><br><span style="color: hsl(0, 100%, 40%);">-               case 'x':</span><br><span>                    if (strncasecmp("Osmux: ", line + 2, strlen("Osmux: ")) == 0) {</span><br><span>                          /* If osmux is disabled, just skip setting it up */</span><br><span>                          if (!p->endp->cfg->osmux)</span><br><span>@@ -1313,7 +1311,7 @@</span><br><span>           if (!mgcp_check_param(endp, line))</span><br><span>                   continue;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-           switch (line[0]) {</span><br><span style="color: hsl(120, 100%, 40%);">+            switch (toupper(line[0])) {</span><br><span>          case 'C':</span><br><span>                    if (mgcp_verify_call_id(endp, line + 3) != 0) {</span><br><span>                              error_code = 516;</span><br><span>@@ -1464,7 +1462,7 @@</span><br><span>    LOGP(DLMGCP, LOGL_NOTICE, "RQNT: processing request for notification ...\n");</span><br><span> </span><br><span>  for_each_line(line, p->save) {</span><br><span style="color: hsl(0, 100%, 40%);">-               switch (line[0]) {</span><br><span style="color: hsl(120, 100%, 40%);">+            switch (toupper(line[0])) {</span><br><span>          case 'S':</span><br><span>                    tone = extract_tone(line);</span><br><span>                   break;</span><br><span>diff --git a/tests/mgcp/mgcp_test.c b/tests/mgcp/mgcp_test.c</span><br><span>index ab6d0ce..c67b9d5 100644</span><br><span>--- a/tests/mgcp/mgcp_test.c</span><br><span>+++ b/tests/mgcp/mgcp_test.c</span><br><span>@@ -211,10 +211,10 @@</span><br><span> /* Test different upper/lower case in options */</span><br><span> #define MDCX4_PT4 \</span><br><span>       "MDCX 18983220 1@mgw MGCP 1.0\r\n" \</span><br><span style="color: hsl(0, 100%, 40%);">-  "M: sendrecv\r" \</span><br><span style="color: hsl(0, 100%, 40%);">-     "C: 2\r\n" \</span><br><span style="color: hsl(0, 100%, 40%);">-  "I: %s\r\n" \</span><br><span style="color: hsl(0, 100%, 40%);">- "L: A:AMR, NT:IN\r\n" \</span><br><span style="color: hsl(120, 100%, 40%);">+     "m: sendrecv\r" \</span><br><span style="color: hsl(120, 100%, 40%);">+   "c: 2\r\n" \</span><br><span style="color: hsl(120, 100%, 40%);">+        "i: %s\r\n" \</span><br><span style="color: hsl(120, 100%, 40%);">+       "l: A:AMR, NT:IN\r\n" \</span><br><span>    "\n" \</span><br><span>     "v=0\r\n" \</span><br><span>        "o=- %s 23 IN IP4 0.0.0.0\r\n" \</span><br><span>@@ -260,7 +260,7 @@</span><br><span> </span><br><span> #define CRCX \</span><br><span>       "CRCX 2 1@mgw MGCP 1.0\r\n" \</span><br><span style="color: hsl(0, 100%, 40%);">- "M: recvonly\r\n" \</span><br><span style="color: hsl(120, 100%, 40%);">+ "m: recvonly\r\n" \</span><br><span>        "C: 2\r\n" \</span><br><span>       "L: p:20\r\n" \</span><br><span>    "\r\n" \</span><br><span>diff --git a/tests/mgcp/mgcp_test.ok b/tests/mgcp/mgcp_test.ok</span><br><span>index 3929d79..08ea438 100644</span><br><span>--- a/tests/mgcp/mgcp_test.ok</span><br><span>+++ b/tests/mgcp/mgcp_test.ok</span><br><span>@@ -65,7 +65,7 @@</span><br><span> creating message from statically defined input:</span><br><span> ---------8<---------</span><br><span> CRCX 2 1@mgw MGCP 1.0 </span><br><span style="color: hsl(0, 100%, 40%);">-M: recvonly </span><br><span style="color: hsl(120, 100%, 40%);">+m: recvonly </span><br><span> C: 2 </span><br><span> L: p:20 </span><br><span> </span><br><span>@@ -197,9 +197,9 @@</span><br><span> creating message from statically defined input:</span><br><span> ---------8<---------</span><br><span> MDCX 18983220 1@mgw MGCP 1.0 </span><br><span style="color: hsl(0, 100%, 40%);">-M: sendrecv C: 2 </span><br><span style="color: hsl(0, 100%, 40%);">-I: %s </span><br><span style="color: hsl(0, 100%, 40%);">-L: A:AMR, NT:IN </span><br><span style="color: hsl(120, 100%, 40%);">+m: sendrecv c: 2 </span><br><span style="color: hsl(120, 100%, 40%);">+i: %s </span><br><span style="color: hsl(120, 100%, 40%);">+l: A:AMR, NT:IN </span><br><span> </span><br><span> v=0 </span><br><span> o=- %s 23 IN IP4 0.0.0.0 </span><br><span>@@ -383,7 +383,7 @@</span><br><span> creating message from statically defined input:</span><br><span> ---------8<---------</span><br><span> CRCX 2 1@mgw MGCP 1.0 </span><br><span style="color: hsl(0, 100%, 40%);">-M: recvonly </span><br><span style="color: hsl(120, 100%, 40%);">+m: recvonly </span><br><span> C: 2 </span><br><span> L: p:20 </span><br><span> </span><br><span>@@ -508,7 +508,7 @@</span><br><span> creating message from statically defined input:</span><br><span> ---------8<---------</span><br><span> CRCX 2 1@mgw MGCP 1.0 </span><br><span style="color: hsl(0, 100%, 40%);">-M: recvonly </span><br><span style="color: hsl(120, 100%, 40%);">+m: recvonly </span><br><span> C: 2 </span><br><span> L: p:20 </span><br><span> </span><br><span>@@ -526,7 +526,7 @@</span><br><span> creating message from statically defined input:</span><br><span> ---------8<---------</span><br><span> CRCX 2 1@mgw MGCP 1.0 </span><br><span style="color: hsl(0, 100%, 40%);">-M: recvonly </span><br><span style="color: hsl(120, 100%, 40%);">+m: recvonly </span><br><span> C: 2 </span><br><span> L: p:20 </span><br><span> </span><br><span>@@ -638,7 +638,7 @@</span><br><span> creating message from statically defined input:</span><br><span> ---------8<---------</span><br><span> CRCX 2 1@mgw MGCP 1.0 </span><br><span style="color: hsl(0, 100%, 40%);">-M: recvonly </span><br><span style="color: hsl(120, 100%, 40%);">+m: recvonly </span><br><span> C: 2 </span><br><span> L: p:20 </span><br><span> </span><br><span>@@ -1189,7 +1189,7 @@</span><br><span> creating message from statically defined input:</span><br><span> ---------8<---------</span><br><span> CRCX 2 1@mgw MGCP 1.0 </span><br><span style="color: hsl(0, 100%, 40%);">-M: recvonly </span><br><span style="color: hsl(120, 100%, 40%);">+m: recvonly </span><br><span> C: 2 </span><br><span> L: p:20 </span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-mgw/+/14590">change 14590</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-mgw/+/14590"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-mgw </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I48252415f9d0cd985ad097f334aa4c1665f52511 </div>
<div style="display:none"> Gerrit-Change-Number: 14590 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>