On 03/15/2016 07:36 AM, John Ferlan wrote: > Commit 'ef2ab8fd' moved just the virDomainConfNWFilterTeardown and left > the logic to save/restore the current error essentially doing nothing > in the error path for qemuBuildCommandLine. So move it to where it > was meant to be. > > Although the original code would reset the filter on command creation > errors after building the network command portion and commit 'ef2ab8fd' > altered that logic, the teardown is called during qemuProcessStop from > virDomainConfVMNWFilterTeardown and that code has the save/restore > last error logic, so just allow that code to handle the teardown rather > than running it twice. The qemuProcessStop would be called in the failure > path of qemuBuildCommandLine. > > Signed-off-by: John Ferlan <jferlan@xxxxxxxxxx> > --- > v1: > http://www.redhat.com/archives/libvir-list/2016-March/msg00566.html > > Changes - just move the save/restore error logic from mainline to the > BuildNetCommandLine function where it's used. > > src/qemu/qemu_command.c | 10 +++++----- > 1 file changed, 5 insertions(+), 5 deletions(-) > > diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c > index b18e425..954f802 100644 > --- a/src/qemu/qemu_command.c > +++ b/src/qemu/qemu_command.c > @@ -8077,8 +8077,13 @@ qemuBuildNetCommandLine(virCommandPtr cmd, > return 0; > > error: > + /* free up any resources in the network driver > + * but don't overwrite the original error */ > + originalError = virSaveLastError(); > for (i = 0; last_good_net != -1 && i <= last_good_net; i++) > virDomainConfNWFilterTeardown(def->nets[i]); > + virSetError(originalError); > + virFreeError(originalError); > return -1; > } > > @@ -9407,11 +9412,6 @@ qemuBuildCommandLine(virConnectPtr conn, > > error: > virObjectUnref(cfg); > - /* free up any resources in the network driver > - * but don't overwrite the original error */ > - originalError = virSaveLastError(); > - virSetError(originalError); > - virFreeError(originalError); > virCommandFree(cmd); > return NULL; > } > <sigh> forgot to save/merge my necessary local branch change: diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 954f802..3e7f1fe 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -8024,6 +8024,7 @@ qemuBuildNetCommandLine(virCommandPtr cmd, { size_t i; int last_good_net = -1; + virErrorPtr originalError = NULL; if (!def->nnets) { /* If we have -device, then we set -nodefault already */ @@ -9176,7 +9177,6 @@ qemuBuildCommandLine(virConnectPtr conn, const char *domainLibDir, const char *domainChannelTargetDir) { - virErrorPtr originalError = NULL; size_t i; char uuid[VIR_UUID_STRING_BUFLEN]; virCommandPtr cmd = NULL; -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list