Differences
This shows you the differences between two versions of the page.
Next revision Both sides next revision | |||
soc:2010:cooldavid:journal:week8 [2010/07/12 15:40] cooldavid created |
soc:2010:cooldavid:journal:week8 [2010/07/12 15:49] cooldavid |
||
---|---|---|---|
Line 31: | Line 31: | ||
without data, we should send the latest ACK(force_send) update | without data, we should send the latest ACK(force_send) update | ||
to remote host instead of ignoring it. | to remote host instead of ignoring it. | ||
+ | |||
+ | === Waiting for TCP to fully close === | ||
+ | While using scripts, if the downloaded image is not bootable, | ||
+ | the gPXE exits faster than it have the opportunity to gracefully | ||
+ | closing the TCP connection. Which might lead the TCP state of | ||
+ | remote server not closed. | ||
+ | |||
+ | [[http://git.etherboot.org/?p=people/cooldavid/gpxe.git;a=commitdiff;h=0bee38ff68e777ca2f563a2d7d5348cfe533232c|This commit]] waits for TCP | ||
+ | to fully close by polling remaining ACKs from remote server and let | ||
+ | the gPXE reply the correct response before shutdown the xfer interface. | ||
+ | |||
+ | It is somehow hacky, hoping we can find better solution. | ||
+ | |||
+ | === Randomize TCP bind port === | ||
+ | To reduce possible TCP port collision. | ||
==== gPXE scheduling and program flow documentation ==== | ==== gPXE scheduling and program flow documentation ==== | ||
Doing a note. | Doing a note. |