--- /dev/null
+2009-11-14 Vladimir Serbinenko <phcoder@gmail.com>
+
+ * fs/i386/pc/pxe.c (grub_pxefs_open): Correctly handle PXE choosing
+ blocksize different from specified.
+ (grub_pxefs_read): Likewise.
+
if (! data)
return grub_errno;
- data->block_size = grub_pxe_blksize;
+ data->block_size = c.c2.packet_size;
grub_strcpy (data->filename, name);
file_int = grub_malloc (sizeof (*file_int));
o.gateway_ip = grub_pxe_gateway_ip;
grub_strcpy ((char *)&o.filename[0], data->filename);
o.tftp_port = grub_cpu_to_be16 (GRUB_PXE_TFTP_PORT);
- o.packet_size = data->block_size;
+ o.packet_size = grub_pxe_blksize;
grub_pxe_call (GRUB_PXENV_TFTP_OPEN, &o);
if (o.status)
{
grub_error (GRUB_ERR_BAD_FS, "open fails");
return -1;
}
+ data->block_size = o.packet_size;
data->packet_number = 0;
curr_file = file;
}
c.buffer = SEGOFS (GRUB_MEMORY_MACHINE_SCRATCH_ADDR);
while (pn >= data->packet_number)
{
- c.buffer_size = grub_pxe_blksize;
+ c.buffer_size = data->block_size;
grub_pxe_call (GRUB_PXENV_TFTP_READ, &c);
if (c.status)
{