From e35bac5357379b81ae13af7a9b5fe94659cfcfa1 Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Mon, 13 Dec 2010 05:25:25 +0100 Subject: [PATCH] GSMDriver: Send a clear request in case there is an exception --- BSSMAP.st | 1 + GSMDriver.st | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/BSSMAP.st b/BSSMAP.st index 1d58547..d1359d1 100644 --- a/BSSMAP.st +++ b/BSSMAP.st @@ -13,6 +13,7 @@ Object subclass: GSM0808Helper [ GSM0808Helper class >> msgResetAck [ ^ 16r31 ] GSM0808Helper class >> msgClear [ ^ 16r20 ] GSM0808Helper class >> msgClearComp [ ^ 16r21 ] + GSM0808Helper class >> msgClearReq [ ^ 16r22 ] GSM0808Helper class >> msgCipherModeCmd [ ^ 16r53 ] GSM0808Helper class >> msgCipherModeCmpl [ ^ 16r55 ] GSM0808Helper class >> msgAssRequest [ ^ 16r1 ] diff --git a/GSMDriver.st b/GSMDriver.st index 6ff4bd6..264e694 100644 --- a/GSMDriver.st +++ b/GSMDriver.st @@ -56,10 +56,20 @@ classes.'> sccp := aSCCPConnection ] + + sendClearRequest [ + | clear | + clear := IEMessage initWith: GSM0808Helper msgClearReq. + clear addIe: (GSMCauseIE initWith: 0). + sccp nextPutData: (BSSAPManagement initWith: clear). + ] + run [ + | connected | "Process all messages in a thread" + connected := true. proc := [ [ [ @@ -69,9 +79,16 @@ classes.'> self dispatch: msg. ]. ] on: SystemExceptions.EndOfStream do: [ + connected := false. 'SCCP Connection is now disconnected' printNl. ]. ] ensure: [ + connected ifTrue: [ + 'SCCP Cleaning up connection' printNl. + connected := false. + self sendClearRequest. + ]. + completeSem signal. ]. ] fork.