testprogs/win32/rpcecho-win32-pipe/server.c ...
authorStefan Metzmacher <metze@samba.org>
Sun, 22 Sep 2013 06:29:18 +0000 (08:29 +0200)
committerStefan Metzmacher <metze@samba.org>
Tue, 4 Jun 2019 11:15:20 +0000 (13:15 +0200)
testprogs/win32/rpcecho-win32-pipe/server.c

index 4f4657af27a70bb4ea1276178ceb36f80fa5e12b..ea8ed694c4ef3733e25e5676e458bf65072283a1 100755 (executable)
@@ -154,7 +154,8 @@ void TestBytePipeIn(
        long chunk_size,
        ASYNC_BYTE_PIPE *in_pipe)
 {
-       long ret;
+       RPC_STATUS status;
+       long ret = -1;
        byte *in_bytes;
        int in_alloc_size;
        int in_bytes_count;
@@ -163,20 +164,36 @@ void TestBytePipeIn(
        printf("TestBytePipeIn: Start\n");
        fflush(stdout);
 
-       in_alloc_size = 5840 * sizeof(byte);
+       in_alloc_size = chunk_size * sizeof(byte);
        in_bytes = malloc(in_alloc_size);
+       if (in_bytes == NULL) {
+               printf("nomem: %d\n", in_alloc_size);
+               fflush(stdout);
+               ret = -2;
+               goto done;
+       }
 
        in_bytes_count = chunk_size;
        for (i=0; in_bytes_count > 0; i++) {
                in_bytes_count = 0;
-               in_pipe->pull(in_pipe->state, in_bytes, in_alloc_size, &in_bytes_count);
+               status = in_pipe->pull(in_pipe->state, in_bytes, in_alloc_size, &in_bytes_count);
+               if (status != 0) {
+                       printf("status: %d\n", status);
+                       fflush(stdout);
+                       ret = -3;
+                       goto done;
+               }
                printf("pull[%u] bytes_count[%u]\n", i, in_bytes_count);
                fflush(stdout);
        }
 
-       printf("TestBytePipeIn: End\n");
-       fflush(stdout);
        ret = i;
+done:
+       printf("TestBytePipeIn: End ret[%d]\n", ret);
+       fflush(stdout);
+       if (in_bytes) {
+               free(in_bytes);
+       }
        RpcAsyncCompleteCall(TestBytePipeIn_AsyncHandle, &ret);
 }
 
@@ -186,7 +203,8 @@ void TestBytePipeOut(
        long chunk_size,
        ASYNC_BYTE_PIPE *out_pipe)
 {
-       long ret;
+       RPC_STATUS status;
+       long ret = -1;
        byte *out_bytes = NULL;
        unsigned long out_alloc_size = 0;
        unsigned long out_bytes_count = 0;
@@ -196,7 +214,13 @@ void TestBytePipeOut(
        fflush(stdout);
 
        out_alloc_size = chunk_size * sizeof(byte);
-       out_pipe->alloc(out_pipe->state, out_alloc_size, &out_bytes, &out_bytes_count);
+       status = out_pipe->alloc(out_pipe->state, out_alloc_size, &out_bytes, &out_bytes_count);
+       if (status != 0) {
+               printf("status: %d\n", status);
+               fflush(stdout);
+               ret = -2;
+               goto done;
+       }
        memset(out_bytes, 0xCC, out_bytes_count * sizeof(byte));
 
        for (i = 0; i <= num_chunks; i++) {
@@ -205,12 +229,22 @@ void TestBytePipeOut(
                }
                printf("[%u] push outb_len[%u]\n", i, out_bytes_count);
                fflush(stdout);
-               out_pipe->push(out_pipe->state, out_bytes, out_bytes_count);
+               status = out_pipe->push(out_pipe->state, out_bytes, out_bytes_count);
+               if (status != 0) {
+                       printf("status: %d\n", status);
+                       fflush(stdout);
+                       ret = -3;
+                       goto done;
+               }
        }
 
-       printf("TestBytePipeOut: End\n");
-       fflush(stdout);
        ret = i;
+done:
+       printf("TestBytePipeOut: End ret[%d]\n", ret);
+       fflush(stdout);
+       if (out_bytes) {
+               free(out_bytes);
+       }
        RpcAsyncCompleteCall(TestBytePipeOut_AsyncHandle, &ret);
 }