--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/irc_net.c Mon Mar 09 16:30:59 2009 +0200
@@ -0,0 +1,46 @@
+#include "irc_net.h"
+#include "log.h"
+
+#include <stdlib.h>
+
+err_t irc_net_create (struct irc_net **net_ptr, const struct irc_net_info *info, struct error_info *err)
+{
+ struct irc_net *net;
+ struct sock_stream *sock;
+
+ // allocate
+ if ((net = calloc(1, sizeof(*net))) == NULL)
+ return SET_ERROR(err, ERR_CALLOC);
+
+ // XXX: over-simplified blocking connect
+ if (info->use_ssl) {
+ log_info("connecting to [%s]:%s using SSL", info->hostname, info->service);
+
+ if (sock_ssl_connect(&sock, info->hostname, info->service, err))
+ goto error;
+
+ } else {
+ log_info("connecting to [%s]:%s", info->hostname, info->service);
+
+ if (sock_tcp_connect(&sock, info->hostname, info->service, err))
+ goto error;
+
+ }
+
+ log_info("connected, registering");
+
+ // create the irc connection state
+ if (irc_conn_create(&net->conn, sock, &info->register_info, err))
+ goto error;
+
+ // ok
+ *net_ptr = net;
+
+ return SUCCESS;
+
+error:
+ // XXX: cleanup
+
+ return ERROR_CODE(err);
+}
+