
On 09.12.2016 15:57, John Ferlan wrote:
On 12/09/2016 01:51 AM, Nikolay Shirokovskiy wrote:
On 08.12.2016 23:07, John Ferlan wrote:
On 11/22/2016 06:09 AM, Nikolay Shirokovskiy wrote:
We need extra state variable to distinguish between autogenerated and user defined cases after auto generation is done. --- src/conf/domain_conf.h | 1 + src/qemu/qemu_process.c | 19 +++++++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 541b600..9bc4522 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -1468,6 +1468,7 @@ struct _virDomainGraphicsDef { int port; bool portReserved; int websocket; + bool websocketGenerated; bool autoport; char *keymap; virDomainGraphicsAuthDef auth; diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 6aaaa10..1799f33 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -3574,6 +3574,7 @@ qemuProcessVNCAllocatePorts(virQEMUDriverPtr driver, if (virPortAllocatorAcquire(driver->webSocketPorts, &port) < 0) return -1; graphics->data.vnc.websocket = port; + graphics->data.vnc.websocketGenerated = true; }
return 0; @@ -4065,6 +4066,12 @@ qemuProcessGraphicsReservePorts(virQEMUDriverPtr driver, return -1; graphics->data.vnc.portReserved = true; } + if (graphics->data.vnc.websocket != -1 && /* auto websocket */ + graphics->data.vnc.websocket && /* no websocket */ + virPortAllocatorSetUsed(driver->remotePorts, + graphics->data.vnc.websocket, + true) < 0) + return -1; break;
case VIR_DOMAIN_GRAPHICS_TYPE_SPICE: @@ -6189,8 +6196,16 @@ void qemuProcessStop(virQEMUDriverPtr driver, false); graphics->data.vnc.portReserved = false; } - virPortAllocatorRelease(driver->webSocketPorts, - graphics->data.vnc.websocket); + if (graphics->data.vnc.websocketGenerated) { + virPortAllocatorRelease(driver->webSocketPorts, + graphics->data.vnc.websocket); + graphics->data.vnc.websocketGenerated = false; + graphics->data.vnc.websocket = -1;
One more question... Should this be 0 instead of -1?
We set to -1 during Reserve and set the Generated flag indicating that the user didn't set to -1, but we did.
Not quite. -1 is valid user input. Reserve does not change websocket value.
Oh right - I think I was crossing thoughts and thinking setting to -1 was internally done...
The series is now pushed
Tks,
John
Thankx!