aboutsummaryrefslogtreecommitdiffstats
path: root/sock_conn.c
diff options
context:
space:
mode:
authorFreeArtMan <dos21h@gmail.com>2017-02-25 14:00:08 +0000
committerFreeArtMan <dos21h@gmail.com>2017-02-25 14:00:08 +0000
commit913db4648dabfce65e58a128a35c356ac0042ae9 (patch)
tree3ab20d68273d9866ef13a521fc857c4a3f577b0a /sock_conn.c
parentfbf4aa43078f95d4ed3de0c9e897711bebf90eac (diff)
downloadagni-913db4648dabfce65e58a128a35c356ac0042ae9.tar.gz
agni-913db4648dabfce65e58a128a35c356ac0042ae9.zip
joined up socket connection code to main server thread. hardcoded echo/replay command is working
Diffstat (limited to 'sock_conn.c')
-rw-r--r--sock_conn.c38
1 files changed, 36 insertions, 2 deletions
diff --git a/sock_conn.c b/sock_conn.c
index a57ca7b..b15ce47 100644
--- a/sock_conn.c
+++ b/sock_conn.c
@@ -27,11 +27,23 @@ irc_buf* irc_buf_create()
ret->out_size = 0;
ret->max_out_size = IRC_BUF_OUT_SIZE;
ret->buf_out = malloc(ret->max_out_size);
+ if (ret->buf_out == NULL)
+ {
+ free(ret);
+ PERM();
+ return NULL;
+ }
memset(ret->buf_out, 0, ret->max_out_size);
ret->in_size = 0;
ret->max_in_size = IRC_BUF_IN_SIZE;
ret->buf_in = malloc(ret->max_in_size);
+ if (ret->buf_in == NULL)
+ {
+ free(ret->buf_out);
+ free(ret);
+ return NULL;
+ }
memset(ret->buf_in, 0, ret->max_in_size);
ret->ready = 0;
@@ -228,15 +240,37 @@ connect to hostname:port return fd>0 if connection succesful
int irc_connect( char *hostname, char *port )
{
int fd=0;
+ int fret=-1;
struct addrinfo serv, *res;
+ if (hostname == NULL)
+ {
+ PERM();
+ return -1;
+ }
+
+ if (port == NULL)
+ {
+ PERM();
+ return -1;
+ }
+
memset(&serv, 0, sizeof(serv));
serv.ai_family = AF_INET;
serv.ai_socktype = SOCK_STREAM;
- getaddrinfo(hostname, port, &serv, &res);
+ if (0 != getaddrinfo(hostname, port, &serv, &res))
+ {
+ PERM();
+ return -1;
+ }
fd = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
- connect(fd, res->ai_addr, res->ai_addrlen);
+ fret = connect(fd, res->ai_addr, res->ai_addrlen);
+ if (fret!=0)
+ {
+ PERM();
+ return -1;
+ }
//?
//freeaddrinfo(&serv);