Do you know file size in advance? In my case, I don't.
I had to use TCP_WRITE_FLAG_COPY to make it work.
#define TCP_FLAG TCP_WRITE_FLAG_COPY
static err_t
http_sent(void *arg, struct tcp_pcb *pcb, u16_t len)
{
struct http_state *hs;
hs = arg;
if (hs->left > 0)
{
send_data(pcb, hs, TCP_FLAG);
}
else if(more_data)
{
dump_data(0);
hs->file = html_total;
hs->left = strlen(html_total);
send_data(pcb, hs, TCP_FLAG);
}
else
close_conn(pcb, hs);
return ERR_OK;
}
On Wed, May 2, 2012 at 8:44 AM, Bill Auerbach <[email protected]>wrote:
> >I've the same problem to solve. In my case they are log files with up to
> >64KB. With the standard LwIP http server example it's not possible to
> >send files with a size above the allowed buffer size. In most cases
> >hs->left points just to the address in this buffer. So I think the best
> >way is to create a other function which allows the "streaming" of the
> >data (filling the buffer and sending and not to close the connection,
> >even complete data was send).
>
> It can be done because I've sent up to 800k files using the original
> (non-SSI) httpd and note that I was basing this on the httpd_raw (sp?)
> demo.
> Regardless of the file size the tcp_sent callback is used to continue to
> send until the file end is reached. I would expect 10k, 100k or 1MB to be
> identical in the handling.
>
> Bill
>
>
>
> _______________________________________________
> lwip-users mailing list
> [email protected]
> https://lists.nongnu.org/mailman/listinfo/lwip-users
>
_______________________________________________
lwip-users mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/lwip-users