From aa67d1c492339eb91094f2ea41fb8399797d0e7e Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Wed, 2 Mar 2016 19:58:35 +0300 Subject: [PATCH] Pass errors from udp_sendto to WiFiUDP::endPacket (#1696) --- libraries/ESP8266WiFi/src/WiFiUdp.cpp | 3 +-- libraries/ESP8266WiFi/src/include/UdpContext.h | 8 ++++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/libraries/ESP8266WiFi/src/WiFiUdp.cpp b/libraries/ESP8266WiFi/src/WiFiUdp.cpp index 50734d1dd..5af8d03cd 100644 --- a/libraries/ESP8266WiFi/src/WiFiUdp.cpp +++ b/libraries/ESP8266WiFi/src/WiFiUdp.cpp @@ -188,8 +188,7 @@ int WiFiUDP::endPacket() if (!_ctx) return 0; - _ctx->send(); - return 1; + return (_ctx->send()) ? 1 : 0; } size_t WiFiUDP::write(uint8_t byte) diff --git a/libraries/ESP8266WiFi/src/include/UdpContext.h b/libraries/ESP8266WiFi/src/include/UdpContext.h index 708007036..86a0b6ee5 100644 --- a/libraries/ESP8266WiFi/src/include/UdpContext.h +++ b/libraries/ESP8266WiFi/src/include/UdpContext.h @@ -257,7 +257,7 @@ public: return size; } - void send(ip_addr_t* addr = 0, uint16_t port = 0) + bool send(ip_addr_t* addr = 0, uint16_t port = 0) { size_t data_size = _tx_buf_offset; pbuf* tx_copy = pbuf_alloc(PBUF_TRANSPORT, data_size, PBUF_RAM); @@ -284,9 +284,13 @@ public: _pcb->ttl = _multicast_ttl; } - udp_sendto(_pcb, tx_copy, addr, port); + err_t err = udp_sendto(_pcb, tx_copy, addr, port); + if (err != ERR_OK) { + DEBUGV(":ust rc=%d\r\n", err); + } _pcb->ttl = old_ttl; pbuf_free(tx_copy); + return err == ERR_OK; } private: