nfs4: Fix receiving from stream transport protocols
This commit is contained in:
@@ -318,10 +318,10 @@ ConnectionStream::Receive(void** _buffer, uint32* _size)
|
|||||||
{
|
{
|
||||||
status_t result;
|
status_t result;
|
||||||
|
|
||||||
int32 size = 0;
|
uint32 size = 0;
|
||||||
void* buffer = NULL;
|
void* buffer = NULL;
|
||||||
|
|
||||||
int32 record_size;
|
uint32 record_size;
|
||||||
bool last_one;
|
bool last_one;
|
||||||
|
|
||||||
object_wait_info object[2];
|
object_wait_info object[2];
|
||||||
@@ -359,7 +359,7 @@ ConnectionStream::Receive(void** _buffer, uint32* _size)
|
|||||||
}
|
}
|
||||||
|
|
||||||
record_size = ntohl(record_size);
|
record_size = ntohl(record_size);
|
||||||
last_one = record_size < 0;
|
last_one = static_cast<int32>(record_size) < 0;
|
||||||
record_size &= LAST_FRAGMENT - 1;
|
record_size &= LAST_FRAGMENT - 1;
|
||||||
|
|
||||||
void* ptr = realloc(buffer, size + record_size);
|
void* ptr = realloc(buffer, size + record_size);
|
||||||
@@ -374,7 +374,7 @@ ConnectionStream::Receive(void** _buffer, uint32* _size)
|
|||||||
result = recv(fSocket, (uint8*)buffer + size + received,
|
result = recv(fSocket, (uint8*)buffer + size + received,
|
||||||
record_size - received, 0);
|
record_size - received, 0);
|
||||||
received += result;
|
received += result;
|
||||||
} while (result > 0 && received < sizeof(record_size));
|
} while (result > 0 && received < record_size);
|
||||||
if (result < 0) {
|
if (result < 0) {
|
||||||
result = errno;
|
result = errno;
|
||||||
free(buffer);
|
free(buffer);
|
||||||
|
|||||||
Reference in New Issue
Block a user