summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJani Taskinen <jani@php.net>2007-10-06 02:13:50 +0000
committerJani Taskinen <jani@php.net>2007-10-06 02:13:50 +0000
commit732f54a65cf874b6dfcd505964a0606443c319da (patch)
treee6fac6ab5d696fe17c5432e1fbcb9c0c7123a226
parentc65b53b6c64dd812d86ed2ea79c808b8d7007074 (diff)
downloadphp-git-732f54a65cf874b6dfcd505964a0606443c319da.tar.gz
MFH:- Add support for LDAP_X_OPT_CONNECT_TIMEOUT (Netscape LDAP SDK equivalent for LDAP_OPT_NETWORK_TIMEOUT)
-rw-r--r--ext/ldap/ldap.c36
1 files changed, 29 insertions, 7 deletions
diff --git a/ext/ldap/ldap.c b/ext/ldap/ldap.c
index b71efd6d60..da79325b68 100644
--- a/ext/ldap/ldap.c
+++ b/ext/ldap/ldap.c
@@ -260,6 +260,8 @@ PHP_MINIT_FUNCTION(ldap)
REGISTER_LONG_CONSTANT("LDAP_OPT_TIMELIMIT", LDAP_OPT_TIMELIMIT, CONST_PERSISTENT | CONST_CS);
#ifdef LDAP_OPT_NETWORK_TIMEOUT
REGISTER_LONG_CONSTANT("LDAP_OPT_NETWORK_TIMEOUT", LDAP_OPT_NETWORK_TIMEOUT, CONST_PERSISTENT | CONST_CS);
+#elif defined (LDAP_X_OPT_CONNECT_TIMEOUT)
+ REGISTER_LONG_CONSTANT("LDAP_OPT_NETWORK_TIMEOUT", LDAP_X_OPT_CONNECT_TIMEOUT, CONST_PERSISTENT | CONST_CS);
#endif
REGISTER_LONG_CONSTANT("LDAP_OPT_PROTOCOL_VERSION", LDAP_OPT_PROTOCOL_VERSION, CONST_PERSISTENT | CONST_CS);
REGISTER_LONG_CONSTANT("LDAP_OPT_ERROR_NUMBER", LDAP_OPT_ERROR_NUMBER, CONST_PERSISTENT | CONST_CS);
@@ -1726,20 +1728,30 @@ PHP_FUNCTION(ldap_get_option)
zval_dtor(*retval);
ZVAL_LONG(*retval, val);
} break;
-#ifdef LDAP_OPT_NETWORK_TIMEOUT
+#if defined(LDAP_OPT_NETWORK_TIMEOUT) || defined(LDAP_X_OPT_CONNECT_TIMEOUT)
case LDAP_OPT_NETWORK_TIMEOUT:
{
+# ifdef LDAP_OPT_NETWORK_TIMEOUT
struct timeval *timeout;
-
- if (ldap_get_option(ld->link, opt, (void *) &timeout)) {
+
+ if (ldap_get_option(ld->link, LDAP_OPT_NETWORK_TIMEOUT, (void *) &timeout)) {
if (timeout) {
ldap_memfree(timeout);
}
RETURN_FALSE;
- }
+ }
zval_dtor(*retval);
ZVAL_LONG(*retval, timeout->tv_sec);
ldap_memfree(timeout);
+# elif defined(LDAP_X_OPT_CONNECT_TIMEOUT)
+ int timeout;
+
+ if (ldap_get_option(ld->link, LDAP_X_OPT_CONNECT_TIMEOUT, &timeout)) {
+ RETURN_FALSE;
+ }
+ zval_dtor(*retval);
+ ZVAL_LONG(*retval, (timeout / 1000));
+# endif
} break;
#endif
/* options with string value */
@@ -1824,17 +1836,27 @@ PHP_FUNCTION(ldap_set_option)
RETURN_FALSE;
}
} break;
-#ifdef LDAP_OPT_NETWORK_TIMEOUT
+#if defined(LDAP_OPT_NETWORK_TIMEOUT) || defined(LDAP_X_OPT_CONNECT_TIMEOUT)
case LDAP_OPT_NETWORK_TIMEOUT:
{
+# ifdef LDAP_OPT_NETWORK_TIMEOUT
struct timeval timeout;
-
+
convert_to_long_ex(newval);
timeout.tv_sec = Z_LVAL_PP(newval);
timeout.tv_usec = 0;
- if (ldap_set_option(ldap, opt, (void *) &timeout)) {
+ if (ldap_set_option(ldap, LDAP_OPT_NETWORK_TIMEOUT, (void *) &timeout)) {
RETURN_FALSE;
}
+# elif defined(LDAP_X_OPT_CONNECT_TIMEOUT)
+ int timeout;
+
+ convert_to_long_ex(newval);
+ timeou = 1000 * Z_LVAL_PP(newval); /* Convert to milliseconds */
+ if (ldap_set_option(ldap, LDAP_X_OPT_CONNECT_TIMEOUT, &timeout)) {
+ RETURN_FALSE;
+ }
+# endif
} break;
#endif
/* options with string value */