Showing
3 changed files
with
11 additions
and
2 deletions
| @@ -37,6 +37,9 @@ | @@ -37,6 +37,9 @@ | ||
| 37 | //#include "tr/interface/socket.h" | 37 | //#include "tr/interface/socket.h" |
| 38 | #include "tr/logger.h" | 38 | #include "tr/logger.h" |
| 39 | 39 | ||
| 40 | +#define TR_UDP_MAX_READ_BLOCK 8 * 1024 | ||
| 41 | +#define TR_TCP_MAX_READ_BLOCK 256 * 1024 | ||
| 42 | + | ||
| 40 | typedef enum TR_e_socket_fin { | 43 | typedef enum TR_e_socket_fin { |
| 41 | TR_FIN_NO = 0, | 44 | TR_FIN_NO = 0, |
| 42 | TR_FIN_RD = 1, | 45 | TR_FIN_RD = 1, |
| @@ -89,10 +89,13 @@ static | @@ -89,10 +89,13 @@ static | ||
| 89 | TR_RemoteData | 89 | TR_RemoteData |
| 90 | tcpSocketRecv(TR_Socket this, size_t size) | 90 | tcpSocketRecv(TR_Socket this, size_t size) |
| 91 | { | 91 | { |
| 92 | - unsigned char buffer[size = size>8192 ? 8192 : size]; | ||
| 93 | TR_RemoteData rdata = NULL; | 92 | TR_RemoteData rdata = NULL; |
| 94 | ssize_t received; | 93 | ssize_t received; |
| 95 | 94 | ||
| 95 | + size = size>TR_TCP_MAX_READ_BLOCK ? TR_TCP_MAX_READ_BLOCK : size; | ||
| 96 | + | ||
| 97 | + unsigned char buffer[size]; | ||
| 98 | + | ||
| 96 | received = recv(this->handle, buffer, size, this->flags); | 99 | received = recv(this->handle, buffer, size, this->flags); |
| 97 | 100 | ||
| 98 | if (-1 == received) { | 101 | if (-1 == received) { |
| @@ -51,11 +51,14 @@ static | @@ -51,11 +51,14 @@ static | ||
| 51 | TR_RemoteData | 51 | TR_RemoteData |
| 52 | udpSocketRecv(TR_Socket this, size_t size) | 52 | udpSocketRecv(TR_Socket this, size_t size) |
| 53 | { | 53 | { |
| 54 | - unsigned char buffer[size = size>8192 ? 8192 : size]; | ||
| 55 | ssize_t received; | 54 | ssize_t received; |
| 56 | TR_RemoteData rdata; | 55 | TR_RemoteData rdata; |
| 57 | TR_Socket remote = TR_new(TR_UdpSocket, this->log, NULL, 0, 0); | 56 | TR_Socket remote = TR_new(TR_UdpSocket, this->log, NULL, 0, 0); |
| 58 | 57 | ||
| 58 | + size = size>TR_UDP_MAX_READ_BLOCK ? TR_UDP_MAX_READ_BLOCK : size; | ||
| 59 | + | ||
| 60 | + unsigned char buffer[size]; | ||
| 61 | + | ||
| 59 | remote->addrlen = this->addrlen; | 62 | remote->addrlen = this->addrlen; |
| 60 | 63 | ||
| 61 | received = recvfrom( | 64 | received = recvfrom( |
Please
register
or
login
to post a comment