aboutsummaryrefslogtreecommitdiff
path: root/src/kdc
diff options
context:
space:
mode:
authorMatt Rogers <mrogers@redhat.com>2016-09-14 14:01:10 -0400
committerGreg Hudson <ghudson@mit.edu>2016-09-23 11:45:18 -0400
commitbf1a0aeb6d0423ebaf4c3dd21fe2c51b894ccb38 (patch)
tree95eeb57d878736d0252dcaedaa2db213ec0c69ac /src/kdc
parentb9c5c7a6b65764f8303248582b2d1929fb656ab7 (diff)
downloadkrb5-bf1a0aeb6d0423ebaf4c3dd21fe2c51b894ccb38.zip
krb5-bf1a0aeb6d0423ebaf4c3dd21fe2c51b894ccb38.tar.gz
krb5-bf1a0aeb6d0423ebaf4c3dd21fe2c51b894ccb38.tar.bz2
Add the kdc_tcp_listen_backlog KDC option
Allow setting the listen() queue for TCP connections to krb5kdc.
Diffstat (limited to 'src/kdc')
-rw-r--r--src/kdc/main.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/src/kdc/main.c b/src/kdc/main.c
index 9ceb3a7..6767ef0 100644
--- a/src/kdc/main.c
+++ b/src/kdc/main.c
@@ -54,7 +54,8 @@ static void usage (char *);
static krb5_error_code setup_sam (void);
-static void initialize_realms (krb5_context, int, char **);
+static void initialize_realms(krb5_context kcontext, int argc, char **argv,
+ int *tcp_listen_backlog_out);
static void finish_realms (void);
@@ -614,7 +615,8 @@ usage(char *name)
static void
-initialize_realms(krb5_context kcontext, int argc, char **argv)
+initialize_realms(krb5_context kcontext, int argc, char **argv,
+ int *tcp_listen_backlog_out)
{
int c;
char *db_name = (char *) NULL;
@@ -654,6 +656,12 @@ initialize_realms(krb5_context kcontext, int argc, char **argv)
hierarchy[1] = KRB5_CONF_KDC_MAX_DGRAM_REPLY_SIZE;
if (krb5_aprof_get_int32(aprof, hierarchy, TRUE, &max_dgram_reply_size))
max_dgram_reply_size = MAX_DGRAM_SIZE;
+ if (tcp_listen_backlog_out != NULL) {
+ hierarchy[1] = KRB5_CONF_KDC_TCP_LISTEN_BACKLOG;
+ if (krb5_aprof_get_int32(aprof, hierarchy, TRUE,
+ tcp_listen_backlog_out))
+ *tcp_listen_backlog_out = DEFAULT_TCP_LISTEN_BACKLOG;
+ }
hierarchy[1] = KRB5_CONF_RESTRICT_ANONYMOUS_TO_TGT;
if (krb5_aprof_get_boolean(aprof, hierarchy, TRUE, &def_restrict_anon))
def_restrict_anon = FALSE;
@@ -918,6 +926,7 @@ int main(int argc, char **argv)
krb5_context kcontext;
kdc_realm_t *realm;
verto_ctx *ctx;
+ int tcp_listen_backlog;
int errout = 0;
int i;
@@ -958,7 +967,7 @@ int main(int argc, char **argv)
/*
* Scan through the argument list
*/
- initialize_realms(kcontext, argc, argv);
+ initialize_realms(kcontext, argc, argv, &tcp_listen_backlog);
#ifndef NOCACHE
retval = kdc_init_lookaside(kcontext);
@@ -1011,7 +1020,8 @@ int main(int argc, char **argv)
return 1;
}
}
- if ((retval = loop_setup_network(ctx, &shandle, kdc_progname))) {
+ if ((retval = loop_setup_network(ctx, &shandle, kdc_progname,
+ tcp_listen_backlog))) {
net_init_error:
kdc_err(kcontext, retval, _("while initializing network"));
finish_realms();
@@ -1038,7 +1048,7 @@ int main(int argc, char **argv)
return 1;
}
/* We get here only in a worker child process; re-initialize realms. */
- initialize_realms(kcontext, argc, argv);
+ initialize_realms(kcontext, argc, argv, NULL);
}
/* Initialize audit system and audit KDC startup. */