1. 30 4月, 2016 1 次提交
    • 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
  2. 29 4月, 2016 7 次提交
  3. 28 4月, 2016 7 次提交
  4. 27 4月, 2016 15 次提交
  5. 26 4月, 2016 4 次提交
  6. 25 4月, 2016 4 次提交
  7. 22 4月, 2016 2 次提交