- case LDAP_OPT_TIMEOUT: {
- const struct timeval *tv =
- (const struct timeval *) invalue;
-
- if ( lo->ldo_tm_api != NULL ) {
- LDAP_FREE( lo->ldo_tm_api );
- lo->ldo_tm_api = NULL;
- }
-
- if ( ldap_int_timeval_dup( &lo->ldo_tm_api, tv ) != 0 ) {
- return LDAP_OPT_ERROR;
- }
- } return LDAP_OPT_SUCCESS;
-
- case LDAP_OPT_NETWORK_TIMEOUT: {
- const struct timeval *tv =
- (const struct timeval *) invalue;
-
- if ( lo->ldo_tm_net != NULL ) {
- LDAP_FREE( lo->ldo_tm_net );
- lo->ldo_tm_net = NULL;
- }
-
- if ( ldap_int_timeval_dup( &lo->ldo_tm_net, tv ) != 0 ) {
- return LDAP_OPT_ERROR;
- }
- } return LDAP_OPT_SUCCESS;
-
- /* Only accessed from inside this function by ldap_set_rebind_proc() */
- case LDAP_OPT_REBIND_PROC: {
- lo->ldo_rebindproc = (LDAP_REBIND_PROC *)invalue;
- } return LDAP_OPT_SUCCESS;
- }
-
- if(invalue == NULL) {
- /* no place to set from */
- return LDAP_OPT_ERROR;
- }
-
- /* options which cannot withstand invalue == NULL */
-
- switch(option) {
- case LDAP_OPT_API_INFO:
- case LDAP_OPT_DESC:
- /* READ ONLY */
- break;
-
- case LDAP_OPT_DEREF:
- lo->ldo_deref = * (const int *) invalue;
- return LDAP_OPT_SUCCESS;
-
- case LDAP_OPT_SIZELIMIT:
- lo->ldo_sizelimit = * (const int *) invalue;
- return LDAP_OPT_SUCCESS;
-
- case LDAP_OPT_TIMELIMIT:
- lo->ldo_timelimit = * (const int *) invalue;
- return LDAP_OPT_SUCCESS;
-
- case LDAP_OPT_PROTOCOL_VERSION: {
- int vers = * (const int *) invalue;
- if (vers < LDAP_VERSION_MIN || vers > LDAP_VERSION_MAX) {
- /* not supported */
- break;
- }
- lo->ldo_version = vers;
- } return LDAP_OPT_SUCCESS;
-