Skip to content

Commit

Permalink
Issues/170: fix infinite re-establishing connection loop (#171)
Browse files Browse the repository at this point in the history
What:
- fix infinite loop while re-establishing connection & re-binding to SMSC

Why:
- Fixes: #170
  • Loading branch information
komuw authored Sep 22, 2019
1 parent 592e48a commit 68b953a
Show file tree
Hide file tree
Showing 32 changed files with 94 additions and 106 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@ most recent version is listed first.



## **version:** v0.7.2
- fix infinite loop bug, which could occur while re-establishing connection & re-binding to SMSC: https://github.com/komuw/naz/pull/171


## **version:** v0.7.1
- add ability to start `naz` even when SMSC is down: https://github.com/komuw/naz/pull/168
this may be important when you want to deploy `naz` when the mno/SMSC is down and you want `naz` to automatically connect when the SMSC comes back online.
Expand Down
4 changes: 2 additions & 2 deletions docs/_modules/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>Overview: module code &mdash; naz v0.7.1 documentation</title>
<title>Overview: module code &mdash; naz v0.7.2 documentation</title>



Expand Down Expand Up @@ -60,7 +60,7 @@


<div class="version">
v0.7.1
v0.7.2
</div>


Expand Down
46 changes: 19 additions & 27 deletions docs/_modules/naz/client.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>naz.client &mdash; naz v0.7.1 documentation</title>
<title>naz.client &mdash; naz v0.7.2 documentation</title>



Expand Down Expand Up @@ -60,7 +60,7 @@


<div class="version">
v0.7.1
v0.7.2
</div>


Expand Down Expand Up @@ -1601,6 +1601,9 @@ <h1>Source code for naz.client</h1><div class="highlight"><pre>
<span class="sd"> Parameters:</span>
<span class="sd"> TESTING: indicates whether this method is been called while running tests.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="c1"># the only reason this method is called is because connection has closed.</span>
<span class="c1"># so lets set the session state to reflect that fact</span>
<span class="bp">self</span><span class="o">.</span><span class="n">current_session_state</span> <span class="o">=</span> <span class="n">SmppSessionState</span><span class="o">.</span><span class="n">CLOSED</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_log</span><span class="p">(</span>
<span class="n">logging</span><span class="o">.</span><span class="n">INFO</span><span class="p">,</span>
<span class="p">{</span>
Expand All @@ -1624,32 +1627,21 @@ <h1>Source code for naz.client</h1><div class="highlight"><pre>
<span class="p">)</span>
<span class="k">return</span> <span class="kc">None</span>

<span class="k">try</span><span class="p">:</span>
<span class="c1"># 1. re-connect</span>
<span class="c1"># 2. re-bind</span>
<span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">log_id</span><span class="o">=</span><span class="n">log_id</span><span class="p">)</span>
<span class="c1"># 1. re-connect</span>
<span class="c1"># 2. re-bind</span>
<span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">log_id</span><span class="o">=</span><span class="n">log_id</span><span class="p">)</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_session_state</span> <span class="o">==</span> <span class="n">SmppSessionState</span><span class="o">.</span><span class="n">OPEN</span><span class="p">:</span>
<span class="c1"># state can only be open if `client.connect` succeded</span>
<span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">tranceiver_bind</span><span class="p">(</span><span class="n">log_id</span><span class="o">=</span><span class="n">log_id</span><span class="p">)</span>
<span class="k">except</span> <span class="p">(</span>
<span class="ne">OSError</span><span class="p">,</span>
<span class="ne">ConnectionError</span><span class="p">,</span>
<span class="ne">TimeoutError</span><span class="p">,</span>
<span class="n">asyncio</span><span class="o">.</span><span class="n">TimeoutError</span><span class="p">,</span>
<span class="n">socket</span><span class="o">.</span><span class="n">error</span><span class="p">,</span>
<span class="n">socket</span><span class="o">.</span><span class="n">herror</span><span class="p">,</span>
<span class="n">socket</span><span class="o">.</span><span class="n">gaierror</span><span class="p">,</span>
<span class="n">socket</span><span class="o">.</span><span class="n">timeout</span><span class="p">,</span>
<span class="p">)</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_log</span><span class="p">(</span>
<span class="n">logging</span><span class="o">.</span><span class="n">ERROR</span><span class="p">,</span>
<span class="p">{</span>
<span class="s2">&quot;event&quot;</span><span class="p">:</span> <span class="s2">&quot;naz.Client.re_establish_conn_bind&quot;</span><span class="p">,</span>
<span class="s2">&quot;stage&quot;</span><span class="p">:</span> <span class="s2">&quot;end&quot;</span><span class="p">,</span>
<span class="s2">&quot;smpp_command&quot;</span><span class="p">:</span> <span class="n">smpp_command</span><span class="p">,</span>
<span class="s2">&quot;log_id&quot;</span><span class="p">:</span> <span class="n">log_id</span><span class="p">,</span>
<span class="s2">&quot;state&quot;</span><span class="p">:</span> <span class="s2">&quot;unable to re-connect &amp; re-bind to SMSC&quot;</span><span class="p">,</span>
<span class="s2">&quot;error&quot;</span><span class="p">:</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">),</span>
<span class="p">},</span>
<span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_log</span><span class="p">(</span>
<span class="n">logging</span><span class="o">.</span><span class="n">INFO</span><span class="p">,</span>
<span class="p">{</span>
<span class="s2">&quot;event&quot;</span><span class="p">:</span> <span class="s2">&quot;naz.Client.re_establish_conn_bind&quot;</span><span class="p">,</span>
<span class="s2">&quot;stage&quot;</span><span class="p">:</span> <span class="s2">&quot;end&quot;</span><span class="p">,</span>
<span class="s2">&quot;smpp_command&quot;</span><span class="p">:</span> <span class="n">smpp_command</span><span class="p">,</span>
<span class="s2">&quot;log_id&quot;</span><span class="p">:</span> <span class="n">log_id</span><span class="p">,</span>
<span class="p">},</span>
<span class="p">)</span>
<span class="k">if</span> <span class="n">TESTING</span><span class="p">:</span>
<span class="c1"># offer escape hatch for tests to come out of endless loop</span>
<span class="k">return</span> <span class="kc">None</span></div>
Expand Down
4 changes: 2 additions & 2 deletions docs/_modules/naz/correlater.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>naz.correlater &mdash; naz v0.7.1 documentation</title>
<title>naz.correlater &mdash; naz v0.7.2 documentation</title>



Expand Down Expand Up @@ -60,7 +60,7 @@


<div class="version">
v0.7.1
v0.7.2
</div>


Expand Down
4 changes: 2 additions & 2 deletions docs/_modules/naz/hooks.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>naz.hooks &mdash; naz v0.7.1 documentation</title>
<title>naz.hooks &mdash; naz v0.7.2 documentation</title>



Expand Down Expand Up @@ -60,7 +60,7 @@


<div class="version">
v0.7.1
v0.7.2
</div>


Expand Down
4 changes: 2 additions & 2 deletions docs/_modules/naz/log.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>naz.log &mdash; naz v0.7.1 documentation</title>
<title>naz.log &mdash; naz v0.7.2 documentation</title>



Expand Down Expand Up @@ -60,7 +60,7 @@


<div class="version">
v0.7.1
v0.7.2
</div>


Expand Down
4 changes: 2 additions & 2 deletions docs/_modules/naz/nazcodec.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>naz.nazcodec &mdash; naz v0.7.1 documentation</title>
<title>naz.nazcodec &mdash; naz v0.7.2 documentation</title>



Expand Down Expand Up @@ -60,7 +60,7 @@


<div class="version">
v0.7.1
v0.7.2
</div>


Expand Down
4 changes: 2 additions & 2 deletions docs/_modules/naz/q.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>naz.q &mdash; naz v0.7.1 documentation</title>
<title>naz.q &mdash; naz v0.7.2 documentation</title>



Expand Down Expand Up @@ -60,7 +60,7 @@


<div class="version">
v0.7.1
v0.7.2
</div>


Expand Down
4 changes: 2 additions & 2 deletions docs/_modules/naz/ratelimiter.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>naz.ratelimiter &mdash; naz v0.7.1 documentation</title>
<title>naz.ratelimiter &mdash; naz v0.7.2 documentation</title>



Expand Down Expand Up @@ -60,7 +60,7 @@


<div class="version">
v0.7.1
v0.7.2
</div>


Expand Down
4 changes: 2 additions & 2 deletions docs/_modules/naz/sequence.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>naz.sequence &mdash; naz v0.7.1 documentation</title>
<title>naz.sequence &mdash; naz v0.7.2 documentation</title>



Expand Down Expand Up @@ -60,7 +60,7 @@


<div class="version">
v0.7.1
v0.7.2
</div>


Expand Down
4 changes: 2 additions & 2 deletions docs/_modules/naz/state.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>naz.state &mdash; naz v0.7.1 documentation</title>
<title>naz.state &mdash; naz v0.7.2 documentation</title>



Expand Down Expand Up @@ -60,7 +60,7 @@


<div class="version">
v0.7.1
v0.7.2
</div>


Expand Down
4 changes: 2 additions & 2 deletions docs/_modules/naz/throttle.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>naz.throttle &mdash; naz v0.7.1 documentation</title>
<title>naz.throttle &mdash; naz v0.7.2 documentation</title>



Expand Down Expand Up @@ -60,7 +60,7 @@


<div class="version">
v0.7.1
v0.7.2
</div>


Expand Down
2 changes: 1 addition & 1 deletion docs/_static/documentation_options.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
var DOCUMENTATION_OPTIONS = {
URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'),
VERSION: 'v0.7.1',
VERSION: 'v0.7.2',
LANGUAGE: 'None',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
Expand Down
4 changes: 2 additions & 2 deletions docs/client.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>Client &mdash; naz v0.7.1 documentation</title>
<title>Client &mdash; naz v0.7.2 documentation</title>



Expand Down Expand Up @@ -62,7 +62,7 @@


<div class="version">
v0.7.1
v0.7.2
</div>


Expand Down
4 changes: 2 additions & 2 deletions docs/correlater.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>correlater &mdash; naz v0.7.1 documentation</title>
<title>correlater &mdash; naz v0.7.2 documentation</title>



Expand Down Expand Up @@ -62,7 +62,7 @@


<div class="version">
v0.7.1
v0.7.2
</div>


Expand Down
4 changes: 2 additions & 2 deletions docs/example_demo.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>Example demo of using naz &mdash; naz v0.7.1 documentation</title>
<title>Example demo of using naz &mdash; naz v0.7.2 documentation</title>



Expand Down Expand Up @@ -62,7 +62,7 @@


<div class="version">
v0.7.1
v0.7.2
</div>


Expand Down
4 changes: 2 additions & 2 deletions docs/genindex.html
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>Index &mdash; naz v0.7.1 documentation</title>
<title>Index &mdash; naz v0.7.2 documentation</title>



Expand Down Expand Up @@ -61,7 +61,7 @@


<div class="version">
v0.7.1
v0.7.2
</div>


Expand Down
4 changes: 2 additions & 2 deletions docs/hooks.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>hooks &mdash; naz v0.7.1 documentation</title>
<title>hooks &mdash; naz v0.7.2 documentation</title>



Expand Down Expand Up @@ -62,7 +62,7 @@


<div class="version">
v0.7.1
v0.7.2
</div>


Expand Down
4 changes: 2 additions & 2 deletions docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>naz - naz is an async SMPP client. &mdash; naz v0.7.1 documentation</title>
<title>naz - naz is an async SMPP client. &mdash; naz v0.7.2 documentation</title>



Expand Down Expand Up @@ -61,7 +61,7 @@


<div class="version">
v0.7.1
v0.7.2
</div>


Expand Down
4 changes: 2 additions & 2 deletions docs/introduction.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>Introduction to naz &mdash; naz v0.7.1 documentation</title>
<title>Introduction to naz &mdash; naz v0.7.2 documentation</title>



Expand Down Expand Up @@ -62,7 +62,7 @@


<div class="version">
v0.7.1
v0.7.2
</div>


Expand Down
Loading

0 comments on commit 68b953a

Please sign in to comment.