Hi there,
I'm quite new to MQX, just starting to port some projects to MQX. I need to create an application which is generating 'big' files as dynamically generated CGI data, so I started to figure out what the MQX http server is capable of.
First question: is it allowed to have a resource like this, which is 'just' doing multiple subsequent calls to HTTPSRV_cgi_write() ?
My first impression: it works. (spot on).
My second impression: it's slow. After a few packets, I see many TCP re-transmission on a very regular basis.
You find attached a wireshark trace of the complete TCP stream.
It's not always exactly the same packet no, though the re-transmissions are kicking in at approx the same stream-position, maybe one or two packets more or less.
Here is the code I added to cgi.c, starting at the MQX demo http server project:
const HTTPSRV_CGI_LINK_STRUCT cgi_lnk_tbl[] = {
{ "bigdata", cgi_big_data, 1500},
{ 0, 0 } // DO NOT REMOVE - last item - end of table
};
static _mqx_int cgi_big_data(HTTPSRV_CGI_REQ_STRUCT* param)
{
HTTPSRV_CGI_RES_STRUCT response;
if (param->request_method != HTTPSRV_REQ_GET)
{
return(0);
}
response.ses_handle = param->ses_handle;
response.content_type = HTTPSRV_CONTENT_TYPE_PLAIN;
response.status_code = 200;
response.content_length = 0; // @TODO this prevents keep-alive
int i;
char str[32];
response.data = str;
for (i = 0; i < 60000; i++)
{
response.data_length = snprintf(str, 32, "%ld\n", i);
HTTPSRV_cgi_write(&response);
}
return (1); // ?
}
Does anyone can tell me if it's OK to generate large CGI streams that way?
Does anyone know what might be the reason for the many re-transmissions?
Here is my example wget call to get the file:
$ wget "http://192.168.3.43/bigdata.cgi" -O /tmp/bla
--2014-08-25 13:41:36-- http://192.168.3.43/bigdata.cgi
Connecting to 192.168.3.43:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/plain]
Saving to: ‘/tmp/bla’
[ <=> ] 348.890 26,9KB/s in 13s
2014-08-25 13:41:49 (26,3 KB/s) - ‘/tmp/bla’ saved [348890]
best regards, and many thank in advance,
Martin
Original Attachment has been moved to: wiresharp_cgi_bigdata.pcapng.zip