int port = atoi (optarg);
if (port > 0 && port < 65536)
{
- rxpd_socket_new_tcp4 (rxpd, NULL, port);
- // TODO error handling
+ if (!rxpd_socket_new_tcp4 (rxpd, NULL, port))
+ rxpd_fail (rxpd, "Could not open listening socket on port %d\n", port);
}
else
rxpd_fail (rxpd, "Illegal port number\n");
if (addr)
{
if (inet_aton (addr, &listen_addr.sin_addr) == 0)
- abort();
+ goto esocket;
}
else
listen_addr.sin_addr.s_addr = INADDR_ANY;
listen_addr.sin_port = htons(port);
if (bind (self->fd, (struct sockaddr*)&listen_addr, sizeof (listen_addr)) == -1)
- abort();
+ goto esocket;
static int yes = 1;
if (setsockopt (self->fd, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(int)) == -1)
- abort ();
+ goto esocket;
if (listen (self->fd, 20) == -1)
- abort ();
+ goto esocket;
self->rxpd_socket_addr = rxpd_socket_tcp4addr;
rxpd_log (base, LOG_INFO, "Listening on tcp4:%d\n", port);
return self;
+
+ esocket:
+ free (self);
+ return NULL;
}
int