diff --git a/TODO b/TODO index b0f5b98..83a6ebc 100644 --- a/TODO +++ b/TODO @@ -1,9 +1,11 @@ +Before release: - SSL certificate verification -- allowed IP filtering -- multi user (user/pass to identify user + realname to id. network) -- keep invites when detached -- DCC proxying ? -- /bip command, for admin (rehash, jump, ...) -- crypt logs +- keep invites when detached ? +- allow global (or per net ?) IP filtering +- /bip command for admin (at least rehash, jump, ...) +- check why log_mode doesn't add closing bracket... +- bug: bip using 100% cpu when reconnecting (to SSL only ?) -tidy up irc_server/server structures +TODO: +- DCC proxying... +- crypt logs diff --git a/src/connection.c b/src/connection.c index 929a9f2..c7d5810 100644 --- a/src/connection.c +++ b/src/connection.c @@ -1146,12 +1146,16 @@ static int SSLize(connection_t *cn, int *nc) *nc = 1; return 0; } + + /* From now on, we are on error, thus we return 1 to check timeout */ if (err2 == SSL_ERROR_ZERO_RETURN || err2 == SSL_ERROR_SSL) { mylog(LOG_DEBUG, "Error in SSL handshake."); cn->connected = CONN_ERROR; return 1; } - return 0; + /* Here are unhandled errors/resource waiting. Timeout must be + * checked but connection may still be valid */ + return 1; } static connection_t *_connection_new_SSL(char *dsthostname, char *dstport, diff --git a/src/irc.c b/src/irc.c index 9128c0f..f904cbc 100644 --- a/src/irc.c +++ b/src/irc.c @@ -1872,6 +1872,7 @@ void oidentd_dump(list_t *connl) free(remoteip); } } + fflush(f); fclose(f); err = chmod(tmpbuf, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); if (err) {