FreeRTOS webserver windows issue

paw3l wrote on Thursday, March 17, 2016:

Hi All,

I have the FreeRTOS running on cortex, with webserver from freertos example. Everything works fine, Im able to display pages. But this is only when I run client browser on Linux machine. When I try to connect from Windows there is always a timeout. On windows I disabled the firewall, antivirus etc. but no luck. Also I have linux running on virtual machine, and this works as well. I’ve tried wget from windows (GNU build) and I am also able to pull a html file.
Finally Wireshark claims that GET is sent… but on FreeRTOS webserver the rxStream is NULL and lBytes is 0 (for that request). Any ideas?


rtel wrote on Thursday, March 17, 2016:

Interesting - we have tried from Windows too. Which browser are you using?

It would be helpful if you could post your wireshark log as an attachment - filtered to show just the HTTP traffic to your target.

heinbali01 wrote on Thursday, March 17, 2016:

A wget from your windows does work, while a Windows browser can not open the same embedded page? That sounds strange.

What value did you use for backlog in :

    static const struct xSERVER_CONFIG xServerConfiguration[] =
        #if( mainCREATE_HTTP_SERVER == 1 )
                /* Allow for 12 simultaneous connections: */
                /* Server type,     port number,    backlog,    root dir. */
                { eSERVER_HTTP,     80,             12,         configHTTP_ROOT },


When I try to connect from Windows there is always a timeout.

Do you mean that you never get to see that page?

Yes please, attach a PCAP file showing the HTTP-session that gets a time-out.

You may want to filter on e.g

ip.addr==192.168.x.x && tcp.port==80


paw3l wrote on Friday, March 18, 2016:

Seems like I’ve found the problem. Since we are low on ram I’ve minimized the MTU and WIN_SEG sizes, and this affected working with windows. The GET from windows has more info from browser, and from linux its smaller. Therefor the linux version was just fine. I will bring back the default server sizes (cleaning up other parts of code), and let you know if all is good.