/*
 * pure-client.c : common client process for PURE network service.
 *
 * $Id: pure-client.c,v 1.1.2.1 2001/11/12 17:31:23 simm Exp $
 */

#include "pure.h"

int pure_client_connect( net_peer* peer )
{
	int sock, len;
	struct sockaddr_in sv;
	struct hostent* hp;

	/* get IP address of peer */
	if(strchr(peer->name, '.')) {
		if ( !(hp = gethostbyname( peer->name )) ) return -1;
		peer->address = ntohl( ( (struct in_addr*)hp -> h_addr_list[0] ) -> s_addr );
	} else
		peer->address = strtoul(peer->name, NULL, 0);

	/* make connection */
	if ( ( sock = socket( AF_INET, SOCK_STREAM, 0 ) ) < 0 ) return -2;

	len = sizeof( sv );
	memset( &sv, 0, len );
	sv.sin_family = AF_INET;
	sv.sin_addr.s_addr = htonl( peer->address );
	sv.sin_port = htons( peer->port );

	if ( connect( sock, (struct sockaddr*)&sv, len ) < 0 ) return -3;

	peer->handle = sock;
	printf( "[INFO] Connected\n" );

	return 0;
}


syntax highlighted by Code2HTML, v. 0.9.1