diff options
Diffstat (limited to 'sircbot.c')
-rw-r--r-- | sircbot.c | 16 |
1 files changed, 10 insertions, 6 deletions
@@ -303,6 +303,14 @@ int parse_irc_data(struct sircbot_session *sb, char *buf) return 0; } +static int irc_server_disconnect(struct irc_session *is) +{ + syslog(LOG_ERR, "%s: connection closed", is->server); + close(is->fd); + is->fd = -1; + return 0; +} + /* callback functions */ static int irc_server_cb(struct sircbot_session *sb, struct pollfd *fds, void *ctx) @@ -311,13 +319,9 @@ static int irc_server_cb(struct sircbot_session *sb, struct pollfd *fds, int r; struct irc_session *sess = (struct irc_session *) ctx; - if (fds->revents & POLLHUP) { + if (fds->revents & POLLHUP) /* server hang up on us */ - printf("DEBUG: %s: connection closed\n", sess ? sess->server : "null"); - close(sess->fd); - sess->fd = -1; - return 0; - } + return irc_server_disconnect(sess); if (fds->revents & POLLERR) { log_err(sess->server); |