aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Brown <mcb30@etherboot.org>2007-07-10 06:25:30 +0100
committerMichael Brown <mcb30@etherboot.org>2007-07-10 06:25:30 +0100
commit4075f7596bd7b879706516fd84f4acbf19a7d2c5 (patch)
tree9f20f709e59a1b41caa24f7894267bc191267f84 /src
parentd3ad76bc746993a18b57237456345470ac381adf (diff)
downloadipxe-4075f7596bd7b879706516fd84f4acbf19a7d2c5.zip
ipxe-4075f7596bd7b879706516fd84f4acbf19a7d2c5.tar.gz
ipxe-4075f7596bd7b879706516fd84f4acbf19a7d2c5.tar.bz2
Unplug before sending close() message, to avoid screwing up interfaces
which respond to close with a reopen() (e.g. iSCSI).
Diffstat (limited to 'src')
-rw-r--r--src/core/job.c4
-rw-r--r--src/core/resolv.c2
-rw-r--r--src/core/xfer.c2
3 files changed, 4 insertions, 4 deletions
diff --git a/src/core/job.c b/src/core/job.c
index 00c0e6c..6c2faf3 100644
--- a/src/core/job.c
+++ b/src/core/job.c
@@ -29,16 +29,16 @@
void job_done ( struct job_interface *job, int rc ) {
struct job_interface *dest = job_get_dest ( job );
- dest->op->done ( dest, rc );
job_unplug ( job );
+ dest->op->done ( dest, rc );
job_put ( dest );
}
void job_kill ( struct job_interface *job ) {
struct job_interface *dest = job_get_dest ( job );
- dest->op->kill ( dest );
job_unplug ( job );
+ dest->op->kill ( dest );
job_put ( dest );
}
diff --git a/src/core/resolv.c b/src/core/resolv.c
index 5c25ddb..808ab65 100644
--- a/src/core/resolv.c
+++ b/src/core/resolv.c
@@ -50,8 +50,8 @@ void resolv_done ( struct resolv_interface *resolv, struct sockaddr *sa,
int rc ) {
struct resolv_interface *dest = resolv_get_dest ( resolv );
- dest->op->done ( dest, sa, rc );
resolv_unplug ( resolv );
+ dest->op->done ( dest, sa, rc );
resolv_put ( dest );
}
diff --git a/src/core/xfer.c b/src/core/xfer.c
index 0689587..3add057 100644
--- a/src/core/xfer.c
+++ b/src/core/xfer.c
@@ -38,8 +38,8 @@ void xfer_close ( struct xfer_interface *xfer, int rc ) {
DBGC ( xfer, "XFER %p->%p close\n", xfer, dest );
- dest->op->close ( dest, rc );
xfer_unplug ( xfer );
+ dest->op->close ( dest, rc );
xfer_put ( dest );
}