diff options
author | Michael Brown | 2019-08-16 22:23:55 +0200 |
---|---|---|
committer | Michael Brown | 2019-08-16 23:19:50 +0200 |
commit | 02b26de9634dcf793f4edef0b33ea71e34fceee6 (patch) | |
tree | b032c8682fc77878be5fd488d1c9d8c36096316d /src | |
parent | [process] Add PROC_INIT() for initialising static processes (diff) | |
download | ipxe-02b26de9634dcf793f4edef0b33ea71e34fceee6.tar.gz ipxe-02b26de9634dcf793f4edef0b33ea71e34fceee6.tar.xz ipxe-02b26de9634dcf793f4edef0b33ea71e34fceee6.zip |
[peerdist] Start block download timers from within opener methods
Move the responsibility for starting the block download timers from
peerblk_expired() to peerblk_raw_open() and peerblk_retrieval_open(),
in preparation for adding the ability to defer calls to
peerblk_raw_open() via a block download queue.
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/net/peerblk.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/net/peerblk.c b/src/net/peerblk.c index 78888d2d..27184e2d 100644 --- a/src/net/peerblk.c +++ b/src/net/peerblk.c @@ -358,6 +358,10 @@ static int peerblk_raw_open ( struct peerdist_block *peerblk ) { if ( inject_fault ( PEERBLK_ANNUL_RATE ) ) intf_restart ( &peerblk->raw, 0 ); + /* Start download attempt timer */ + peerblk->rc = -ETIMEDOUT; + start_timer_fixed ( &peerblk->timer, PEERBLK_RAW_OPEN_TIMEOUT ); + return 0; } @@ -522,6 +526,10 @@ static int peerblk_retrieval_open ( struct peerdist_block *peerblk, if ( inject_fault ( PEERBLK_ANNUL_RATE ) ) intf_restart ( &peerblk->retrieval, 0 ); + /* Start download attempt timer */ + peerblk->rc = -ETIMEDOUT; + start_timer_fixed ( &peerblk->timer, PEERBLK_RETRIEVAL_OPEN_TIMEOUT ); + err_open: uri_put ( uri ); err_uri: @@ -1201,10 +1209,7 @@ static void peerblk_expired ( struct retry_timer *timer, int over __unused ) { continue; } - /* Start download attempt timer */ - peerblk->rc = -ETIMEDOUT; - start_timer_fixed ( &peerblk->timer, - PEERBLK_RETRIEVAL_OPEN_TIMEOUT ); + /* Peer download started */ return; } @@ -1212,9 +1217,6 @@ static void peerblk_expired ( struct retry_timer *timer, int over __unused ) { if ( ( rc = peerblk_raw_open ( peerblk ) ) != 0 ) goto err; - /* Start download attempt timer */ - peerblk->rc = -ETIMEDOUT; - start_timer_fixed ( &peerblk->timer, PEERBLK_RAW_OPEN_TIMEOUT ); return; err: |