--- Modules/options.c.orig Sun Mar 26 07:25:24 2006 +++ Modules/options.c Tue Aug 8 14:19:15 2006 @@ -80,6 +80,7 @@ case LDAP_OPT_X_TLS: case LDAP_OPT_X_TLS_REQUIRE_CERT: #ifdef HAVE_SASL + case LDAP_OPT_X_SASL_SSF_EXTERNAL: case LDAP_OPT_X_SASL_SSF_MIN: case LDAP_OPT_X_SASL_SSF_MAX: #endif @@ -99,6 +100,10 @@ case LDAP_OPT_X_TLS_CIPHER_SUITE: case LDAP_OPT_X_TLS_RANDOM_FILE: #ifdef HAVE_SASL + case LDAP_OPT_X_SASL_AUTHCID: + case LDAP_OPT_X_SASL_AUTHZID: + case LDAP_OPT_X_SASL_MECH: + case LDAP_OPT_X_SASL_REALM: case LDAP_OPT_X_SASL_SECPROPS: #endif /* String valued options */ @@ -226,7 +231,10 @@ case LDAP_OPT_X_TLS_CIPHER_SUITE: case LDAP_OPT_X_TLS_RANDOM_FILE: #ifdef HAVE_SASL - case LDAP_OPT_X_SASL_SECPROPS: + case LDAP_OPT_X_SASL_AUTHCID: + case LDAP_OPT_X_SASL_AUTHZID: + case LDAP_OPT_X_SASL_MECH: + case LDAP_OPT_X_SASL_REALM: #endif /* String-valued options */ if (self) LDAP_BEGIN_ALLOW_THREADS(self); @@ -234,7 +242,10 @@ if (self) LDAP_END_ALLOW_THREADS(self); if (res != LDAP_OPT_SUCCESS) return LDAPerr(res); - return PyString_FromString(strval); + if (strval != NULL) + return PyString_FromString(strval); + else + return Py_None; case LDAP_OPT_TIMEOUT: case LDAP_OPT_NETWORK_TIMEOUT: @@ -277,6 +288,14 @@ } return v; + +#ifdef HAVE_SASL + case LDAP_OPT_X_SASL_SSF_EXTERNAL: + case LDAP_OPT_X_SASL_SECPROPS: + /* Write-only options */ + PyErr_SetString(PyExc_ValueError, "write-only option"); + return Py_None; +#endif default: PyErr_SetObject(PyExc_ValueError, Py_None);