/* Remove all listen socks from event handler, and close them. */
for (i = 0; i < nsocks; i++) {
- virNetSocketUpdateIOCallback(socks[i], 0);
virNetSocketRemoveIOCallback(socks[i]);
virNetSocketClose(socks[i]);
virObjectUnref(socks[i]);
}
args->nsocks = 0;
VIR_FORCE_CLOSE(recvfd);
+ virObjectUnref(args);
}
virNetSocketUpdateIOCallback(socks[i], 0);
virNetSocketRemoveIOCallback(socks[i]);
virNetSocketClose(socks[i]);
- virObjectUnref(socks[i]);
socks[i] = NULL;
}
args->nsocks = 0;
VIR_FORCE_CLOSE(recvfd);
+ virObjectUnref(args);
}
static int
virNetSocketPtr *socks = NULL;
size_t nsocks = 0;
int nsocks_listen = 0;
- libxlMigrationDstArgs *args;
+ libxlMigrationDstArgs *args = NULL;
size_t i;
int ret = -1;
VIR_EVENT_HANDLE_READABLE,
libxlMigrateReceive,
args,
- virObjectFreeCallback) < 0)
+ NULL) < 0)
continue;
- /*
- * Successfully added sock to event loop. Take a ref on args to
- * ensure it is not freed until sock is removed from the event loop.
- * Ref is dropped in virObjectFreeCallback after being removed
- * from the event loop.
- */
- virObjectRef(args);
nsocks_listen++;
}
- /* Done with args in this function, drop reference */
- virObjectUnref(args);
-
if (!nsocks_listen)
goto error;
virObjectUnref(socks[i]);
}
VIR_FREE(socks);
+ virObjectUnref(args);
+
/* Remove virDomainObj from domain list */
if (vm) {
virDomainObjListRemove(driver->domains, vm);