mirror of
https://gitlab.uni-freiburg.de/opensourcevdi/spice
synced 2025-12-26 22:48:19 +00:00
server: listen on a pre-opened file descriptor
Allow applications to pre-open a file descriptor and have spice listen on it. Thanks to Daniel Berrange for his comments
This commit is contained in:
parent
20c7323c9e
commit
198ffb92d4
@ -94,6 +94,7 @@ static SpiceMigrateInstance *migration_interface = NULL;
|
||||
|
||||
static int spice_port = -1;
|
||||
static int spice_secure_port = -1;
|
||||
static int spice_listen_socket_fd = -1;
|
||||
static char spice_addr[256];
|
||||
static int spice_family = PF_UNSPEC;
|
||||
static char *default_renderer = "sw";
|
||||
@ -2995,6 +2996,19 @@ static int reds_init_net(void)
|
||||
red_error("set fd handle failed");
|
||||
}
|
||||
}
|
||||
|
||||
if (spice_listen_socket_fd != -1 ) {
|
||||
reds->listen_socket = spice_listen_socket_fd;
|
||||
if (-1 == reds->listen_socket) {
|
||||
return -1;
|
||||
}
|
||||
reds->listen_watch = core->watch_add(reds->listen_socket,
|
||||
SPICE_WATCH_EVENT_READ,
|
||||
reds_accept, NULL);
|
||||
if (reds->listen_watch == NULL) {
|
||||
red_error("set fd handle failed");
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -3787,6 +3801,13 @@ SPICE_GNUC_VISIBLE void spice_server_set_addr(SpiceServer *s, const char *addr,
|
||||
}
|
||||
}
|
||||
|
||||
SPICE_GNUC_VISIBLE int spice_server_set_listen_socket_fd(SpiceServer *s, int listen_fd)
|
||||
{
|
||||
ASSERT(reds == s);
|
||||
spice_listen_socket_fd = listen_fd;
|
||||
return 0;
|
||||
}
|
||||
|
||||
SPICE_GNUC_VISIBLE int spice_server_set_noauth(SpiceServer *s)
|
||||
{
|
||||
ASSERT(reds == s);
|
||||
|
||||
@ -106,4 +106,5 @@ SPICE_SERVER_0.10.2 {
|
||||
global:
|
||||
spice_server_set_name;
|
||||
spice_server_set_uuid;
|
||||
spice_server_set_listen_socket_fd;
|
||||
} SPICE_SERVER_0.10.1;
|
||||
|
||||
@ -421,6 +421,7 @@ int spice_server_set_compat_version(SpiceServer *s,
|
||||
spice_compat_version_t version);
|
||||
int spice_server_set_port(SpiceServer *s, int port);
|
||||
void spice_server_set_addr(SpiceServer *s, const char *addr, int flags);
|
||||
int spice_server_set_listen_socket_fd(SpiceServer *s, int listen_fd);
|
||||
int spice_server_set_noauth(SpiceServer *s);
|
||||
int spice_server_set_sasl(SpiceServer *s, int enabled);
|
||||
int spice_server_set_sasl_appname(SpiceServer *s, const char *appname);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user