1. 16 Jan, 2016 1 commit
  2. 07 Dec, 2015 1 commit
    • Josef Bacik's avatar
      tcp: ack when we get an OOO/lost packet · fb478079
      Josef Bacik authored
      While adding tcp window scaling support I was finding that I'd get some packet
      loss or reordering when transferring from large distances and grub would just
      timeout.  This is because we weren't ack'ing when we got our OOO packet, so the
      sender didn't know it needed to retransmit anything, so eventually it would fill
      the window and stop transmitting, and we'd time out.  Fix this by ACK'ing when
      we don't find our next sequence numbered packet.  With this fix I no longer time
      out.  Thanks,
      Signed-off-by: 's avatarJosef Bacik <jbacik@fb.com>
      fb478079
  3. 29 Oct, 2015 1 commit
  4. 07 Dec, 2014 1 commit
    • Curtis Larsen's avatar
      fix double free in grub_net_recv_tcp_packet · 06eadf5e
      Curtis Larsen authored
      Using the http module to download config files, produces memory errors,
      after the config file is downloaded.
      
      The error was traced to the tcp stack in grub-core/net/tcp.c. The wrong
      netbuff pointer was being freed in the clean up loop.
      
      Changing the code to free the correct netbuff pointer removes the runtime
      error.
      
      Closes 42765.
      06eadf5e
  5. 15 Dec, 2013 1 commit
  6. 22 Aug, 2013 1 commit
  7. 23 Jun, 2012 1 commit
    • Vladimir 'phcoder' Serbinenko's avatar
      Implement flow control for http. · 982f1909
      Vladimir 'phcoder' Serbinenko authored
      	* grub-core/net/http.c (parse_line): Handle response 206.
      	(http_receive): Stall if too many packets are in the queue.
      	(http_establish): Fix range header.
      	(http_seek): Fix double free.
      	(http_close): Likewise.
      	(http_packets_pulled): New function.
      	(grub_http_protocol): Set http_seek
      	* grub-core/net/tcp.c (grub_net_tcp_socket): New field `i_stall'.
      	(ack_real): Set window depending on i_stall.
      	(grub_net_send_tcp_packet): Likewise.
      	(grub_net_tcp_stall): New function.
      	(grub_net_tcp_unstall): Likewise.
      	* include/grub/net/tcp.h (grub_net_tcp_stall): New proto.
      	(grub_net_tcp_unstall): Likewise.
      982f1909
  8. 09 Jun, 2012 1 commit
    • Vladimir 'phcoder' Serbinenko's avatar
      Stop polling as soon as we have the packet we were waiting for. · 96f7e60e
      Vladimir 'phcoder' Serbinenko authored
      	* include/grub/net.h (grub_net_poll_cards): New argument stop_condition.
      	All users updated.
      	* grub-core/net/arp.c (have_pending): New var.
      	(pending_req): Likewise.
      	(grub_net_arp_send_request): Fill pending_req and use have_pending as
      	stop indicator.
      	(grub_net_arp_receive): Set have_pending.
      	* grub-core/net/dns.c (recv_data): New field stop.
      	(recv_hook): Set stop.
      	(grub_net_dns_lookup): Init stop and use as stop condition.
      	* grub-core/net/http.c (http_establish): Use headers_recv as stop
      	condition.
      	* grub-core/net/net.c (grub_net_poll_cards): New argument
      	stop_condition. Stop when it goes true.
      	* grub-core/net/tcp.c (grub_net_tcp_open): Use `established' as stop
      	indicator.
      	* grub-core/net/tftp.c (tftp_open): Use `have_oack' as stop indicator.
      96f7e60e
  9. 12 Feb, 2012 1 commit
  10. 08 Feb, 2012 1 commit
  11. 24 Jan, 2012 1 commit
    • Vladimir 'phcoder' Serbinenko's avatar
      Replace single-linked with double-linked lists. It results in more · 87edb894
      Vladimir 'phcoder' Serbinenko authored
      	compact and more efficient code.
      
      	* grub-core/kern/list.c (grub_list_push): Moved from here ...
      	* include/grub/list.h (grub_list_push): ... to here. Set prev.
      	(grub_list_remove): Moved from here ...
      	* include/grub/list.h (grub_list_remove): ... here. Use and set prev.
      	(grub_prio_list_insert): Set prev.
      	* include/grub/list.h (grub_list): Add prev. All users updated.
      87edb894
  12. 30 Oct, 2011 1 commit
  13. 14 Oct, 2011 1 commit
  14. 13 Oct, 2011 2 commits
  15. 12 Oct, 2011 1 commit
  16. 06 Oct, 2011 1 commit
  17. 05 Oct, 2011 2 commits
  18. 23 Jul, 2011 2 commits
  19. 11 Jul, 2011 1 commit
  20. 10 Jul, 2011 4 commits