diff --git a/TESTS/netsocket/udp/udpsocket_sendto_invalid.cpp b/TESTS/netsocket/udp/udpsocket_sendto_invalid.cpp index 6b16c28a15..a911c8a533 100644 --- a/TESTS/netsocket/udp/udpsocket_sendto_invalid.cpp +++ b/TESTS/netsocket/udp/udpsocket_sendto_invalid.cpp @@ -32,7 +32,12 @@ void UDPSOCKET_SENDTO_INVALID() TEST_ASSERT(sock.sendto(NULL, 9, NULL, 0) < 0); TEST_ASSERT(sock.sendto("", 9, NULL, 0) < 0); TEST_ASSERT(sock.sendto("", 0, NULL, 0) < 0); - TEST_ASSERT_EQUAL(0, sock.sendto(MBED_CONF_APP_ECHO_SERVER_ADDR, 9, NULL, 0)); + + nsapi_error_t result = sock.sendto(MBED_CONF_APP_ECHO_SERVER_ADDR, 9, NULL, 0); + if (result != NSAPI_ERROR_UNSUPPORTED) { + TEST_ASSERT_EQUAL(0, result); + } + TEST_ASSERT_EQUAL(5, sock.sendto(MBED_CONF_APP_ECHO_SERVER_ADDR, 9, "hello", 5)); TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.close()); diff --git a/components/wifi/esp8266-driver/ESP8266Interface.cpp b/components/wifi/esp8266-driver/ESP8266Interface.cpp index 08c9100587..eea53d71a4 100644 --- a/components/wifi/esp8266-driver/ESP8266Interface.cpp +++ b/components/wifi/esp8266-driver/ESP8266Interface.cpp @@ -568,6 +568,11 @@ int ESP8266Interface::socket_send(void *handle, const void *data, unsigned size) return NSAPI_ERROR_NO_SOCKET; } + if (!size) { + // Firmware limitation + return socket->proto == NSAPI_TCP ? 0 : NSAPI_ERROR_UNSUPPORTED; + } + unsigned long int sendStartTime = rtos::Kernel::get_ms_count(); do { status = _esp.send(socket->id, data, size);