From: michael Date: Mon, 27 Apr 2015 19:47:19 +0000 (+0000) Subject: - irc.c: fixed connect() issue as reported by Martin Pola X-Git-Tag: 1.0.5~7 X-Git-Url: http://git.serene-ircd.net/?a=commitdiff_plain;h=978b51624549b0c76c24e5c029a11b16d6e00324;p=hopm.git - irc.c: fixed connect() issue as reported by Martin Pola git-svn-id: svn://svn.ircd-hybrid.org/svnroot/hopm/branches/1.0.x@5855 82007160-df01-0410-b94d-b575c5fd34c7 --- diff --git a/src/irc.c b/src/irc.c index aa8a712..14c2641 100644 --- a/src/irc.c +++ b/src/irc.c @@ -83,6 +83,7 @@ static unsigned int IRC_RAW_LEN; /* Position of IRC_RAW static int IRC_FD; /* File descriptor for IRC client */ static struct sockaddr_storage IRC_SVR; /* Sock Address Struct for IRC server */ +static socklen_t svr_addrlen; static time_t IRC_LAST; /* Last full line of data from irc server */ static time_t IRC_LASTRECONNECT; /* Time of last reconnection */ @@ -180,6 +181,7 @@ irc_init(void) { struct sockaddr_in6 *in = (struct sockaddr_in6 *)&IRC_SVR; + svr_addrlen = sizeof(struct sockaddr_in6); IRC_SVR.ss_family = AF_INET6; in->sin6_port = htons(IRCItem->port); memcpy(&in->sin6_addr, address, sizeof(in->sin6_addr)); @@ -188,6 +190,7 @@ irc_init(void) { struct sockaddr_in *in = (struct sockaddr_in *)&IRC_SVR; + svr_addrlen = sizeof(struct sockaddr_in); IRC_SVR.ss_family = AF_INET; in->sin_port = htons(IRCItem->port); memcpy(&in->sin_addr, address, sizeof(in->sin_addr)); @@ -313,7 +316,7 @@ static void irc_connect(void) { /* Connect to IRC server as client. */ - if (connect(IRC_FD, (struct sockaddr *)&IRC_SVR, sizeof(IRC_SVR)) == -1) + if (connect(IRC_FD, (struct sockaddr *)&IRC_SVR, svr_addrlen) == -1) { log_printf("IRC -> connect(): error connecting to %s: %s", IRCItem->server, strerror(errno));