aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sircbot.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/sircbot.c b/sircbot.c
index bb965ad..89c175c 100644
--- a/sircbot.c
+++ b/sircbot.c
@@ -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);