From 0864531e586dcbac02ea45a3c1f1c0ea24db1551 Mon Sep 17 00:00:00 2001 From: Pierangelo Masarati Date: Sat, 3 May 2003 11:30:38 +0000 Subject: [PATCH] add network timeout (ITS#2413 reworked) --- servers/slapd/back-meta/back-meta.h | 1 + servers/slapd/back-meta/config.c | 10 ++++++++++ servers/slapd/back-meta/conn.c | 13 +++++++++++++ 3 files changed, 24 insertions(+) diff --git a/servers/slapd/back-meta/back-meta.h b/servers/slapd/back-meta/back-meta.h index 463fc5a7c1..41b6cda628 100644 --- a/servers/slapd/back-meta/back-meta.h +++ b/servers/slapd/back-meta/back-meta.h @@ -146,6 +146,7 @@ struct metadncache { struct metainfo { int ntargets; int defaulttarget; + int network_timeout; #define META_DEFAULT_TARGET_NONE -1 struct metatarget **targets; diff --git a/servers/slapd/back-meta/config.c b/servers/slapd/back-meta/config.c index 6c0f88a92e..664cbd5199 100644 --- a/servers/slapd/back-meta/config.c +++ b/servers/slapd/back-meta/config.c @@ -312,6 +312,16 @@ meta_back_db_config( li->cache.ttl = atol( argv[ 1 ] ); } + /* network timeout when connecting to ldap servers */ + } else if ( strcasecmp( argv[ 0 ], "network-timeout" ) == 0 ) { + if ( argc != 2 ) { + fprintf( stderr, + "%s: line %d: missing network timeout in \"network-timeout \" line\n", + fname, lineno ); + return 1; + } + li->network_timeout = atol(argv[ 1 ]); + /* name to use for meta_back_group */ } else if ( strcasecmp( argv[ 0 ], "binddn" ) == 0 ) { int i = li->ntargets-1; diff --git a/servers/slapd/back-meta/conn.c b/servers/slapd/back-meta/conn.c index b2f9f0969b..84f970d3cd 100644 --- a/servers/slapd/back-meta/conn.c +++ b/servers/slapd/back-meta/conn.c @@ -235,6 +235,7 @@ init_one_conn( struct metasingleconn *lsc ) { + struct metainfo *li = ( struct metainfo * )op->o_bd->be_private; int vers; dncookie dc; @@ -262,6 +263,18 @@ init_one_conn( /* FIXME: configurable? */ ldap_set_option(lsc->ld, LDAP_OPT_REFERRALS, LDAP_OPT_ON); + /* + * Set the network timeout if set + */ + if (li->network_timeout != 0){ + struct timeval network_timeout; + + network_timeout.tv_usec = 0; + network_timeout.tv_sec = li->network_timeout; + + ldap_set_option( lsc->ld, LDAP_OPT_NETWORK_TIMEOUT, (void *) &network_timeout); + } + /* * Sets a cookie for the rewrite session */ -- 2.39.5