• 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
名称
最后提交
最后更新
..
bnf 正在载入提交数据...
docs 正在载入提交数据...
features 正在载入提交数据...
http 正在载入提交数据...
ipt 正在载入提交数据...
iptsec 正在载入提交数据...
msg 正在载入提交数据...
nea 正在载入提交数据...
nta 正在载入提交数据...
nth 正在载入提交数据...
nua 正在载入提交数据...
sdp 正在载入提交数据...
sip 正在载入提交数据...
soa 正在载入提交数据...
sresolv 正在载入提交数据...
stun 正在载入提交数据...
su 正在载入提交数据...
tport 正在载入提交数据...
url 正在载入提交数据...
ChangeLog 正在载入提交数据...
Makefile.am 正在载入提交数据...
sofia.am 正在载入提交数据...