summaryrefslogtreecommitdiffstats
path: root/client
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@redhat.com>2012-03-05 22:39:24 +0100
committerMarc-André Lureau <marcandre.lureau@redhat.com>2012-03-05 22:52:27 +0100
commit1ab589f39ed0429ca08f13f093161098ac511ef1 (patch)
treef9541a81a60ac00a7371fef53fc42d0e9cc4465a /client
parent01d565ff5472201d082e9bca5fa017694d4013ef (diff)
downloadspice-1ab589f39ed0429ca08f13f093161098ac511ef1.tar.gz
spice-1ab589f39ed0429ca08f13f093161098ac511ef1.tar.xz
spice-1ab589f39ed0429ca08f13f093161098ac511ef1.zip
Use SPICE_FOREIGN_MENU_SOCKET if it's available
If specified, use SPICE_FOREIGN_MENU_SOCKET environment variable over snprintf(pipe_name, PIPE_NAME_MAX_LEN, PIPE_NAME, Platform::get_process_id()); since it's impossible to guess the client pid when spice-xpi launches the client as a grand-child (via script etc). This is also more aligned with the way we handle SPICE_XPI_SOCKET location.
Diffstat (limited to 'client')
-rw-r--r--client/controller.cpp2
-rw-r--r--client/foreign_menu.cpp8
2 files changed, 8 insertions, 2 deletions
diff --git a/client/controller.cpp b/client/controller.cpp
index e0b7fe77..514bf68a 100644
--- a/client/controller.cpp
+++ b/client/controller.cpp
@@ -44,7 +44,7 @@ Controller::Controller(ControllerInterface *handler)
#ifdef WIN32
snprintf(pipe_name, PIPE_NAME_MAX_LEN, PIPE_NAME, Platform::get_process_id());
#else
- char *p_socket = getenv("SPICE_XPI_SOCKET");
+ const char *p_socket = getenv("SPICE_XPI_SOCKET");
if (!p_socket) {
LOG_ERROR("Failed to get a controller connection (SPICE_XPI_SOCKET)");
throw Exception("Failed to get a controller connection (SPICE_XPI_SOCKET)");
diff --git a/client/foreign_menu.cpp b/client/foreign_menu.cpp
index faef4c27..1010bfba 100644
--- a/client/foreign_menu.cpp
+++ b/client/foreign_menu.cpp
@@ -44,7 +44,13 @@ ForeignMenu::ForeignMenu(ForeignMenuInterface *handler, bool active)
char pipe_name[PIPE_NAME_MAX_LEN];
ASSERT(_handler != NULL);
- snprintf(pipe_name, PIPE_NAME_MAX_LEN, PIPE_NAME, Platform::get_process_id());
+#ifndef WIN32
+ const char *p_socket = getenv("SPICE_FOREIGN_MENU_SOCKET");
+ if (p_socket)
+ strncpy(pipe_name, p_socket, sizeof(pipe_name));
+ else
+#endif
+ snprintf(pipe_name, PIPE_NAME_MAX_LEN, PIPE_NAME, Platform::get_process_id());
LOG_INFO("Creating a foreign menu connection %s", pipe_name);
_foreign_menu = NamedPipe::create(pipe_name, *this);
if (!_foreign_menu) {