]> granicus.if.org Git - php/commitdiff
- Added LDAP_OPT_NETWORK_TIMEOUT option for ldap_set_option() to allow setting networ...
authorJani Taskinen <jani@php.net>
Sat, 6 Oct 2007 01:42:40 +0000 (01:42 +0000)
committerJani Taskinen <jani@php.net>
Sat, 6 Oct 2007 01:42:40 +0000 (01:42 +0000)
ext/ldap/ldap.c

index 00a3c3510a37a90f33a77bc5f0d2e057105add85..8440000be6549901e0a6a57d9adc81c6de1602cd 100644 (file)
@@ -258,6 +258,9 @@ PHP_MINIT_FUNCTION(ldap)
        REGISTER_LONG_CONSTANT("LDAP_OPT_DEREF", LDAP_OPT_DEREF, CONST_PERSISTENT | CONST_CS);
        REGISTER_LONG_CONSTANT("LDAP_OPT_SIZELIMIT", LDAP_OPT_SIZELIMIT, CONST_PERSISTENT | CONST_CS);
        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);
+#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);
        REGISTER_LONG_CONSTANT("LDAP_OPT_REFERRALS", LDAP_OPT_REFERRALS, CONST_PERSISTENT | CONST_CS);
@@ -1714,12 +1717,29 @@ PHP_FUNCTION(ldap_get_option)
 #endif
                {
                        int val;
+
                        if (ldap_get_option(ld->link, opt, &val)) {
                                RETURN_FALSE;
                        }
                        zval_dtor(*retval);
                        ZVAL_LONG(*retval, val);
                } break;
+#ifdef LDAP_OPT_NETWORK_TIMEOUT
+       case LDAP_OPT_NETWORK_TIMEOUT:
+               {
+                       struct timeval *timeout;
+                       
+                       if (ldap_get_option(ld->link, opt, (void *) &timeout)) {
+                               if (timeout) {
+                                       ldap_memfree(timeout);
+                               }
+                               RETURN_FALSE;
+                       }                       
+                       zval_dtor(*retval);
+                       ZVAL_LONG(*retval, timeout->tv_sec);
+                       ldap_memfree(timeout);
+               } break;
+#endif
        /* options with string value */
        case LDAP_OPT_ERROR_STRING:
 #ifdef LDAP_OPT_HOST_NAME
@@ -1795,12 +1815,26 @@ PHP_FUNCTION(ldap_set_option)
 #endif
                {
                        int val;
+
                        convert_to_long_ex(newval);
                        val = Z_LVAL_PP(newval);
                        if (ldap_set_option(ldap, opt, &val)) {
                                RETURN_FALSE;
                        }
                } break;
+#ifdef LDAP_OPT_NETWORK_TIMEOUT
+       case 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)) {
+                               RETURN_FALSE;
+                       }                       
+               } break;
+#endif
                /* options with string value */
        case LDAP_OPT_ERROR_STRING:
 #ifdef LDAP_OPT_HOST_NAME