diff --git a/client/gui_rpc_server.cpp b/client/gui_rpc_server.cpp index 99500ff2e2..2185db2728 100644 --- a/client/gui_rpc_server.cpp +++ b/client/gui_rpc_server.cpp @@ -223,8 +223,8 @@ int GUI_RPC_CONN_SET::insert(GUI_RPC_CONN* p) { } int GUI_RPC_CONN_SET::init_unix_domain() { -#ifndef _WIN32 - sockaddr_un addr; +#if !defined(_WIN32) + struct sockaddr_un addr; get_password(); int retval = boinc_socket(lsock, AF_UNIX); if (retval) { @@ -240,8 +240,13 @@ int GUI_RPC_CONN_SET::init_unix_domain() { strcpy(&addr.sun_path[1], GUI_RPC_FILE); socklen_t len = offsetof(struct sockaddr_un, sun_path) + 1 + strlen(&addr.sun_path[1]); #else + // NOTE: if we ever add Mac OS X support, need to change this + // +#ifdef __APPLE__ + addr.sun_len = sizeof(addr); +#endif strcpy(addr.sun_path, GUI_RPC_FILE); - int len = strlen(GUI_RPC_FILE) + sizeof(addr.sun_family); + socklen_t len = SUN_LEN(&addr); #endif unlink(GUI_RPC_FILE); if (bind(lsock, (struct sockaddr*)&addr, len) < 0) { diff --git a/clientgui/AdvancedFrame.cpp b/clientgui/AdvancedFrame.cpp index f13f297e43..2af8d0d953 100644 --- a/clientgui/AdvancedFrame.cpp +++ b/clientgui/AdvancedFrame.cpp @@ -1709,7 +1709,14 @@ void CAdvancedFrame::OnConnect(CFrameEvent& WXUNUSED(event)) { pDoc->rpc.get_project_init_status(pis); pDoc->rpc.acct_mgr_info(ami); - if (ami.acct_mgr_url.size() && !ami.have_credentials) { + + if (ami.acct_mgr_url.size() && ami.have_credentials) { + // Fall through + // + // There isn't a need to bring up the attach wizard, the account manager will + // take care of ataching to projects when it completes the RPCs + // + } else if (ami.acct_mgr_url.size() && !ami.have_credentials) { wasShown = IsShown(); Show(); wasVisible = wxGetApp().IsApplicationVisible(); diff --git a/lib/gui_rpc_client.cpp b/lib/gui_rpc_client.cpp index b7269de023..b561d1a64c 100644 --- a/lib/gui_rpc_client.cpp +++ b/lib/gui_rpc_client.cpp @@ -237,7 +237,7 @@ int RPC_CLIENT::init_poll() { } int RPC_CLIENT::init_unix_domain() { -#ifdef _WIN32 +#if defined(_WIN32) fprintf(stderr, "Unix domain not implemented in Windows\n"); return -1; #else @@ -245,8 +245,11 @@ int RPC_CLIENT::init_unix_domain() { int retval = boinc_socket(sock, AF_UNIX); if (retval) return retval; addr_un.sun_family = AF_UNIX; +#ifdef __APPLE__ + addr_un.sun_len = sizeof(addr_un); +#endif strcpy(addr_un.sun_path, GUI_RPC_FILE); - int len = strlen(GUI_RPC_FILE) + sizeof(addr_un.sun_family); + socklen_t len = SUN_LEN(&addr_un); if (connect(sock, (struct sockaddr*)&addr_un, len) < 0) { boinc_close_socket(sock); return ERR_CONNECT;