aboutsummaryrefslogtreecommitdiffstats
path: root/irc.c
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2013-03-07 16:20:22 +0100
committerNatanael Copa <ncopa@alpinelinux.org>2013-03-07 16:20:22 +0100
commit93d007481e25c9db88e8b16117b0378d51951bb6 (patch)
tree4d19c74b60ab27e7aa5d03ead78bfc28e28f7905 /irc.c
parent07fe398d8f6a9b74c0263d659859bf59d66d64d2 (diff)
downloadsircbot-93d007481e25c9db88e8b16117b0378d51951bb6.tar.bz2
sircbot-93d007481e25c9db88e8b16117b0378d51951bb6.tar.xz
fix segfault when IRC server does disconnect
and fix lots of whitespace damage
Diffstat (limited to 'irc.c')
-rw-r--r--irc.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/irc.c b/irc.c
index 92a925e..5832421 100644
--- a/irc.c
+++ b/irc.c
@@ -14,11 +14,11 @@ static int tcp_connect(const char *host, int port)
struct sockaddr_in addr;
struct hostent *h;
int sock = socket(AF_INET, SOCK_STREAM, 0);
- if (sock < 0)
+ if (sock < 0)
return sock;
h = gethostbyname(host);
- if (h == NULL)
+ if (h == NULL)
return -1;
memset(&addr, 0, sizeof(addr));
@@ -38,17 +38,17 @@ struct irc_session *irc_connect(const char* server, int port, const char *nick,
{
char buf[256];
struct irc_session *sess;
-
+
sess = malloc(sizeof(struct irc_session));
if (sess == NULL)
return NULL;
-
+
sess->nick = nick;
sess->server = server;
sess->fd = tcp_connect(server, port);
- if (sess->fd < 0)
+ if (sess->fd < 0)
return NULL;
-
+
/* login */
if (pass)
irc_send(sess, "PASS", pass);
@@ -79,7 +79,9 @@ int irc_send_ping(struct irc_session *s)
int irc_close(struct irc_session *s, const char *msg)
{
- irc_send(s, "QUIT", msg ? msg : "");
- close(s->fd);
+ if (s->fd > 0) {
+ irc_send(s, "QUIT", msg ? msg : "");
+ close(s->fd);
+ }
free(s);
}