提交 cb712443 编写于 作者: D Daniel P. Berrangé

remote: use a separate connection for interface APIs

Reviewed-by: NJohn Ferlan <jferlan@redhat.com>
Signed-off-by: NDaniel P. Berrangé <berrange@redhat.com>
上级 6f975001
......@@ -74,6 +74,7 @@ struct daemonClientPrivate {
* called, it will be set back to NULL if that succeeds.
*/
virConnectPtr conn;
virConnectPtr interfaceConn;
daemonClientStreamPtr streams;
};
......
......@@ -1745,6 +1745,8 @@ void remoteClientFree(void *data)
if (priv->conn)
virConnectClose(priv->conn);
if (priv->interfaceConn)
virConnectClose(priv->interfaceConn);
VIR_FREE(priv);
}
......@@ -1817,6 +1819,8 @@ remoteDispatchConnectOpen(virNetServerPtr server ATTRIBUTE_UNUSED,
if (priv->conn == NULL)
goto cleanup;
priv->interfaceConn = virObjectRef(priv->conn);
/* force update the @readonly attribute which was inherited from the
* virNetServerService object - this is important for sockets that are RW
* by default, but do accept RO flags, e.g. TCP
......
......@@ -111,9 +111,32 @@ sub name_to_TypeName {
}
sub get_conn_arg {
my $proc = shift;
my $args = shift;
my $rets = shift;
if ($structprefix eq "admin") {
return "priv->dmn";
}
my @types;
push @types, @{$args} if $args;
push @types, @{$rets} if $rets;
# This correctly detects most APIs
foreach my $type (@types) {
if ($type =~ /remote_nonnull_interface/) {
return "priv->interfaceConn";
}
}
# This is for the few virConnect APIs that
# return things which aren't objects. eg list
# of pool names, or number of pools.
if ($proc =~ /Connect.*Interface/ || $proc =~ /InterfaceChange/) {
return "priv->interfaceConn";
}
return "priv->conn";
}
......@@ -481,7 +504,7 @@ elsif ($mode eq "server") {
my @free_list = ();
my @free_list_on_error = ("virNetMessageSaveError(rerr);");
my $conn = get_conn_arg();
my $conn = get_conn_arg($call->{ProcName}, $call->{args_members}, $call->{ret_members});
# handle arguments to the function
if ($argtype ne "void") {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册