Beispiel #1
0
int sc_tcp_ipv4_listen(struct sc_tcp_server *self,
                      const struct sc_tcp_server_settings *settings,
                      const char *addr, unsigned port,
                      int f, unsigned backlog)
{
    struct sockaddr_in sin = { .sin_family = AF_INET };
    int e;

    //s = settings;
    if((e = init_ipv4(&sin, addr, port)) != 1)
        return e;
    return init_tcp(self, settings, (struct sockaddr *)&sin, sizeof(sin), f, backlog);
}
Beispiel #2
0
/* 1:ok, 0:bad address, -1:errno */
int eh_server_ipv4_tcp(struct eh_server *self, const char *addr, unsigned port, bool cloexec)
{
	struct sockaddr_in sin;
	int fd;

	int e = init_ipv4(&sin, addr, port);
	if (e != 1)
		return e; /* 0 or -1 */

	if ((fd = init_tcp(sin.sin_family, cloexec)) < 0)
		return -1; /* socket() call failed */
	else if (bind(fd, (struct sockaddr *)&sin, sizeof(sin)) < 0) {
		close(fd);
		return -1; /* bind() failed */
	}

	eh_io_init(&self->connection_watcher, connect_callback, self, fd, EH_READ);

	return 1;
}