mirror of https://github.com/BOINC/boinc.git
*** empty log message ***
svn path=/trunk/boinc/; revision=8937
This commit is contained in:
parent
42c9d23238
commit
b476e75f37
|
@ -13912,3 +13912,12 @@ David 25 Nov 2005
|
||||||
client_state.C
|
client_state.C
|
||||||
client_types.h
|
client_types.h
|
||||||
gui_rpc_server_ops.C
|
gui_rpc_server_ops.C
|
||||||
|
|
||||||
|
Rom 25 Nov 2005
|
||||||
|
- Bug Fix: Curses to Windows allowing more than one application
|
||||||
|
to open up a listening socket to a port. Sometimes the
|
||||||
|
manager was being directed to another application instead of
|
||||||
|
BOINC.
|
||||||
|
|
||||||
|
client/
|
||||||
|
gui_rpc_server.C, .h
|
||||||
|
|
|
@ -133,6 +133,30 @@ int GUI_RPC_CONN_SET::get_allowed_hosts() {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool GUI_RPC_CONN_SET::is_primary_port_available() {
|
||||||
|
int retval;
|
||||||
|
int sock;
|
||||||
|
sockaddr_in addr;
|
||||||
|
|
||||||
|
memset(&addr, 0, sizeof(addr));
|
||||||
|
addr.sin_family = AF_INET;
|
||||||
|
addr.sin_port = htons(GUI_RPC_PORT);
|
||||||
|
|
||||||
|
if (gstate.allow_remote_gui_rpc || allowed_remote_ip_addresses.size() > 0) {
|
||||||
|
addr.sin_addr.s_addr = htonl(INADDR_ANY);
|
||||||
|
} else {
|
||||||
|
addr.sin_addr.s_addr = inet_addr("127.0.0.1");
|
||||||
|
}
|
||||||
|
|
||||||
|
boinc_socket(sock);
|
||||||
|
retval = connect(sock, (const sockaddr*)(&addr), sizeof(addr));
|
||||||
|
boinc_close_socket(sock);
|
||||||
|
if (retval) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
int GUI_RPC_CONN_SET::insert(GUI_RPC_CONN* p) {
|
int GUI_RPC_CONN_SET::insert(GUI_RPC_CONN* p) {
|
||||||
gui_rpcs.push_back(p);
|
gui_rpcs.push_back(p);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -154,7 +178,18 @@ int GUI_RPC_CONN_SET::init() {
|
||||||
}
|
}
|
||||||
|
|
||||||
addr.sin_family = AF_INET;
|
addr.sin_family = AF_INET;
|
||||||
addr.sin_port = htons(GUI_RPC_PORT);
|
|
||||||
|
// On Windows our primary listening socket might be in use and Windows will
|
||||||
|
// still allow us to open up a listening socket on it. To avoid possible
|
||||||
|
// connection errors with the manager we'll attempt to connect to the port
|
||||||
|
// first to see if anybody is listening, if so we'll use the alternate port
|
||||||
|
// instead.
|
||||||
|
if (is_primary_port_available()) {
|
||||||
|
addr.sin_port = htons(GUI_RPC_PORT);
|
||||||
|
} else {
|
||||||
|
addr.sin_port = htons(GUI_RPC_PORT_ALT);
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
addr.sin_addr.s_addr = htonl(INADDR_ANY);
|
addr.sin_addr.s_addr = htonl(INADDR_ANY);
|
||||||
#else
|
#else
|
||||||
|
@ -172,7 +207,6 @@ int GUI_RPC_CONN_SET::init() {
|
||||||
|
|
||||||
retval = bind(lsock, (const sockaddr*)(&addr), (boinc_socklen_t)sizeof(addr));
|
retval = bind(lsock, (const sockaddr*)(&addr), (boinc_socklen_t)sizeof(addr));
|
||||||
if (retval) {
|
if (retval) {
|
||||||
msg_printf(NULL, MSG_INFO, "Primary listening port already in use; using alternate listening port\n");
|
|
||||||
addr.sin_port = htons(GUI_RPC_PORT_ALT);
|
addr.sin_port = htons(GUI_RPC_PORT_ALT);
|
||||||
retval = bind(lsock, (const sockaddr*)(&addr), (boinc_socklen_t)sizeof(addr));
|
retval = bind(lsock, (const sockaddr*)(&addr), (boinc_socklen_t)sizeof(addr));
|
||||||
if (retval) {
|
if (retval) {
|
||||||
|
@ -182,6 +216,11 @@ int GUI_RPC_CONN_SET::init() {
|
||||||
return ERR_BIND;
|
return ERR_BIND;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (addr.sin_port == htons(GUI_RPC_PORT_ALT)) {
|
||||||
|
msg_printf(NULL, MSG_INFO, "Primary listening port was already in use; using alternate listening port\n");
|
||||||
|
}
|
||||||
|
|
||||||
retval = listen(lsock, 999);
|
retval = listen(lsock, 999);
|
||||||
if (retval) {
|
if (retval) {
|
||||||
msg_printf(NULL, MSG_ERROR, "GUI RPC listen failed: %d\n", retval);
|
msg_printf(NULL, MSG_ERROR, "GUI RPC listen failed: %d\n", retval);
|
||||||
|
|
|
@ -45,6 +45,7 @@ class GUI_RPC_CONN_SET {
|
||||||
|
|
||||||
int get_allowed_hosts();
|
int get_allowed_hosts();
|
||||||
int get_password();
|
int get_password();
|
||||||
|
bool is_primary_port_available();
|
||||||
int insert(GUI_RPC_CONN*);
|
int insert(GUI_RPC_CONN*);
|
||||||
public:
|
public:
|
||||||
GUI_RPC_CONN_SET();
|
GUI_RPC_CONN_SET();
|
||||||
|
|
Loading…
Reference in New Issue