From 3049d48d560dfe1a676de3fe8e4aeec5f8ebf059 Mon Sep 17 00:00:00 2001 From: Jon Watte Date: Sun, 10 May 2015 14:00:50 -0700 Subject: [PATCH] Fix UDP send to not temporarily use connect() --- libraries/ESP8266WiFi/src/WiFiUdp.cpp | 12 ++++++------ libraries/ESP8266WiFi/src/WiFiUdp.h | 2 ++ libraries/ESP8266WiFi/src/include/UdpContext.h | 2 +- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/libraries/ESP8266WiFi/src/WiFiUdp.cpp b/libraries/ESP8266WiFi/src/WiFiUdp.cpp index f2328aa6b..df736742d 100644 --- a/libraries/ESP8266WiFi/src/WiFiUdp.cpp +++ b/libraries/ESP8266WiFi/src/WiFiUdp.cpp @@ -132,14 +132,13 @@ int WiFiUDP::beginPacket(const char *host, uint16_t port) int WiFiUDP::beginPacket(IPAddress ip, uint16_t port) { - ip_addr_t addr; - addr.addr = ip; - if (!_ctx) { _ctx = new UdpContext; _ctx->ref(); } - return (_ctx->connect(addr, port)) ? 1 : 0; + begunIp_ = ip; + begunPort_= port; + return 1; } int WiFiUDP::beginPacketMulticast(IPAddress multicastAddress, uint16_t port, @@ -167,8 +166,9 @@ int WiFiUDP::endPacket() if (!_ctx) return 0; - _ctx->send(); - _ctx->disconnect(); + ip_addr_t addr; + addr.addr = begunIp_; + _ctx->send(&addr, begunPort_); return 1; } diff --git a/libraries/ESP8266WiFi/src/WiFiUdp.h b/libraries/ESP8266WiFi/src/WiFiUdp.h index a6bdc00da..880984745 100644 --- a/libraries/ESP8266WiFi/src/WiFiUdp.h +++ b/libraries/ESP8266WiFi/src/WiFiUdp.h @@ -31,6 +31,8 @@ class UdpContext; class WiFiUDP : public UDP { private: UdpContext* _ctx; + IPAddress begunIp_; + uint16_t begunPort_; public: WiFiUDP(); // Constructor diff --git a/libraries/ESP8266WiFi/src/include/UdpContext.h b/libraries/ESP8266WiFi/src/include/UdpContext.h index e244486e1..bd818e8e4 100644 --- a/libraries/ESP8266WiFi/src/include/UdpContext.h +++ b/libraries/ESP8266WiFi/src/include/UdpContext.h @@ -281,7 +281,7 @@ private: void _reserve(size_t size) { - const size_t pbuf_unit_size = 1024; + const size_t pbuf_unit_size = 512; if (!_tx_buf_head) { _tx_buf_head = pbuf_alloc(PBUF_TRANSPORT, pbuf_unit_size, PBUF_RAM);