http_server: Increment active socket count for SSL session

- The callback `open_fn` is used for creating a new SSL session
  with httpd_sess_new.
- If the call fails, the active socket count (httpd_data->hd_sd_active_count)
  is not incremented. But, httpd_sess_delete is called, which decrements the
  count, resulting in a negative value for several failed session creations
  in a row.

Closes https://github.com/espressif/esp-idf/issues/9683
This commit is contained in:
Laukik Hase 2022-09-06 17:20:35 +05:30
parent 15e0606ca0
commit 463b02eeec
No known key found for this signature in database
GPG Key ID: 11C571361F51A199

View File

@ -204,6 +204,9 @@ esp_err_t httpd_sess_new(struct httpd_data *hd, int newfd)
session->send_fn = httpd_default_send; session->send_fn = httpd_default_send;
session->recv_fn = httpd_default_recv; session->recv_fn = httpd_default_recv;
// increment number of sessions
hd->hd_sd_active_count++;
// Call user-defined session opening function // Call user-defined session opening function
if (hd->config.open_fn) { if (hd->config.open_fn) {
esp_err_t ret = hd->config.open_fn(hd, session->fd); esp_err_t ret = hd->config.open_fn(hd, session->fd);
@ -214,10 +217,8 @@ esp_err_t httpd_sess_new(struct httpd_data *hd, int newfd)
} }
} }
// increment number of sessions
hd->hd_sd_active_count++;
ESP_LOGD(TAG, LOG_FMT("active sockets: %d"), hd->hd_sd_active_count);
ESP_LOGD(TAG, LOG_FMT("active sockets: %d"), hd->hd_sd_active_count);
return ESP_OK; return ESP_OK;
} }