If a PXE client only wants to find out the size of a file, it will open the file and then abort the transfer by sending a TFTP ERROR packet. The ERROR packet should cause qemu to terminate the session. If not, the sessions will soon run out and cause timeouts in the client. Also, if a TFTP session already exists with same IP/UDP port, it should be terminated when a new RRQ is received, instead of creating a duplicate (which will never be used). A patch for gPXE to send the ERROR packet is also being submitted to gPXE. Together they resolve slowness/hanging when booting pxegrub from qemu's internal TFTP server. The patch from Milan Plzik to return after sending OACK is also required for a complete fix. Signed-off-by: Thomas Horsten <thomas@horsten.com> Signed-off-by: Milan Plzik <milan.plzik@gmail.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> |
||
|---|---|---|
| .. | ||
| COPYRIGHT | ||
| bootp.c | ||
| bootp.h | ||
| cksum.c | ||
| debug.h | ||
| if.c | ||
| if.h | ||
| ip.h | ||
| ip_icmp.c | ||
| ip_icmp.h | ||
| ip_input.c | ||
| ip_output.c | ||
| libslirp.h | ||
| main.h | ||
| mbuf.c | ||
| mbuf.h | ||
| misc.c | ||
| misc.h | ||
| sbuf.c | ||
| sbuf.h | ||
| slirp.c | ||
| slirp.h | ||
| slirp_config.h | ||
| socket.c | ||
| socket.h | ||
| tcp.h | ||
| tcp_input.c | ||
| tcp_output.c | ||
| tcp_subr.c | ||
| tcp_timer.c | ||
| tcp_timer.h | ||
| tcp_var.h | ||
| tcpip.h | ||
| tftp.c | ||
| tftp.h | ||
| udp.c | ||
| udp.h | ||