예제 #1
0
/** 
* @brief Accept packets
* 
* @param server      server connection
* @param transport   new connected transport
* 
* @retval WG_SUCCESS
* @retval WG_FAILURE
*/
wg_status
transport_server_accept(Wg_transport *server,
        Wg_transport *transport)
{
    int sock_status = -1;

    CHECK_FOR_NULL_PARAM(server);
    CHECK_FOR_NULL_PARAM(transport);

    sock_status = accept(server->transport.out_fd, 
            (struct sockaddr*)&transport->sockaddr, &server->sockaddr_size);
    if (-1 == sock_status){
        WG_LOG("%s\n", strerror(errno));
        return WG_FAILURE;
    }

    memset(transport, '\0', sizeof (Wg_transport));

    transport->sockaddr_size      = server->sockaddr_size;

    transport->transport.out_fd   = sock_status;
    transport->transport.domain   = server->transport.domain;
    transport->transport.type     = server->transport.type;
    transport->transport.protocol = server->transport.protocol;
    transport->transport.is_connected = WG_TRUE;

    wg_strdup(server->transport.address, &transport->transport.address);

    return WG_SUCCESS;
}
예제 #2
0
extern void *fp_Init(const char *name)
{
	fp_t *h = (fp_t *)wg_zalloc( sizeof(fp_t) );
	
	if ( name ) {
		h->name = wg_strdup(name);
	}

	return (void *)h;
}