-
Notifications
You must be signed in to change notification settings - Fork 463
Open
Labels
ethEthernetEthernetlwipLightweight TCP/IPLightweight TCP/IPneeds clarificationNeeds clarification or inputs from the userNeeds clarification or inputs from the userprojectsProjects-related (demos, applications, examples) issue or pull-request.Projects-related (demos, applications, examples) issue or pull-request.
Description
There is a potential bug in the HTTP IAP example. In the web server, there this this if clause:
STM32CubeF4/Projects/STM324xG_EVAL/Applications/LwIP/LwIP_IAP/Src/httpserver.c
Lines 231 to 246 in 52757b5
| if (strncmp(data, "GET / HTTP", 10) == 0) | |
| { | |
| /*send the login page (which is the index page) */ | |
| htmlpage = LoginPage; | |
| fs_open("/index.html", &file); | |
| hs->file = file.data; | |
| hs->left = file.len; | |
| pbuf_free(p); | |
| /* send index.html page */ | |
| send_data(pcb, hs); | |
| /* Tell TCP that we wish be to informed of data that has been | |
| successfully sent by a call to the http_sent() function. */ | |
| tcp_sent(pcb, http_sent); | |
| } |
and
STM32CubeF4/Projects/STM324x9I_EVAL/Applications/LwIP/LwIP_IAP/Src/httpserver.c
Lines 231 to 246 in 52757b5
| if (strncmp(data, "GET / HTTP", 10) == 0) | |
| { | |
| /*send the login page (which is the index page) */ | |
| htmlpage = LoginPage; | |
| fs_open("/index.html", &file); | |
| hs->file = file.data; | |
| hs->left = file.len; | |
| pbuf_free(p); | |
| /* send index.html page */ | |
| send_data(pcb, hs); | |
| /* Tell TCP that we wish be to informed of data that has been | |
| successfully sent by a call to the http_sent() function. */ | |
| tcp_sent(pcb, http_sent); | |
| } |
which handles GET request. POST request and subsequent data frames are handled in an
else if on line 302. However, when we will be receiving data and the binary that we are trying to load is containing the exact string GET / HTTP and it will be at the beginning of the packet (it happened to me in slight variation), we will reset the site prior to writing the whole binary. My suggestion would be to either move the else if for POST request to the beginning of the if, or add check for which htmlpage we are on to the line 231.
I have made an issue in the STM32CubeF7 project, where there is a similar problem. I do not know if there is any other MCU family with this HTTP IAP example, but if there is and you will decide to fix this, please propagate the solution there.
The same problem is in the STSW-STM32069 package that implements this exact same functionality.
Metadata
Metadata
Assignees
Labels
ethEthernetEthernetlwipLightweight TCP/IPLightweight TCP/IPneeds clarificationNeeds clarification or inputs from the userNeeds clarification or inputs from the userprojectsProjects-related (demos, applications, examples) issue or pull-request.Projects-related (demos, applications, examples) issue or pull-request.