Skip to content

HTTP IAP bug #137

Open
Open
@khevessy

Description

@khevessy

There is a potential bug in the HTTP IAP example. In the web server, there this this if clause:

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
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

ethEthernetneeds clarificationNeeds clarification or inputs from the userprojectsProjects-related (demos, applications, examples) issue or pull-request.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions