diff --git a/TESTS/netsocket/socket_sigio/main.cpp b/TESTS/netsocket/socket_sigio/main.cpp index e0949f7e37..853d157a92 100644 --- a/TESTS/netsocket/socket_sigio/main.cpp +++ b/TESTS/netsocket/socket_sigio/main.cpp @@ -67,16 +67,17 @@ bool find_substring(const char *first, const char *last, const char *s_first, co void get_data(TCPSocket* sock){ bool result = false; // Server will respond with HTTP GET's success code - const int ret = sock->recv(buffer, sizeof(buffer) - 1); - if(ret <= 0) - return; - - buffer[ret] = '\0'; + int len = 0; + int ret; + while((ret = sock->recv(buffer+len, sizeof(buffer) - 1 - len)) > 0) { + len += ret; + } + buffer[len] = '\0'; // Find 200 OK HTTP status in reply - bool found_200_ok = find_substring(buffer, buffer + ret, HTTP_OK_STR, HTTP_OK_STR + strlen(HTTP_OK_STR)); + bool found_200_ok = find_substring(buffer, buffer + len, HTTP_OK_STR, HTTP_OK_STR + strlen(HTTP_OK_STR)); // Find "Hello World!" string in reply - bool found_hello = find_substring(buffer, buffer + ret, HTTP_HELLO_STR, HTTP_HELLO_STR + strlen(HTTP_HELLO_STR)); + bool found_hello = find_substring(buffer, buffer + len, HTTP_HELLO_STR, HTTP_HELLO_STR + strlen(HTTP_HELLO_STR)); TEST_ASSERT_TRUE(found_200_ok); TEST_ASSERT_TRUE(found_hello); @@ -85,7 +86,7 @@ void get_data(TCPSocket* sock){ TEST_ASSERT_EQUAL(result, true); - printf("HTTP: Received %d chars from server\r\n", ret); + printf("HTTP: Received %d chars from server\r\n", len); printf("HTTP: Received 200 OK status ... %s\r\n", found_200_ok ? "[OK]" : "[FAIL]"); printf("HTTP: Received '%s' status ... %s\r\n", HTTP_HELLO_STR, found_hello ? "[OK]" : "[FAIL]"); printf("HTTP: Received message:\r\n");