Procházet zdrojové kódy

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

Laukik Hase před 3 roky
rodič
revize
463b02eeec
1 změnil soubory, kde provedl 4 přidání a 3 odebrání
  1. 4 3
      components/esp_http_server/src/httpd_sess.c

+ 4 - 3
components/esp_http_server/src/httpd_sess.c

@@ -204,6 +204,9 @@ esp_err_t httpd_sess_new(struct httpd_data *hd, int newfd)
     session->send_fn = httpd_default_send;
     session->recv_fn = httpd_default_recv;
 
+    // increment number of sessions
+    hd->hd_sd_active_count++;
+
     // Call user-defined session opening function
     if (hd->config.open_fn) {
         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;
 }