feature/esp_http_server_idf_v3.2:Changes to make esp_http_server compatible with ESP8266.

Changes:
Lru counter in place of timestamp added.
syslimits.h definition guards for ARG_MAX, PATH_LEN.
Renamed src/port/esp32 to src/port/esp8266.
Enabled working without IPv6. Test Scripts requiring TinyFW removed
Utility.console_log replaced by print.
This commit is contained in:
Supreet Deshpande
2019-02-18 15:07:09 +05:30
parent 825a53199d
commit efc81a6649
12 changed files with 136 additions and 426 deletions

View File

@@ -19,6 +19,7 @@
#include <esp_http_server.h>
#include "esp_httpd_priv.h"
#include <sys/fcntl.h>
static const char *TAG = "httpd_sess";
@@ -192,7 +193,13 @@ void httpd_sess_set_descriptors(struct httpd_data *hd,
/** Check if a FD is valid */
static int fd_is_valid(int fd)
{
return fcntl(fd, F_GETFD) != -1 || errno != EBADF;
return fcntl(fd, F_GETFD, 0) != -1 || errno != EBADF;
}
static inline uint64_t httpd_sess_get_lru_counter()
{
static uint64_t lru_counter = 0;
return lru_counter++;
}
void httpd_sess_delete_invalid(struct httpd_data *hd)
@@ -297,11 +304,11 @@ esp_err_t httpd_sess_process(struct httpd_data *hd, int newfd)
return ESP_FAIL;
}
ESP_LOGD(TAG, LOG_FMT("success"));
sd->timestamp = httpd_os_get_timestamp();
sd->lru_counter = httpd_sess_get_lru_counter();
return ESP_OK;
}
esp_err_t httpd_sess_update_timestamp(httpd_handle_t handle, int sockfd)
esp_err_t httpd_sess_update_lru_counter(httpd_handle_t handle, int sockfd)
{
if (handle == NULL) {
return ESP_ERR_INVALID_ARG;
@@ -312,7 +319,7 @@ esp_err_t httpd_sess_update_timestamp(httpd_handle_t handle, int sockfd)
int i;
for (i = 0; i < hd->config.max_open_sockets; i++) {
if (hd->hd_sd[i].fd == sockfd) {
hd->hd_sd[i].timestamp = httpd_os_get_timestamp();
hd->hd_sd[i].lru_counter = httpd_sess_get_lru_counter();
return ESP_OK;
}
}
@@ -321,7 +328,7 @@ esp_err_t httpd_sess_update_timestamp(httpd_handle_t handle, int sockfd)
esp_err_t httpd_sess_close_lru(struct httpd_data *hd)
{
int64_t timestamp = INT64_MAX;
uint64_t lru_counter = UINT64_MAX;
int lru_fd = -1;
int i;
for (i = 0; i < hd->config.max_open_sockets; i++) {
@@ -332,8 +339,8 @@ esp_err_t httpd_sess_close_lru(struct httpd_data *hd)
if (hd->hd_sd[i].fd == -1) {
return ESP_OK;
}
if (hd->hd_sd[i].timestamp < timestamp) {
timestamp = hd->hd_sd[i].timestamp;
if (hd->hd_sd[i].lru_counter < lru_counter) {
lru_counter = hd->hd_sd[i].lru_counter;
lru_fd = hd->hd_sd[i].fd;
}
}