bug-grub
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bug #49531] HTTP module does not support HTTP Pipelining


From: Walter Huf
Subject: [bug #49531] HTTP module does not support HTTP Pipelining
Date: Sat, 17 Dec 2016 20:32:50 -0000
User-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36

Follow-up Comment #4, bug #49531 (project grub):

I have figured out where the delay comes from, and it's actually 400ms
(GRUB_NET_INTERVAL).
In grub_net_fs_read_real
(http://git.savannah.gnu.org/cgit/grub.git/tree/grub-core/net/net.c#n1583), it
checks to see if any packets are ready to process, and then runs
grub_net_poll_cards. I think this causes the TCP and HTTP stacks to process
packets until HTTP decides it has enough packets (20 packets, according to
http.c:277) and sets net->stall, which causes grub_net_poll_cards to quit out
before the time is finished.
However, most reads (fetching a module, reading menu.lst) are smaller than 20
packets, and so this poll lasts the entire GRUB_NET_INTERVAL of 400ms. When
this finishes, it then continues parsing packs and returns when len==0.

Altering the timeout to this grub_net_poll_cards causes a change in the delay
I see in the packet trace.

When the server disconnects, I think it triggers http_err, which sets
net->stall==1 and causes grub_net_poll_cards to finish up early.

    _______________________________________________________

Reply to this item at:

  <http://savannah.gnu.org/bugs/?49531>

_______________________________________________
  Message sent via/by Savannah
  http://savannah.gnu.org/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]