]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
2008-12-12 Alex Smith <alex@alex-smith.me.uk>
authorbean <bean@localhost>
Fri, 12 Dec 2008 04:12:05 +0000 (04:12 +0000)
committerbean <bean@localhost>
Fri, 12 Dec 2008 04:12:05 +0000 (04:12 +0000)
* fs/i386/pc/pxe.c (grub_pxefs_open): Handle the one open connection
at a time limit of the PXE TFTP API correctly.
(grub_pxefs_close): Likewise.

ChangeLog
fs/i386/pc/pxe.c

index 6f4934cf6920077abea85b300d06f525d6193ace..f3864223d5f8941b7be85bc8d0f59e7ec47f79fb 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2008-12-12  Alex Smith  <alex@alex-smith.me.uk>
+
+       * fs/i386/pc/pxe.c (grub_pxefs_open): Handle the one open connection
+       at a time limit of the PXE TFTP API correctly.
+       (grub_pxefs_close): Likewise.
+
 2008-11-29  Robert Millan  <rmh@aybabtu.com>
 
        * disk/ata.c (grub_ata_pciinit): Handle errors rised by
index f5f215ff4c944767d793ea57aaf3d0772d35bed0..f52d61188a69bdb6f69ebed4191a5ae5c523a2f4 100644 (file)
@@ -125,6 +125,12 @@ grub_pxefs_open (struct grub_file *file, const char *name)
   struct grub_pxe_data *data;
   grub_file_t file_int, bufio;
 
+  if (curr_file != 0)
+    {
+      grub_pxe_call (GRUB_PXENV_TFTP_CLOSE, &c.c2);
+      curr_file = 0;
+    }
+
   c.c1.server_ip = grub_pxe_server_ip;
   c.c1.gateway_ip = grub_pxe_gateway_ip;
   grub_strcpy (c.c1.filename, name);
@@ -190,7 +196,8 @@ grub_pxefs_read (grub_file_t file, char *buf, grub_size_t len)
     {
       struct grub_pxenv_tftp_open o;
 
-      grub_pxe_call (GRUB_PXENV_TFTP_CLOSE, &o);
+      if (curr_file != 0)
+        grub_pxe_call (GRUB_PXENV_TFTP_CLOSE, &o);
 
       o.server_ip = grub_pxe_server_ip;
       o.gateway_ip = grub_pxe_gateway_ip;
@@ -227,7 +234,12 @@ grub_pxefs_close (grub_file_t file)
 {
   struct grub_pxenv_tftp_close c;
 
-  grub_pxe_call (GRUB_PXENV_TFTP_CLOSE, &c);
+  if (curr_file == file)
+    {
+      grub_pxe_call (GRUB_PXENV_TFTP_CLOSE, &c);
+      curr_file = 0;
+    }
+
   grub_free (file->data);
 
   return GRUB_ERR_NONE;