Ethan Atkins db0dfe94d0 FS-9113 [sofia-sip] Clear out ssl error queue
Sofia will unpredictably close a tls transport during call setup. This
occurs when the epoll event loop wakes up the socket reader and SSL_read
returns an error because there is no packet on the socket. Normally
sofia will read the last error using SSL_get_error and return
SSL_ERROR_WANT_READ. Sofia gracefully handles this error and the
transport stays open. Sometimes, however, the worker thread will call
SSL_shutdown for a different transport, which can write an error to the
internal openssl error queue. If that error is not read off the queue,
the next time that SSL_get_error is called, it will read that unrelated
error.

The documentation for SSL_shutdown explains that there are three
possible results -1, 0 and 1 with, oddly, 1 indicating success. The -1
result code occurs when there is no handshake callback registered on the
connection. It can return 0 when there is still work to be done. The
documentation suggest that it is insufficient to call it just once. This
is why I added the do {} while () construct.

Although just the fix to SSL_shutdown was enough to resolve my issue, I
a also audited other calls to SSL_* functions and found a few other
cases where an error may be generated, but was not handled.
2016-04-30 10:39:47 -07:00
2014-03-24 12:39:59 +00:00
2015-05-28 12:47:19 -05:00
2016-04-29 19:27:55 +01:00
doh
2016-03-30 17:43:39 -05:00
2015-10-09 11:10:32 -07:00
2010-04-01 21:00:45 -04:00
2015-12-15 17:02:49 +00:00
2014-12-26 17:22:20 +00:00
2014-08-01 14:47:38 -05:00
2013-09-16 22:59:26 +05:00
2013-09-16 22:59:26 +05:00
2013-04-04 20:52:47 -05:00
2013-12-23 22:43:06 +05:00
Description
FreeSWITCH is a Software Defined Telecom Stack enabling the digital transformation from proprietary telecom switches to a versatile software implementation that runs on any commodity hardware. From a Raspberry PI to a multi-core server, FreeSWITCH can unl
Multiple Licenses 196 MiB
Languages
C 65.2%
C++ 20.8%
JavaScript 4.8%
Assembly 2%
Makefile 1%
Other 5.4%