<p>keith <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-sip-connector/+/14993">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  laforge: Looks good to me, but someone else must approve
  pespin: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Add media mode parameter to sdp_create_file()<br><br>This enables call hold implemented by subsequent commits<br><br>Prior to this commit, osmo-sip-connector would not send<br>any media mode attribute in the sdp. After this commit<br>we will by default always include a=sendrecv.<br><br>Given that a media mode attribute of "sendrecv" is default<br>and implicit it its absense, this does not represent any<br>functional change.<br><br>Change-Id: Ib4212d0174955042e7d80d3744ce632a4942ccb2<br>---<br>M src/sdp.c<br>M src/sdp.h<br>M src/sip.c<br>3 files changed, 29 insertions(+), 6 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/sdp.c b/src/sdp.c</span><br><span>index 17eb577..9bb55d4 100644</span><br><span>--- a/src/sdp.c</span><br><span>+++ b/src/sdp.c</span><br><span>@@ -163,16 +163,35 @@</span><br><span>   return true;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-char *sdp_create_file(struct sip_call_leg *leg, struct call_leg *other)</span><br><span style="color: hsl(120, 100%, 40%);">+char *sdp_create_file(struct sip_call_leg *leg, struct call_leg *other, sdp_mode_t mode)</span><br><span> {</span><br><span>  struct in_addr net = { .s_addr = htonl(other->ip) };</span><br><span>      char *fmtp_str = NULL, *sdp;</span><br><span style="color: hsl(120, 100%, 40%);">+  char *mode_attribute;</span><br><span> </span><br><span>    leg->wanted_codec = app_media_name(other->payload_msg_type);</span><br><span> </span><br><span>       if (strcmp(leg->wanted_codec, "AMR") == 0)</span><br><span>              fmtp_str = talloc_asprintf(leg, "a=fmtp:%d octet-align=1\r\n", other->payload_type);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ switch (mode) {</span><br><span style="color: hsl(120, 100%, 40%);">+               case sdp_inactive:</span><br><span style="color: hsl(120, 100%, 40%);">+                    mode_attribute = "a=inactive\r\n";</span><br><span style="color: hsl(120, 100%, 40%);">+                  break;</span><br><span style="color: hsl(120, 100%, 40%);">+                case sdp_sendrecv:</span><br><span style="color: hsl(120, 100%, 40%);">+                    mode_attribute = "a=sendrecv\r\n";</span><br><span style="color: hsl(120, 100%, 40%);">+                  break;</span><br><span style="color: hsl(120, 100%, 40%);">+                case sdp_sendonly:</span><br><span style="color: hsl(120, 100%, 40%);">+                    mode_attribute = "a=sendonly\r\n";</span><br><span style="color: hsl(120, 100%, 40%);">+                  break;</span><br><span style="color: hsl(120, 100%, 40%);">+                case sdp_recvonly:</span><br><span style="color: hsl(120, 100%, 40%);">+                    mode_attribute = "a=recvonly\r\n";</span><br><span style="color: hsl(120, 100%, 40%);">+                  break;</span><br><span style="color: hsl(120, 100%, 40%);">+                default:</span><br><span style="color: hsl(120, 100%, 40%);">+                      OSMO_ASSERT(false);</span><br><span style="color: hsl(120, 100%, 40%);">+                   break;</span><br><span style="color: hsl(120, 100%, 40%);">+        }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>  sdp = talloc_asprintf(leg,</span><br><span>                           "v=0\r\n"</span><br><span>                          "o=Osmocom 0 0 IN IP4 %s\r\n"</span><br><span>@@ -181,12 +200,14 @@</span><br><span>                              "t=0 0\r\n"</span><br><span>                                "m=audio %d RTP/AVP %d\r\n"</span><br><span>                                "%s"</span><br><span style="color: hsl(0, 100%, 40%);">-                          "a=rtpmap:%d %s/8000\r\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                          "a=rtpmap:%d %s/8000\r\n"</span><br><span style="color: hsl(120, 100%, 40%);">+                           "%s",</span><br><span>                              inet_ntoa(net), inet_ntoa(net), /* never use diff. addr! */</span><br><span>                          other->port, other->payload_type,</span><br><span>                              fmtp_str ? fmtp_str : "",</span><br><span>                          other->payload_type,</span><br><span style="color: hsl(0, 100%, 40%);">-                         leg->wanted_codec);</span><br><span style="color: hsl(120, 100%, 40%);">+                                leg->wanted_codec,</span><br><span style="color: hsl(120, 100%, 40%);">+                         mode_attribute);</span><br><span>     talloc_free(fmtp_str);</span><br><span>       return sdp;</span><br><span> }</span><br><span>diff --git a/src/sdp.h b/src/sdp.h</span><br><span>index d716644..72ff6b7 100644</span><br><span>--- a/src/sdp.h</span><br><span>+++ b/src/sdp.h</span><br><span>@@ -1,6 +1,7 @@</span><br><span> #pragma once</span><br><span> </span><br><span> #include <sofia-sip/sip.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <sofia-sip/sdp.h></span><br><span> </span><br><span> #include <stdbool.h></span><br><span> </span><br><span>@@ -10,4 +11,4 @@</span><br><span> bool sdp_screen_sdp(const sip_t *sip);</span><br><span> bool sdp_extract_sdp(struct sip_call_leg *leg, const sip_t *sip, bool any_codec);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-char *sdp_create_file(struct sip_call_leg *, struct call_leg *);</span><br><span style="color: hsl(120, 100%, 40%);">+char *sdp_create_file(struct sip_call_leg *, struct call_leg *, sdp_mode_t mode);</span><br><span>diff --git a/src/sip.c b/src/sip.c</span><br><span>index adf20d8..21401c6 100644</span><br><span>--- a/src/sip.c</span><br><span>+++ b/src/sip.c</span><br><span>@@ -28,6 +28,7 @@</span><br><span> </span><br><span> #include <sofia-sip/sip_status.h></span><br><span> #include <sofia-sip/su_log.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <sofia-sip/sdp.h></span><br><span> </span><br><span> #include <talloc.h></span><br><span> </span><br><span>@@ -385,7 +386,7 @@</span><br><span>                return;</span><br><span>      }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   sdp = sdp_create_file(leg, other);</span><br><span style="color: hsl(120, 100%, 40%);">+    sdp = sdp_create_file(leg, other, sdp_sendrecv);</span><br><span> </span><br><span>         leg->state = SIP_CC_CONNECTED;</span><br><span>    nua_respond(leg->nua_handle, SIP_200_OK,</span><br><span>@@ -425,7 +426,7 @@</span><br><span>                            called_num,</span><br><span>                          agent->app->sip.remote_addr,</span><br><span>                           agent->app->sip.remote_port);</span><br><span style="color: hsl(0, 100%, 40%);">-     char *sdp = sdp_create_file(leg, other);</span><br><span style="color: hsl(120, 100%, 40%);">+      char *sdp = sdp_create_file(leg, other, sdp_sendrecv);</span><br><span> </span><br><span>   leg->state = SIP_CC_INITIAL;</span><br><span>      leg->dir = SIP_DIR_MT;</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-sip-connector/+/14993">change 14993</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-sip-connector/+/14993"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-sip-connector </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Ib4212d0174955042e7d80d3744ce632a4942ccb2 </div>
<div style="display:none"> Gerrit-Change-Number: 14993 </div>
<div style="display:none"> Gerrit-PatchSet: 3 </div>
<div style="display:none"> Gerrit-Owner: keith <keith@rhizomatica.org> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: keith <keith@rhizomatica.org> </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-CC: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>