diff --git a/src/udp_socket.c b/src/udp_socket.c index 59fd9b3..05b4944 100644 --- a/src/udp_socket.c +++ b/src/udp_socket.c @@ -51,11 +51,12 @@ static TR_RemoteData udpSocketRecv(TR_Socket this, size_t size) { - unsigned char buffer[size]; + unsigned char * buffer = TR_malloc(size); ssize_t received; TR_RemoteData rdata; - TR_Socket remote = TR_new(TR_UdpSocket, TR_socketLog(this), NULL, 0, 0); - + TR_Socket remote; + + remote = TR_new(TR_UdpSocket, this->log, NULL, 0, 0); remote->addrlen = this->addrlen; received = recvfrom( @@ -72,6 +73,8 @@ udpSocketRecv(TR_Socket this, size_t size) rdata = TR_new(TR_RemoteData, buffer, received, remote); } + TR_MEM_FREE(buffer); + rdata->free_remote = 1; return rdata;