From: pk910 Date: Sun, 24 Feb 2013 12:50:53 +0000 (+0100) Subject: fixed ssl.c bug when ssl backend returns IO_BLOCKED but IO engine doesn't get informe... X-Git-Url: http://git.pk910.de/?p=ircu2.10.12-pk.git;a=commitdiff_plain;h=e894de73de8e7846934ecdf4d7cc3a14d5635ce6 fixed ssl.c bug when ssl backend returns IO_BLOCKED but IO engine doesn't get informed to trigger write events --- diff --git a/ircd/s_auth.c b/ircd/s_auth.c index 71c8638..3b1999b 100644 --- a/ircd/s_auth.c +++ b/ircd/s_auth.c @@ -155,7 +155,8 @@ typedef enum { /** Sends response \a r (from #ReportType) to client \a c. */ #define sendheader(c, r) \ - ssl_send(cli_fd(c), cli_socket(c).ssl, HeaderMessages[(r)].message, HeaderMessages[(r)].length) + sendrawto_one(c, "%s", HeaderMessages[(r)].message) + //ssl_send(cli_fd(c), cli_socket(c).ssl, HeaderMessages[(r)].message, HeaderMessages[(r)].length) /** Enumeration of IAuth connection flags. */ enum IAuthFlag diff --git a/ircd/send.c b/ircd/send.c index ff8d115..cdd5de8 100644 --- a/ircd/send.c +++ b/ircd/send.c @@ -191,7 +191,7 @@ void send_queued(struct Client *to) msgq_delete(&(cli_sendQ(to)), len); cli_lastsq(to) = MsgQLength(&(cli_sendQ(to))) / 1024; if (IsBlocked(to)) { - update_write(to); + update_write(to); return; } } @@ -201,6 +201,8 @@ void send_queued(struct Client *to) sprintf(tmp,"Write error: %s",(strerror(cli_error(to))) ? (strerror(cli_error(to))) : "Unknown error" ); dead_link(to, tmp); } + if (IsBlocked(to)) + update_write(to); return; } } diff --git a/ircd/ssl.c b/ircd/ssl.c index 2af0852..489c143 100644 --- a/ircd/ssl.c +++ b/ircd/ssl.c @@ -1022,6 +1022,7 @@ const char *ssl_cipherstr(ssl_session_t *ssl) { } IOResult ssl_be_send(signed int fd, ssl_be_session_t *ssl, const char *buf, unsigned int *count_out) { signed int res; + ssl_msg(SSL_DEBUG, "SSL: gnutls ssl_be_send(): %s", buf); res = gnutls_record_send(*ssl, buf, *count_out); *count_out = 0; if(res == 0) { @@ -1039,7 +1040,7 @@ const char *ssl_cipherstr(ssl_session_t *ssl) { } else { *count_out = res; - ssl_msg(SSL_DEBUG, "SSL: gnutls ssl_be_send(): successful (IO_SUCCESS)"); + ssl_msg(SSL_DEBUG, "SSL: gnutls ssl_be_send(): successful (IO_SUCCESS) %d", res); return IO_SUCCESS; } }