X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/4d84efe2058c35c8592669a0d7bc14dd875003b5..2f63dce7911dd967b5fd4acadc46a6010c8c0662:/src/gras/Transport/transport_plugin_tcp.c diff --git a/src/gras/Transport/transport_plugin_tcp.c b/src/gras/Transport/transport_plugin_tcp.c index e11e8dc416..4b3fa1e0ec 100644 --- a/src/gras/Transport/transport_plugin_tcp.c +++ b/src/gras/Transport/transport_plugin_tcp.c @@ -42,12 +42,12 @@ gras_error_t gras_trp_tcp_socket_accept(gras_socket_t *sock, void gras_trp_tcp_socket_close(gras_socket_t *sd); gras_error_t gras_trp_tcp_chunk_send(gras_socket_t *sd, - char *data, - size_t size); + const char *data, + long int size); gras_error_t gras_trp_tcp_chunk_recv(gras_socket_t *sd, char *data, - size_t size); + long int size); void gras_trp_tcp_exit(gras_trp_plugin_t *plug); @@ -92,6 +92,8 @@ gras_trp_tcp_setup(gras_trp_plugin_t *plug) { plug->chunk_send = gras_trp_tcp_chunk_send; plug->chunk_recv = gras_trp_tcp_chunk_recv; + plug->flush = NULL; /* nothing's cached */ + plug->data = (void*)data; plug->exit = gras_trp_tcp_exit; @@ -199,22 +201,21 @@ gras_error_t gras_trp_tcp_socket_accept(gras_socket_t *sock, gras_socket_t **dst) { gras_socket_t *res; + gras_error_t errcode; struct sockaddr_in peer_in; socklen_t peer_in_len = sizeof(peer_in); int sd; int tmp_errno; - - res=malloc(sizeof(gras_socket_t)); - if (!res) - RAISE_MALLOC; + + TRY(gras_trp_socket_new(1,&res)); sd = accept(sock->sd, (struct sockaddr *)&peer_in, &peer_in_len); tmp_errno = errno; if(sd == -1) { - gras_socket_close(&sock); + gras_socket_close(sock); RAISE1(system_error, "Accept failed (%s). Droping server socket.", strerror(tmp_errno)); } else { @@ -226,13 +227,13 @@ gras_trp_tcp_socket_accept(gras_socket_t *sock, WARN0("setsockopt failed, cannot condition the accepted socket"); } - /* FIXME: bufSize removed until we can have optionsets - i = ((gras_trp_tcp_sock_specific_t*)sock->specific)->buffsize; - if (setsockopt(sd, SOL_SOCKET, SO_RCVBUF, (char *)&i, s) - || setsockopt(sd, SOL_SOCKET, SO_SNDBUF, (char *)&i, s)) { - WARNING0("setsockopt failed, cannot set buffsize"); - } - */ + /* FIXME: bufSize removed until we can have optionsets + i = ((gras_trp_tcp_sock_specific_t*)sock->specific)->buffsize; + if (setsockopt(sd, SOL_SOCKET, SO_RCVBUF, (char *)&i, s) + || setsockopt(sd, SOL_SOCKET, SO_SNDBUF, (char *)&i, s)) { + WARNING0("setsockopt failed, cannot set buffsize"); + } + */ res->plugin = sock->plugin; res->incoming = sock->incoming; @@ -259,7 +260,7 @@ gras_trp_tcp_socket_accept(gras_socket_t *sock, } } - VERB3("accepted socket %d to %s:%d\n", sd, res->peer_name,res->peer_port); + VERB3("accepted socket %d to %s:%d", sd, res->peer_name,res->peer_port); *dst = res; @@ -309,8 +310,8 @@ void gras_trp_tcp_socket_close(gras_socket_t *sock){ */ gras_error_t gras_trp_tcp_chunk_send(gras_socket_t *sock, - char *data, - size_t size) { + const char *data, + long int size) { /* TCP sockets are in duplex mode, don't check direction */ gras_assert0(size >= 0, "Cannot send a negative amount of data"); @@ -322,8 +323,8 @@ gras_trp_tcp_chunk_send(gras_socket_t *sock, DEBUG3("write(%d, %p, %ld);", sock->sd, data, size); if (status == -1) { - RAISE4(system_error,"write(%d,%p,%d) failed: %s", - sock->sd, data, (int)size, + RAISE4(system_error,"write(%d,%p,%ld) failed: %s", + sock->sd, data, size, strerror(errno)); } @@ -345,7 +346,7 @@ gras_trp_tcp_chunk_send(gras_socket_t *sock, gras_error_t gras_trp_tcp_chunk_recv(gras_socket_t *sock, char *data, - size_t size) { + long int size) { /* TCP sockets are in duplex mode, don't check direction */ gras_assert0(sock, "Cannot recv on an NULL socket");