You need to sign in or sign up before continuing.
提交 1215965a 编写于 作者: N Nikolay Shirokovskiy 提交者: John Ferlan

qemu: mark user defined websocket as used

We need extra state variable to distinguish between autogenerated
and user defined cases after auto generation is done.
上级 b07cfd72
...@@ -1487,6 +1487,7 @@ struct _virDomainGraphicsDef { ...@@ -1487,6 +1487,7 @@ struct _virDomainGraphicsDef {
int port; int port;
bool portReserved; bool portReserved;
int websocket; int websocket;
bool websocketGenerated;
bool autoport; bool autoport;
char *keymap; char *keymap;
virDomainGraphicsAuthDef auth; virDomainGraphicsAuthDef auth;
......
...@@ -3614,6 +3614,7 @@ qemuProcessVNCAllocatePorts(virQEMUDriverPtr driver, ...@@ -3614,6 +3614,7 @@ qemuProcessVNCAllocatePorts(virQEMUDriverPtr driver,
if (virPortAllocatorAcquire(driver->webSocketPorts, &port) < 0) if (virPortAllocatorAcquire(driver->webSocketPorts, &port) < 0)
return -1; return -1;
graphics->data.vnc.websocket = port; graphics->data.vnc.websocket = port;
graphics->data.vnc.websocketGenerated = true;
} }
return 0; return 0;
...@@ -4105,6 +4106,11 @@ qemuProcessGraphicsReservePorts(virQEMUDriverPtr driver, ...@@ -4105,6 +4106,11 @@ qemuProcessGraphicsReservePorts(virQEMUDriverPtr driver,
return -1; return -1;
graphics->data.vnc.portReserved = true; graphics->data.vnc.portReserved = true;
} }
if (graphics->data.vnc.websocket > 0 &&
virPortAllocatorSetUsed(driver->remotePorts,
graphics->data.vnc.websocket,
true) < 0)
return -1;
break; break;
case VIR_DOMAIN_GRAPHICS_TYPE_SPICE: case VIR_DOMAIN_GRAPHICS_TYPE_SPICE:
...@@ -6212,8 +6218,16 @@ void qemuProcessStop(virQEMUDriverPtr driver, ...@@ -6212,8 +6218,16 @@ void qemuProcessStop(virQEMUDriverPtr driver,
false); false);
graphics->data.vnc.portReserved = false; graphics->data.vnc.portReserved = false;
} }
virPortAllocatorRelease(driver->webSocketPorts, if (graphics->data.vnc.websocketGenerated) {
graphics->data.vnc.websocket); virPortAllocatorRelease(driver->webSocketPorts,
graphics->data.vnc.websocket);
graphics->data.vnc.websocketGenerated = false;
graphics->data.vnc.websocket = -1;
} else if (graphics->data.vnc.websocket) {
virPortAllocatorSetUsed(driver->remotePorts,
graphics->data.vnc.websocket,
false);
}
} }
if (graphics->type == VIR_DOMAIN_GRAPHICS_TYPE_SPICE) { if (graphics->type == VIR_DOMAIN_GRAPHICS_TYPE_SPICE) {
if (graphics->data.spice.autoport) { if (graphics->data.spice.autoport) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册