| 1684 | | log_error_write(srv, __FILE__, __LINE__, "sds", "SSL:", |
| 1685 | | SSL_get_error(con->ssl, ret), |
| 1686 | | ERR_error_string(ERR_get_error(), NULL)); |
| 1687 | | return -1; |
| | 1685 | |
| | 1686 | switch ((ssl_r = SSL_get_error(con->ssl, ret))) { |
| | 1687 | case SSL_ERROR_WANT_WRITE: |
| | 1688 | case SSL_ERROR_WANT_READ: |
| | 1689 | break; |
| | 1690 | case SSL_ERROR_SYSCALL: |
| | 1691 | /* perhaps we have error waiting in our error-queue */ |
| | 1692 | if (0 != (err = ERR_get_error())) { |
| | 1693 | do { |
| | 1694 | log_error_write(srv, __FILE__, __LINE__, "sdds", "SSL:", |
| | 1695 | ssl_r, ret, |
| | 1696 | ERR_error_string(err, NULL)); |
| | 1697 | } while((err = ERR_get_error())); |
| | 1698 | } else { |
| | 1699 | log_error_write(srv, __FILE__, __LINE__, "sddds", "SSL (error):", |
| | 1700 | ssl_r, r, errno, |
| | 1701 | strerror(errno)); |
| | 1702 | } |
| | 1703 | |
| | 1704 | break; |
| | 1705 | default: |
| | 1706 | while((err = ERR_get_error())) { |
| | 1707 | log_error_write(srv, __FILE__, __LINE__, "sdds", "SSL:", |
| | 1708 | ssl_r, ret, |
| | 1709 | ERR_error_string(err, NULL)); |
| | 1710 | } |
| | 1711 | |
| | 1712 | break; |
| | 1713 | } |