mlittle / avaya-moagent-client

Avaya Moagent Client is a fully-managed replacement for the COM-component provided as part of the Avaya SDK.
BSD 2-Clause "Simplified" License
4 stars 3 forks source link

Hard crash with invalid SSL certificate #8

Open ghost opened 11 years ago

ghost commented 11 years ago

If the SSL certificate isn't valid (i.e. stock v4 cert connecting to a v5 dialer), a hard crash is encountered, with no apparent way for the application to handle the error. This is basically the same issue as #5, though in this case it would be helpful if some useful error could be thrown to indicate why it failed.

As it stands today, anything that goes wrong in ConnectCallback will cause a hard crash, and there's nothing the end user can do about it.

Application: <redacted>.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: OpenSSL.Core.OpenSslException
Stack:
   at OpenSSL.SslStreamBase.EndWrite(System.IAsyncResult)
   at OpenSSL.SslStream.EndWrite(System.IAsyncResult)
   at OpenSSL.SslStream.EndAuthenticateAsClient(System.IAsyncResult)
   at OpenSSL.SslStream.AuthenticateAsClient(System.String, OpenSSL.X509.X509List, OpenSSL.X509.X509Chain, OpenSSL.SslProtocols, OpenSSL.SslStrength, Boolean)
   at AvayaMoagentClient.MoagentClient.ConnectCallback(System.IAsyncResult)
   at System.Net.LazyAsyncResult.Complete(IntPtr)
   at System.Net.ContextAwareResult.CompleteCallback(System.Object)
   at System.Threading.ExecutionContext.runTryCode(System.Object)
   at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode, CleanupCode, System.Object)
   at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
   at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
   at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
   at System.Net.ContextAwareResult.Complete(IntPtr)
   at System.Net.LazyAsyncResult.ProtectedInvokeCallback(System.Object, IntPtr)
   at System.Net.Sockets.Socket.ConnectCallback()
   at System.Net.Sockets.Socket.RegisteredWaitCallback(System.Object, Boolean)
   at System.Threading._ThreadPoolWaitOrTimerCallback.PerformWaitOrTimerCallback(System.Object, Boolean)