diff --git a/include/tr/socket.h b/include/tr/socket.h index d8888ab..018331a 100644 --- a/include/tr/socket.h +++ b/include/tr/socket.h @@ -37,6 +37,9 @@ //#include "tr/interface/socket.h" #include "tr/logger.h" +#define TR_UDP_MAX_READ_BLOCK 8 * 1024 +#define TR_TCP_MAX_READ_BLOCK 256 * 1024 + typedef enum TR_e_socket_fin { TR_FIN_NO = 0, TR_FIN_RD = 1, diff --git a/src/tcp_socket.c b/src/tcp_socket.c index c14731c..fe54a9d 100644 --- a/src/tcp_socket.c +++ b/src/tcp_socket.c @@ -89,10 +89,13 @@ static TR_RemoteData tcpSocketRecv(TR_Socket this, size_t size) { - unsigned char buffer[size = size>8192 ? 8192 : size]; TR_RemoteData rdata = NULL; ssize_t received; + size = size>TR_TCP_MAX_READ_BLOCK ? TR_TCP_MAX_READ_BLOCK : size; + + unsigned char buffer[size]; + received = recv(this->handle, buffer, size, this->flags); if (-1 == received) { diff --git a/src/udp_socket.c b/src/udp_socket.c index 3c99927..a7a9ce4 100644 --- a/src/udp_socket.c +++ b/src/udp_socket.c @@ -51,11 +51,14 @@ static TR_RemoteData udpSocketRecv(TR_Socket this, size_t size) { - unsigned char buffer[size = size>8192 ? 8192 : size]; ssize_t received; TR_RemoteData rdata; TR_Socket remote = TR_new(TR_UdpSocket, this->log, NULL, 0, 0); + size = size>TR_UDP_MAX_READ_BLOCK ? TR_UDP_MAX_READ_BLOCK : size; + + unsigned char buffer[size]; + remote->addrlen = this->addrlen; received = recvfrom(