<p>Vadim Yanitskiy has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/13631">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">libmsc/db.c: get rid of hard-coded SMS expiry threshold<br><br>Change-Id: I0ce6b1ab50986dc69a2be4ea62b6a24c7f3f8f0a<br>---<br>M src/libmsc/db.c<br>M tests/db_sms/db_sms_test.err<br>2 files changed, 12 insertions(+), 19 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/31/13631/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/libmsc/db.c b/src/libmsc/db.c</span><br><span>index 3f9a9bd..b4150fb 100644</span><br><span>--- a/src/libmsc/db.c</span><br><span>+++ b/src/libmsc/db.c</span><br><span>@@ -1001,20 +1001,15 @@</span><br><span> }</span><br><span> </span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static int delete_expired_sms(unsigned long long sms_id, time_t created, time_t validity_timestamp)</span><br><span style="color: hsl(120, 100%, 40%);">+static int delete_expired_sms(unsigned long long sms_id, time_t validity_timestamp)</span><br><span> {</span><br><span>       dbi_result result;</span><br><span style="color: hsl(0, 100%, 40%);">-      time_t now, min_created;</span><br><span style="color: hsl(120, 100%, 40%);">+      time_t now;</span><br><span> </span><br><span>      now = time(NULL);</span><br><span style="color: hsl(0, 100%, 40%);">-       if (validity_timestamp > now)</span><br><span style="color: hsl(0, 100%, 40%);">-                return -1;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  /* Our SMS expiry threshold is hard-coded to roughly 2 weeks at the moment. */</span><br><span style="color: hsl(0, 100%, 40%);">-  min_created = now - (time_t)(60 * 60 * 24 * 7 * 2);</span><br><span style="color: hsl(0, 100%, 40%);">-     if (min_created < 0) /* bogus system clock? */</span><br><span style="color: hsl(0, 100%, 40%);">-               return -1;</span><br><span style="color: hsl(0, 100%, 40%);">-      if (created >= min_created) /* not yet expired */</span><br><span style="color: hsl(120, 100%, 40%);">+  /* Net yet expired */</span><br><span style="color: hsl(120, 100%, 40%);">+ if (validity_timestamp > now)</span><br><span>             return -1;</span><br><span> </span><br><span>       result = dbi_conn_queryf(conn, "DELETE FROM SMS WHERE id = %llu", sms_id);</span><br><span>@@ -1029,9 +1024,9 @@</span><br><span> int db_sms_delete_expired_message_by_id(unsigned long long sms_id)</span><br><span> {</span><br><span>      dbi_result result;</span><br><span style="color: hsl(0, 100%, 40%);">-      time_t created, validity_timestamp;</span><br><span style="color: hsl(120, 100%, 40%);">+   time_t validity_timestamp;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  result = dbi_conn_queryf(conn, "SELECT created,valid_until FROM SMS WHERE id = %llu", sms_id);</span><br><span style="color: hsl(120, 100%, 40%);">+      result = dbi_conn_queryf(conn, "SELECT valid_until FROM SMS WHERE id = %llu", sms_id);</span><br><span>     if (!result)</span><br><span>                 return -1;</span><br><span>   if (!next_row(result)) {</span><br><span>@@ -1039,29 +1034,28 @@</span><br><span>           return -1;</span><br><span>   }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   created = dbi_result_get_datetime(result, "created");</span><br><span>      validity_timestamp = dbi_result_get_datetime(result, "valid_until");</span><br><span> </span><br><span>   dbi_result_free(result);</span><br><span style="color: hsl(0, 100%, 40%);">-        return delete_expired_sms(sms_id, created, validity_timestamp);</span><br><span style="color: hsl(120, 100%, 40%);">+       return delete_expired_sms(sms_id, validity_timestamp);</span><br><span> }</span><br><span> </span><br><span> void db_sms_delete_oldest_expired_message(void)</span><br><span> {</span><br><span>      dbi_result result;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  result = dbi_conn_queryf(conn, "SELECT id,created,valid_until FROM SMS ORDER BY created LIMIT 1");</span><br><span style="color: hsl(120, 100%, 40%);">+  result = dbi_conn_queryf(conn, "SELECT id,valid_until FROM SMS "</span><br><span style="color: hsl(120, 100%, 40%);">+                                   "ORDER BY valid_until LIMIT 1");</span><br><span>    if (!result)</span><br><span>                 return;</span><br><span> </span><br><span>  if (next_row(result)) {</span><br><span>              unsigned long long sms_id;</span><br><span style="color: hsl(0, 100%, 40%);">-              time_t created, validity_timestamp;</span><br><span style="color: hsl(120, 100%, 40%);">+           time_t validity_timestamp;</span><br><span> </span><br><span>               sms_id = dbi_result_get_ulonglong(result, "id");</span><br><span style="color: hsl(0, 100%, 40%);">-              created = dbi_result_get_datetime(result, "created");</span><br><span>              validity_timestamp = dbi_result_get_datetime(result, "valid_until");</span><br><span style="color: hsl(0, 100%, 40%);">-          delete_expired_sms(sms_id, created, validity_timestamp);</span><br><span style="color: hsl(120, 100%, 40%);">+              delete_expired_sms(sms_id, validity_timestamp);</span><br><span>      }</span><br><span> </span><br><span>        dbi_result_free(result);</span><br><span>diff --git a/tests/db_sms/db_sms_test.err b/tests/db_sms/db_sms_test.err</span><br><span>index e0a329d..958294f 100644</span><br><span>--- a/tests/db_sms/db_sms_test.err</span><br><span>+++ b/tests/db_sms/db_sms_test.err</span><br><span>@@ -68,8 +68,7 @@</span><br><span> DDB NOTICE verify_sms('Truncated TP-UD (255 octets, 8-bit encoding)'): TP-User-Data mismatch (diff=-16896/256)</span><br><span> DDB NOTICE test_db_sms_get('Same MSISDN #1'): failure, as expected</span><br><span> DDB NOTICE test_db_sms_get('Same MSISDN #2'): failure, as expected</span><br><span style="color: hsl(0, 100%, 40%);">-DDB NOTICE test_db_sms_get('Expired SMS'): unexpected result</span><br><span style="color: hsl(0, 100%, 40%);">-DDB NOTICE verify_sms('Expired SMS'): match</span><br><span style="color: hsl(120, 100%, 40%);">+DDB NOTICE test_db_sms_get('Expired SMS'): failure, as expected</span><br><span> DDB NOTICE test_db_sms_get('Empty TP-UD'): success, as expected</span><br><span> DDB NOTICE verify_sms('Empty TP-UD'): match</span><br><span> full talloc report on 'null_context' (total      0 bytes in   1 blocks)</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/13631">change 13631</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/13631"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-msc </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I0ce6b1ab50986dc69a2be4ea62b6a24c7f3f8f0a </div>
<div style="display:none"> Gerrit-Change-Number: 13631 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Vadim Yanitskiy <axilirator@gmail.com> </div>