• Ethan Atkins's avatar
    FS-9113 [sofia-sip] Clear out ssl error queue · db0dfe94
    Ethan Atkins 提交于
    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.
    db0dfe94
名称
最后提交
最后更新
build 正在载入提交数据...
clients/flex 正在载入提交数据...
cmake_modules 正在载入提交数据...
conf 正在载入提交数据...
debian 正在载入提交数据...
docs 正在载入提交数据...
dtd 正在载入提交数据...
fonts 正在载入提交数据...
fscomm 正在载入提交数据...
htdocs 正在载入提交数据...
html5/verto 正在载入提交数据...
images 正在载入提交数据...
libs 正在载入提交数据...
scripts 正在载入提交数据...
src 正在载入提交数据...
support-d 正在载入提交数据...
tests/unit 正在载入提交数据...
w32 正在载入提交数据...
web 正在载入提交数据...
yum 正在载入提交数据...
.clang-format 正在载入提交数据...
.gitattributes 正在载入提交数据...
.gitignore 正在载入提交数据...
.mailmap 正在载入提交数据...
Freeswitch.2015.sln 正在载入提交数据...
Freeswitch.2015.sln.bat 正在载入提交数据...
INSTALL 正在载入提交数据...
Makefile.am 正在载入提交数据...
acinclude.m4 正在载入提交数据...
bootstrap.sh 正在载入提交数据...
cc.sh 正在载入提交数据...
cluecon.tmpl 正在载入提交数据...
cluecon2.tmpl 正在载入提交数据...
cluecon2_small.tmpl 正在载入提交数据...
cluecon_small.tmpl 正在载入提交数据...
configure.ac 正在载入提交数据...
devel-bootstrap.sh 正在载入提交数据...
erlang.spec 正在载入提交数据...
freeswitch-config-rayo.spec 正在载入提交数据...
freeswitch-sounds-en-ca-june.spec 正在载入提交数据...
freeswitch-sounds-en-us-callie.spec 正在载入提交数据...
freeswitch-sounds-fr-ca-june.spec 正在载入提交数据...
freeswitch-sounds-music.spec 正在载入提交数据...
freeswitch-sounds-pt-BR-karina.spec 正在载入提交数据...
freeswitch-sounds-ru-RU-elena.spec 正在载入提交数据...
freeswitch-sounds-sv-se-jakob.spec 正在载入提交数据...
freeswitch.spec 正在载入提交数据...
swig_common.i 正在载入提交数据...