Revision
16197
Author
verifier
Date
2010-01-07 06:53:14 -0600 (Thu, 07 Jan 2010)

Log Message

Catch all exceptions in async methods to prevent lib from crashing application.

Modified Paths

Diff

Modified: freeswitch/trunk/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/EventSocket.cs (16196 => 16197)


--- freeswitch/trunk/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/EventSocket.cs	2010-01-07 12:38:20 UTC (rev 16196)
+++ freeswitch/trunk/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/EventSocket.cs	2010-01-07 12:53:14 UTC (rev 16197)
@@ -163,11 +163,23 @@
 
         private void OnReadCompleted(IAsyncResult ar)
         {
+            try
+            {
+                ReceiveWrapper(ar);
+            }
+            catch(Exception err)
+            {
+                _logWriter(LogPrio.Error, err.ToString());
+            }
+        }
+
+        private void ReceiveWrapper(IAsyncResult ar)
+        {
             string inbuffer;
             try
             {
                 if (_stream == null)
-                    return; // closed socket.
+                    return;
 
                 int bytesRead = _stream.EndRead(ar);
                 if (bytesRead == 0)
@@ -177,10 +189,9 @@
                     return;
                 }
                 inbuffer = Encoding.ASCII.GetString(_readBuffer, 0, bytesRead);
-                _parser.Append(inbuffer);
                 BeginRead();
             }
-            catch (IOException err)
+            catch (Exception err)
             {
                 LogWriter(LogPrio.Debug, "IO exception during read: " + err.Message);
                 // Remote end disconnected.
@@ -188,6 +199,7 @@
                 return;
             }
 
+            _parser.Append(inbuffer);
             if (!string.IsNullOrEmpty(inbuffer))
                 DataReceived(inbuffer);
 

Modified: freeswitch/trunk/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Ivr/PrivateWaitDtmf.cs (16196 => 16197)


--- freeswitch/trunk/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Ivr/PrivateWaitDtmf.cs	2010-01-07 12:38:20 UTC (rev 16196)
+++ freeswitch/trunk/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Ivr/PrivateWaitDtmf.cs	2010-01-07 12:53:14 UTC (rev 16197)
@@ -47,9 +47,15 @@
 
         private void OnTimeout(object state)
         {
-            _timer.Dispose();
-            _timer = null;
-            _handler(this);
+            try
+            {
+                _timer.Dispose();
+                _timer = null;
+                _handler(this);
+            }
+            catch(Exception)
+            {
+            }
         }
 
         #region IDisposable Members