Revision 2139
| branches/lighttpd-1.4.x/src/connections.c (revision 2139) | ||
|---|---|---|
| 1669 | 1669 |
} |
| 1670 | 1670 |
#ifdef USE_OPENSSL |
| 1671 | 1671 |
if (srv_sock->is_ssl) {
|
| 1672 |
int ret; |
|
| 1672 |
int ret, ssl_r; |
|
| 1673 |
unsigned long err; |
|
| 1673 | 1674 |
ERR_clear_error(); |
| 1674 | 1675 |
switch ((ret = SSL_shutdown(con->ssl))) {
|
| 1675 | 1676 |
case 1: |
| ... | ... | |
| 1677 | 1678 |
break; |
| 1678 | 1679 |
case 0: |
| 1679 | 1680 |
ERR_clear_error(); |
| 1680 |
if ((ret = SSL_shutdown(con->ssl)) == 1) break; |
|
| 1681 |
if (-1 != (ret = SSL_shutdown(con->ssl))) break; |
|
| 1681 | 1682 |
|
| 1682 | 1683 |
// fall through |
| 1683 | 1684 |
default: |
| 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 |
} |
|
| 1688 | 1714 |
} |
| 1689 | 1715 |
} |
| 1716 |
ERR_clear_error(); |
|
| 1690 | 1717 |
#endif |
| 1691 | 1718 |
|
| 1692 | 1719 |
switch(con->mode) {
|
| 1693 | 1720 | |
Also available in: Unified diff