All pastes #593512 Raw Edit

Miscellany

public text v1 · immutable
#593512 ·published 2007-06-28 11:19 UTC
rendered paste body
int sock_connect(struct sock_t *sock)
{
	struct sockaddr_in sin;
	int ce;
	char c[10];

	TRACE_ENTER

	DEBUG("connecting to %s:%d\n", sock->ip, sock->port);
	
	sock->fd = socket(AF_INET, SOCK_STREAM, 0);
	if (sock->fd == -1)
	{
		return -1;
	}
	
	if (inet_aton(sock->ip, &sin) != 1)
	{
		perror("inet_aton");
		exit(0);
	}
	sin.sin_port = htons(sock->port);

	DEBUG("ip %s:%d\n", inet_ntoa(sin), ntohs(sin.sin_port));

	sin.sin_family = AF_INET;

	fcntl(sock->fd, F_SETFL, O_NONBLOCK);

	ce = connect(sock->fd, (struct sockaddr *)&sin, sizeof(sin));
	if (ce == -1)
	{
		if (errno != 36)
		{
			// sads :(
			DEBUG("connect() failed: %d\n", errno);
			perror("connect");
			TRACE_LEAVE
			return -1;
		}
	}

	event_set(&sock->ev, sock->fd, EV_READ, sock_on_connect, sock);
	sock->tv.tv_sec = 50;
	sock->tv.tv_usec = 0;
	event_add(&sock->ev, &sock->tv);
	
	TRACE_LEAVE
}