1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-07-27 18:02:17 +03:00

Updater.cpp:

- use new AutoInterruptLock
 - add delay to give the RTOS some time to handle TCP

WiFiClient.cpp
 - add stopAllexcepted to cancel all TCP excepted one

ClientContext.h
 - add getLocalPort()

ESP8266HTTPUpdate.cpp
 - close all not needed TCP and UDP

osapi.h
 - missing commit from SDK
This commit is contained in:
Markus Sattler
2015-08-29 13:45:58 +02:00
parent 4ad894683e
commit 8e50cdb190
9 changed files with 78 additions and 24 deletions

View File

@ -284,3 +284,27 @@ void WiFiClient::stopAll()
}
}
}
void WiFiClient::stopAllexcepted(WiFiClient * exC) {
for (WiFiClient* it = _s_first; it; it = it->_next) {
ClientContext* c = it->_client;
if(c && exC->_client) {
if(exC->_client->getRemoteAddress() == c->getRemoteAddress()) {
if(exC->_client->getRemotePort() == c->getRemotePort()) {
if(exC->_client->getLocalPort() == c->getLocalPort()) {
// ignore this
c = NULL;
}
}
}
}
if (c) {
c->abort();
c->unref();
it->_client = 0;
}
}
}

View File

@ -91,6 +91,7 @@ public:
using Print::write;
static void stopAll();
static void stopAllexcepted(WiFiClient * c);
private:

View File

@ -125,6 +125,12 @@ class ClientContext {
return _pcb->remote_port;
}
uint16_t getLocalPort() {
if(!_pcb) return 0;
return _pcb->local_port;
}
size_t getSize() const {
if(!_rx_buf) return 0;