340,6 → 340,7 |
if( ! new_socket ){ |
ERROR_CODE = ENOMEM; |
}else{ |
bzero( socket, sizeof( * socket )); |
socket_initialize( new_socket, SOCKET_GET_SOCKET_ID( call ), socket->phone, socket->service ); |
ERROR_CODE = sockets_add( socket_get_sockets(), new_socket->socket_id, new_socket ); |
if( ERROR_CODE < 0 ){ |
430,19 → 431,9 |
// create a new socket structure |
socket = ( socket_ref ) malloc( sizeof( socket_t )); |
if( ! socket ) return ENOMEM; |
if( ERROR_OCCURRED( dyn_fifo_initialize( & socket->received, SOCKET_INITIAL_RECEIVED_SIZE ))){ |
free( socket ); |
return ERROR_CODE; |
} |
if( ERROR_OCCURRED( dyn_fifo_initialize( & socket->accepted, SOCKET_INITIAL_ACCEPTED_SIZE ))){ |
dyn_fifo_destroy( & socket->received ); |
free( socket ); |
return ERROR_CODE; |
} |
bzero( socket, sizeof( * socket )); |
// request a new socket |
if( ERROR_OCCURRED(( int ) async_req_3_3( phone, NET_SOCKET, 0, 0, service, ( ipcarg_t * ) & socket_id, ( ipcarg_t * ) & socket->data_fragment_size, ( ipcarg_t * ) & socket->header_size ))){ |
dyn_fifo_destroy( & socket->received ); |
dyn_fifo_destroy( & socket->accepted ); |
free( socket ); |
return ERROR_CODE; |
} |
549,6 → 540,8 |
} |
|
int connect( int socket_id, const struct sockaddr * serv_addr, socklen_t addrlen ){ |
if( ! serv_addr ) return EDESTADDRREQ; |
if( ! addrlen ) return EDESTADDRREQ; |
// send the address |
return socket_send_data( socket_id, NET_SOCKET_CONNECT, 0, serv_addr, addrlen ); |
} |
594,8 → 587,8 |
} |
|
int sendto( int socket_id, const void * data, size_t datalength, int flags, const struct sockaddr * toaddr, socklen_t addrlen ){ |
if( ! toaddr ) return EBADMEM; |
if( ! addrlen ) return NO_DATA; |
if( ! toaddr ) return EDESTADDRREQ; |
if( ! addrlen ) return EDESTADDRREQ; |
// with the address |
return sendto_core( NET_SOCKET_SENDTO, socket_id, data, datalength, flags, toaddr, addrlen ); |
} |