]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
Unplug before sending close() message, to avoid screwing up interfaces
authorMichael Brown <mcb30@etherboot.org>
Tue, 10 Jul 2007 05:25:30 +0000 (06:25 +0100)
committerMichael Brown <mcb30@etherboot.org>
Tue, 10 Jul 2007 05:25:30 +0000 (06:25 +0100)
which respond to close with a reopen() (e.g. iSCSI).

src/core/job.c
src/core/resolv.c
src/core/xfer.c

index 00c0e6c419b12b87d968853f45296022ac816993..6c2faf30f4ff943e794df38b0b0e0837b87e4155 100644 (file)
 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 );
 }
 
index 5c25ddb121c86d51486665ae65564ba6083fb4c4..808ab657f69d9c2eb55cefa3d87fef5c6927e983 100644 (file)
@@ -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 );
 }
 
index 0689587115234311b999949db451539bbeec2db2..3add057b9d6fef4967a01409367d2d51147f4bb9 100644 (file)
@@ -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 );
 }