From: John Hodge Date: Sun, 7 Oct 2012 08:57:42 +0000 (+0800) Subject: Merge branch 'master' of ssh.ucc.asn.au:tpg/acess2 X-Git-Tag: rel0.15~694 X-Git-Url: https://git.ucc.asn.au/?a=commitdiff_plain;h=3404389a8118dee78c22e5fbbf04ed99094202ef;hp=-c;p=tpg%2Facess2.git Merge branch 'master' of ssh.ucc.asn.au:tpg/acess2 --- 3404389a8118dee78c22e5fbbf04ed99094202ef diff --combined AcessNative/ld-acess_src/request.c index 1560eb7b,63419d56..c9e85657 --- a/AcessNative/ld-acess_src/request.c +++ b/AcessNative/ld-acess_src/request.c @@@ -190,7 -190,6 +190,7 @@@ int SendRequest(tRequestHeader *Request printf("\n"); } #endif + #if DEBUG { int i; char *data = (char*)&Request->Params[Request->NParams]; @@@ -220,7 -219,6 +220,7 @@@ } DEBUG_S("\n"); } + #endif // Send it off SendData(Request, RequestSize); @@@ -228,23 -226,7 +228,23 @@@ if( Request->CallID == SYS_EXIT ) return 0; // Wait for a response (no timeout) - return ReadData(Request, ResponseSize, 0); + ReadData(Request, sizeof(*Request), 0); + // TODO: Sanity + size_t recvbytes = sizeof(*Request), expbytes = Request->MessageLength; + char *ptr = (void*)Request->Params; + while( recvbytes < expbytes ) + { + size_t len = ReadData(ptr, expbytes - recvbytes, 1000); + if( len == -1 ) { + return -1; + } + recvbytes += len; + ptr += len; + } + if( recvbytes > expbytes ) { + // TODO: Warning + } + return recvbytes; } void SendData(void *Data, int Length) @@@ -293,7 -275,7 +293,7 @@@ int ReadData(void *Dest, int MaxLength if( !ret ) { printf("[ERROR %i] Timeout reading from socket\n", giSyscall_ClientID); - return 0; // Timeout + return -2; // Timeout } #if USE_TCP @@@ -307,6 -289,10 +307,10 @@@ perror("ReadData"); exit(-1); } + if( ret == 0 ) { + fprintf(stderr, "[ERROR %i] Connection closed.\n", giSyscall_ClientID); + exit(0); + } DEBUG_S("%i bytes read from socket\n", ret);