<p>Pau Espin Pedrol has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/14210">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">sgsn: Fix echo timer not started upon first pdp ctx created<br><br>Commit 176a4d2f33865a5c0433f8679f5e68f209d7b874 moved echo timer related<br>code to its own function but did some mistakes when moving the logic<br>from several places into its own function. As a result, echo timer was<br>only enabled after the 2nd pdp ctx was created, instead of the expected<br>1st.<br>First, let's be consistent and always call the function *after* changing<br>state, since that's what the function expects. This fixes the issue.<br><br>Finally make the logic in the function more intuitive by checking in the<br>if clause the only case where actually the echo timer should be enabled:<br>Only if policy specifies so and we have at least 1 pdp ctx against that ggsn.<br><br>Fixes: 176a4d2f33865a5c0433f8679f5e68f209d7b874<br>Change-Id: I826030978edb61ea5a172c2b72f63758206a6246<br>---<br>M src/gprs/gprs_sgsn.c<br>1 file changed, 9 insertions(+), 7 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-sgsn refs/changes/10/14210/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/gprs/gprs_sgsn.c b/src/gprs/gprs_sgsn.c</span><br><span>index 01f039a..f725811 100644</span><br><span>--- a/src/gprs/gprs_sgsn.c</span><br><span>+++ b/src/gprs/gprs_sgsn.c</span><br><span>@@ -492,12 +492,15 @@</span><br><span> </span><br><span> void sgsn_ggsn_ctx_check_echo_timer(struct sgsn_ggsn_ctx *ggc)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-        if (llist_empty(&ggc->pdp_list) || ggc->echo_interval <= 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-              if (osmo_timer_pending(&ggc->echo_timer))</span><br><span style="color: hsl(0, 100%, 40%);">-                        osmo_timer_del(&ggc->echo_timer);</span><br><span style="color: hsl(0, 100%, 40%);">-        } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                if (!osmo_timer_pending(&ggc->echo_timer))</span><br><span style="color: hsl(120, 100%, 40%);">+     bool pending = osmo_timer_pending(&ggc->echo_timer);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Only enable if allowed by policy and at least 1 pdp ctx exists against ggsn */</span><br><span style="color: hsl(120, 100%, 40%);">+     if (!llist_empty(&ggc->pdp_list) && ggc->echo_interval > 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+            if (!pending)</span><br><span>                        osmo_timer_schedule(&ggc->echo_timer, ggc->echo_interval, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+       } else {</span><br><span style="color: hsl(120, 100%, 40%);">+              if (pending)</span><br><span style="color: hsl(120, 100%, 40%);">+                  osmo_timer_del(&ggc->echo_timer);</span><br><span>     }</span><br><span> }</span><br><span> </span><br><span>@@ -754,9 +757,8 @@</span><br><span> </span><br><span> void sgsn_ggsn_ctx_add_pdp(struct sgsn_ggsn_ctx *ggc, struct sgsn_pdp_ctx *pdp)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    sgsn_ggsn_ctx_check_echo_timer(ggc);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>         llist_add(&pdp->ggsn_list, &ggc->pdp_list);</span><br><span style="color: hsl(120, 100%, 40%);">+     sgsn_ggsn_ctx_check_echo_timer(ggc);</span><br><span> }</span><br><span> void sgsn_ggsn_ctx_remove_pdp(struct sgsn_ggsn_ctx *ggc, struct sgsn_pdp_ctx *pdp)</span><br><span> {</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/14210">change 14210</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/14210"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-sgsn </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I826030978edb61ea5a172c2b72f63758206a6246 </div>
<div style="display:none"> Gerrit-Change-Number: 14210 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Pau Espin Pedrol <pespin@sysmocom.de> </div>