Skip to content
  1. Dec 03, 2018
  2. Nov 25, 2018
  3. Nov 23, 2018
  4. Nov 15, 2018
  5. Nov 11, 2018
  6. Nov 10, 2018
  7. Nov 09, 2018
  8. Nov 08, 2018
  9. Nov 05, 2018
  10. Nov 01, 2018
  11. Oct 28, 2018
  12. Oct 27, 2018
  13. Oct 26, 2018
  14. Oct 24, 2018
  15. Oct 22, 2018
  16. Oct 21, 2018
  17. Oct 20, 2018
  18. Oct 19, 2018
  19. Oct 17, 2018
  20. Oct 16, 2018
  21. Oct 15, 2018
    • Rainer Jung's avatar
      SSL_read() doesn't distinguish between return value 0 and <0, · 524608b6
      Rainer Jung authored
      at least not for OpenSSL 1.1.1. This is documented in the man
      page for SSL_read and let to h2 failures when using OpenSSL 1.1.1.
      
      When no data could be read, our code returned EAGAIN up until
      OpenSSL 1.1.0, but APR_EOF for OpenSSL 1.1.1.
      
      Now instead check SSL_get_error() also when SSL_read() returns 0.
      
      To keep changes small, this change should not influence behavior,
      when (rc=SSL_read()):
      - rc < 0
      - rc == 0 && *len > 0
      - rc == 0 &&
        (APR_STATUS_IS_EAGAIN(inctx->rc) || APR_STATUS_IS_EINTR(inctx->rc) &&
        inctx->block == APR_NONBLOCK_READ
      
      Behavior changes if
      - rc == 0 &&
        !(APR_STATUS_IS_EAGAIN(inctx->rc) || APR_STATUS_IS_EINTR(inctx->rc) &&
        !*len > 0
        Instead of APR_EOF:
        - same behavior as rc < 0 for SSL_ERROR_WANT_READ
        - same behavior as rc < 0 for SSL_ERROR_SYSCALL && APR_STATUS_IS_EAGAIN(inctx->rc)
      
      Another change is that rc == 0 && ssl_err == SSL_ERROR_ZERO_RETURN
      also results in APR_EOF.
      
      
      git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1843954 13f79535-47bb-0310-9956-ffa450edef68
      524608b6