Merge pull request #2461 from esphome/bump-2021.9.3

2021.9.3
This commit is contained in:
Otto Winter 2021-10-08 10:37:52 +02:00 committed by GitHub
commit f3ec4b514d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 39 additions and 16 deletions

View file

@ -121,7 +121,7 @@ async def to_code(config):
decoded = base64.b64decode(conf[CONF_KEY])
cg.add(var.set_noise_psk(list(decoded)))
cg.add_define("USE_API_NOISE")
cg.add_library("esphome/noise-c", "0.1.1")
cg.add_library("esphome/noise-c", "0.1.3")
else:
cg.add_define("USE_API_PLAINTEXT")

View file

@ -126,6 +126,14 @@ APIError APINoiseFrameHelper::init() {
return APIError::TCP_NONBLOCKING_FAILED;
}
int enable = 1;
err = socket_->setsockopt(IPPROTO_TCP, TCP_NODELAY, &enable, sizeof(int));
if (err != 0) {
state_ = State::FAILED;
HELPER_LOG("Setting nodelay failed with errno %d", errno);
return APIError::TCP_NODELAY_FAILED;
}
// init prologue
prologue_.insert(prologue_.end(), PROLOGUE_INIT, PROLOGUE_INIT + strlen(PROLOGUE_INIT));
@ -721,6 +729,13 @@ APIError APIPlaintextFrameHelper::init() {
HELPER_LOG("Setting nonblocking failed with errno %d", errno);
return APIError::TCP_NONBLOCKING_FAILED;
}
int enable = 1;
err = socket_->setsockopt(IPPROTO_TCP, TCP_NODELAY, &enable, sizeof(int));
if (err != 0) {
state_ = State::FAILED;
HELPER_LOG("Setting nodelay failed with errno %d", errno);
return APIError::TCP_NODELAY_FAILED;
}
state_ = State::DATA;
return APIError::OK;

View file

@ -134,6 +134,11 @@ void APIServer::loop() {
void APIServer::dump_config() {
ESP_LOGCONFIG(TAG, "API Server:");
ESP_LOGCONFIG(TAG, " Address: %s:%u", network_get_address().c_str(), this->port_);
#ifdef USE_API_NOISE
ESP_LOGCONFIG(TAG, " Using noise encryption: YES");
#else
ESP_LOGCONFIG(TAG, " Using noise encryption: NO");
#endif
}
bool APIServer::uses_password() const { return !this->password_.empty(); }
bool APIServer::check_password(const std::string &password) const {

View file

@ -256,7 +256,7 @@ class LWIPRawImpl : public Socket {
errno = EINVAL;
return -1;
}
*reinterpret_cast<int *>(optval) = tcp_nagle_disabled(pcb_);
*reinterpret_cast<int *>(optval) = nodelay_;
*optlen = 4;
return 0;
}
@ -285,11 +285,7 @@ class LWIPRawImpl : public Socket {
return -1;
}
int val = *reinterpret_cast<const int *>(optval);
if (val != 0) {
tcp_nagle_disable(pcb_);
} else {
tcp_nagle_enable(pcb_);
}
nodelay_ = val;
return 0;
}
@ -443,9 +439,11 @@ class LWIPRawImpl : public Socket {
if (written == 0)
// no need to output if nothing written
return 0;
int err = internal_output();
if (err == -1)
return -1;
if (nodelay_) {
int err = internal_output();
if (err == -1)
return -1;
}
return written;
}
ssize_t writev(const struct iovec *iov, int iovcnt) override {
@ -465,9 +463,11 @@ class LWIPRawImpl : public Socket {
if (written == 0)
// no need to output if nothing written
return 0;
int err = internal_output();
if (err == -1)
return -1;
if (nodelay_) {
int err = internal_output();
if (err == -1)
return -1;
}
return written;
}
int setblocking(bool blocking) override {
@ -549,6 +549,9 @@ class LWIPRawImpl : public Socket {
bool rx_closed_ = false;
pbuf *rx_buf_ = nullptr;
size_t rx_buf_offset_ = 0;
// don't use lwip nodelay flag, it sometimes causes reconnect
// instead use it for determining whether to call lwip_output
bool nodelay_ = false;
};
std::unique_ptr<Socket> socket(int domain, int type, int protocol) {

View file

@ -1,6 +1,6 @@
"""Constants used by esphome."""
__version__ = "2021.9.2"
__version__ = "2021.9.3"
ESP_PLATFORM_ESP32 = "ESP32"
ESP_PLATFORM_ESP8266 = "ESP8266"

View file

@ -36,7 +36,7 @@ lib_deps =
6306@1.0.3 ; HM3301
glmnet/Dsmr@0.3 ; used by dsmr
rweather/Crypto@0.2.0 ; used by dsmr
esphome/noise-c@0.1.1 ; used by api
esphome/noise-c@0.1.3 ; used by api
dudanov/MideaUART@1.1.8 ; used by midea
build_flags =

View file

@ -10,4 +10,4 @@ platformio==5.2.0
esptool==3.1
click==7.1.2
esphome-dashboard==20210908.0
aioesphomeapi==9.1.1
aioesphomeapi==9.1.4