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!