# # # patch "usher/src/administrator.cc" # from [28f6d21969e51862f5d66a1c2675014b7839b8d9] # to [8f1486350be0cfcf0768ba73a2096c7ac7c2f9ba] # # patch "usher/src/sock.cc" # from [d7f4f0f1dcbbe4c93ae84466a95b3a42aa240604] # to [03b2e91be9c7c475fe1b87133368bf56f6fc1ca3] # # patch "usher/src/usher.cc" # from [d87a5ee46716e52259c9d7e1f0a7fdc5d19da694] # to [547d17545758d9003a83dd31050d42b94b660c8a] # ============================================================ --- usher/src/administrator.cc 28f6d21969e51862f5d66a1c2675014b7839b8d9 +++ usher/src/administrator.cc 8f1486350be0cfcf0768ba73a2096c7ac7c2f9ba @@ -22,6 +22,7 @@ using boost::lexical_cast; #include #include +#include namespace defaults { @@ -288,6 +289,7 @@ administrator::process_selected(fd_set & memset(&addr, 0, l); sock nc = tosserr(accept(port, (struct sockaddr *) &addr, &l), "accept()"); + tosserr(fcntl(nc, F_SETFL, O_NONBLOCK), "fcntl()"); conns.push_back(make_pair(cstate(), nc)); } catch(errstr & s) { cerr<<"During new admin connection: "< #include #include +#include using std::set; using std::string; @@ -144,6 +145,7 @@ start(string const & addr, int port) start(string const & addr, int port) { sock s = tosserr(socket(AF_INET, SOCK_STREAM, 0), "socket()"); + tosserr(fcntl(s, F_SETFL, O_NONBLOCK), "fcntl()"); int yes = 1; tosserr(setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(yes)), "setsockopt"); ============================================================ --- usher/src/usher.cc d87a5ee46716e52259c9d7e1f0a7fdc5d19da694 +++ usher/src/usher.cc 547d17545758d9003a83dd31050d42b94b660c8a @@ -22,6 +22,7 @@ #include #include #include +#include #include #include @@ -181,6 +182,7 @@ int main (int argc, char **argv) memset(&client_address, 0, l); sock cli = tosserr(accept(admin.serverport, (struct sockaddr *) &client_address, &l), "accept()"); + tosserr(fcntl(cli, F_SETFL, O_NONBLOCK), "fcntl()"); if (manager.get_connections_allowed()) newchan = new channel(cli, manager, netsync_connection); else {