diff options
| author | Greg Hudson <ghudson@mit.edu> | 2010-09-17 17:42:31 +0000 |
|---|---|---|
| committer | Greg Hudson <ghudson@mit.edu> | 2010-09-17 17:42:31 +0000 |
| commit | 62c814a80d26879594c78f750cd7e138fe1d7f96 (patch) | |
| tree | 5a1530f57708081daeb3e50fe47ea01dc1838f36 /src/lib/apputils | |
| parent | 76f9f2ab6598831e9624ccd5d332886fedfcc8c2 (diff) | |
| download | krb5-62c814a80d26879594c78f750cd7e138fe1d7f96.tar.gz krb5-62c814a80d26879594c78f750cd7e138fe1d7f96.tar.xz krb5-62c814a80d26879594c78f750cd7e138fe1d7f96.zip | |
KDC worker processes feature
Add support for a krb5kdc -w option which causes the KDC to spawn
worker processes which can process requests in parallel. See also:
http://k5wiki.kerberos.org/wiki/Projects/Parallel_KDC
ticket: 6783
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@24328 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib/apputils')
| -rw-r--r-- | src/lib/apputils/net-server.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/lib/apputils/net-server.c b/src/lib/apputils/net-server.c index 906619d29..9d3daea40 100644 --- a/src/lib/apputils/net-server.c +++ b/src/lib/apputils/net-server.c @@ -808,6 +808,7 @@ setup_udp_port_1(struct socksetup *data, struct sockaddr *addr, sock = create_server_socket(data, addr, SOCK_DGRAM); if (sock == -1) return 1; + setnbio(sock); #if !(defined(CMSG_SPACE) && defined(HAVE_STRUCT_CMSGHDR) && \ (defined(IP_PKTINFO) || defined(IPV6_PKTINFO))) @@ -1092,7 +1093,7 @@ extern int krb5int_debug_sendto_kdc; extern void (*krb5int_sendtokdc_debug_handler)(const void*, size_t); krb5_error_code -setup_network(void *handle, const char *prog) +setup_network(void *handle, const char *prog, int no_reconfig) { struct socksetup setup_data; @@ -1108,7 +1109,8 @@ setup_network(void *handle, const char *prog) setup_data.retval = 0; krb5_klog_syslog (LOG_INFO, "setting up network..."); #ifdef HAVE_STRUCT_RT_MSGHDR - setup_routing_socket(&setup_data); + if (!no_reconfig) + setup_routing_socket(&setup_data); #endif /* * To do: Use RFC 2292 interface (or follow-on) and IPV6_PKTINFO, @@ -1381,7 +1383,7 @@ process_packet(void *handle, struct connection *conn, const char *prog, (struct sockaddr *)&daddr, &daddr_len, &auxaddr); if (cc == -1) { - if (errno != EINTR + if (errno != EINTR && errno != EAGAIN /* * This is how Linux indicates that a previous transmission was * refused, e.g., if the client timed out before getting the @@ -1837,7 +1839,7 @@ listen_and_process(void *handle, const char *prog, void (*reset)(void)) if (sret == 0 && netchanged) { network_reconfiguration_needed = 0; closedown_network_sockets(); - err = setup_network(handle, prog); + err = setup_network(handle, prog, 0); if (err) { com_err(prog, err, "while reinitializing network"); return err; |
