Добрый день.
Столкнулся с проблемой при обновлении прошивки через воздух (OTA).
Описание: после вызова этого кода на веб-сервер отправляется запрос. В логах веб-сервера (apache) вместо GET указано HEAD
192.168.21.21 - - [14/Feb/2018:23:56:02 +0000] "HEAD /firmware/upgrade/user2.1024.new.2.bin_.bin HTTP/1.0" 408 0 "-" "-"
Код ошибки - 408. Это таймаут. Но у меня задан check_times = 120000. Этого больше чем достаточно.
И на этом все прекращается. Если делаю download через Internet Explorer, то все скачивается успешно.
Подскажите, в каком направлении двигаться?
Ниже приведен код.
struct upgrade_server_info *upgrade_server = NULL;
char new_user_bin[128]; // Путь на web-сервере к файлу с новой прошивкой
os_memset(new_user_bin, 0, sizeof(new_user_bin));
upgrade_server = (struct upgrade_server_info *) os_zalloc(sizeof(struct upgrade_server_info));
if(upgrade_server)
{
upgrade_server->pespconn = pespconn;
os_strcpy(new_user_bin, "user2.1024.new.2.bin_.bin");
const char upgrade_server_ip[4] = {192, 168, 21, 201};
os_memcpy(upgrade_server->ip, upgrade_server_ip, 4);
upgrade_server->port = 80;
upgrade_server->check_cb = ota_upgrade_cb;
upgrade_server->check_times = 120000;
if (upgrade_server->url == NULL)
{
upgrade_server->url = (uint8 *)os_zalloc(128);
os_sprintf(upgrade_server->url, "GET /firmware/upgrade/%s HTTP/1.1\r\nHost: "IPSTR":%d\r\nConnection: close\r\n\r\n",
new_user_bin, IP2STR(upgrade_server->ip), upgrade_server->port);
ets_uart_printf("upgrade_server->url=%s\r\n",upgrade_server->url);
if (system_upgrade_start(upgrade_server) == false) // Начинаем обновление
{
os_printf("ota_upgrade_start(): upgrade is already started\n");
}
}
}
Столкнулся с проблемой при обновлении прошивки через воздух (OTA).
Описание: после вызова этого кода на веб-сервер отправляется запрос. В логах веб-сервера (apache) вместо GET указано HEAD
192.168.21.21 - - [14/Feb/2018:23:56:02 +0000] "HEAD /firmware/upgrade/user2.1024.new.2.bin_.bin HTTP/1.0" 408 0 "-" "-"
Код ошибки - 408. Это таймаут. Но у меня задан check_times = 120000. Этого больше чем достаточно.
И на этом все прекращается. Если делаю download через Internet Explorer, то все скачивается успешно.
Подскажите, в каком направлении двигаться?
Ниже приведен код.
struct upgrade_server_info *upgrade_server = NULL;
char new_user_bin[128]; // Путь на web-сервере к файлу с новой прошивкой
os_memset(new_user_bin, 0, sizeof(new_user_bin));
upgrade_server = (struct upgrade_server_info *) os_zalloc(sizeof(struct upgrade_server_info));
if(upgrade_server)
{
upgrade_server->pespconn = pespconn;
os_strcpy(new_user_bin, "user2.1024.new.2.bin_.bin");
const char upgrade_server_ip[4] = {192, 168, 21, 201};
os_memcpy(upgrade_server->ip, upgrade_server_ip, 4);
upgrade_server->port = 80;
upgrade_server->check_cb = ota_upgrade_cb;
upgrade_server->check_times = 120000;
if (upgrade_server->url == NULL)
{
upgrade_server->url = (uint8 *)os_zalloc(128);
os_sprintf(upgrade_server->url, "GET /firmware/upgrade/%s HTTP/1.1\r\nHost: "IPSTR":%d\r\nConnection: close\r\n\r\n",
new_user_bin, IP2STR(upgrade_server->ip), upgrade_server->port);
ets_uart_printf("upgrade_server->url=%s\r\n",upgrade_server->url);
if (system_upgrade_start(upgrade_server) == false) // Начинаем обновление
{
os_printf("ota_upgrade_start(): upgrade is already started\n");
}
}
}