summaryrefslogtreecommitdiffstats
path: root/src/core
diff options
context:
space:
mode:
Diffstat (limited to 'src/core')
-rw-r--r--src/core/open.c5
-rw-r--r--src/core/xfer.c3
2 files changed, 3 insertions, 5 deletions
diff --git a/src/core/open.c b/src/core/open.c
index d5eb30cfa..70b427ba2 100644
--- a/src/core/open.c
+++ b/src/core/open.c
@@ -188,15 +188,10 @@ int xfer_open ( struct xfer_interface *xfer, int type, ... ) {
* method handler.
*/
int xfer_vreopen ( struct xfer_interface *xfer, int type, va_list args ) {
- struct xfer_interface_operations *op = xfer->op;
/* Close existing connection */
- xfer_nullify ( xfer );
xfer_close ( xfer, 0 );
- /* Restore to operational status */
- xfer->op = op;
-
/* Open new location */
return xfer_vopen ( xfer, type, args );
}
diff --git a/src/core/xfer.c b/src/core/xfer.c
index a9bcb4d7b..1ec6f9d3f 100644
--- a/src/core/xfer.c
+++ b/src/core/xfer.c
@@ -45,11 +45,14 @@ static struct xfer_metadata dummy_metadata;
*/
void xfer_close ( struct xfer_interface *xfer, int rc ) {
struct xfer_interface *dest = xfer_get_dest ( xfer );
+ struct xfer_interface_operations *op = xfer->op;
DBGC ( xfer, "XFER %p->%p close\n", xfer, dest );
xfer_unplug ( xfer );
+ xfer_nullify ( xfer );
dest->op->close ( dest, rc );
+ xfer->op = op;
xfer_put ( dest );
}