327 static PyObject*
328 l_ldap_unbind_ext( LDAPObject* self, PyObject* args )
329 {
330 PyObject *serverctrls = Py_None;
331 PyObject *clientctrls = Py_None;
332 LDAPControl** server_ldcs = NULL;
333 LDAPControl** client_ldcs = NULL;
334
335 int ldaperror;
336
337 if (!PyArg_ParseTuple( args, "|OO", &serverctrls, &clientctrls)) return NULL;
when _PyArg_ParseTuple_SizeT() succeeds
taking False path
338 if (not_valid(self)) return NULL;
when considering range: -0x80000000 <= value <= -1
taking True path
339
340 if (!PyNone_Check(serverctrls)) {
341 if (!LDAPControls_from_object(serverctrls, &server_ldcs))
342 return NULL;
343 }
344
345 if (!PyNone_Check(clientctrls)) {
346 if (!LDAPControls_from_object(clientctrls, &client_ldcs))
347 return NULL;
348 }
349
350 LDAP_BEGIN_ALLOW_THREADS( self );
351 ldaperror = ldap_unbind_ext( self->ldap, server_ldcs, client_ldcs );
352 LDAP_END_ALLOW_THREADS( self );
353
354 LDAPControl_List_DEL( server_ldcs );
355 LDAPControl_List_DEL( client_ldcs );
356
357 if ( ldaperror!=LDAP_SUCCESS )
358 return LDAPerror( self->ldap, "ldap_unbind_ext" );
359
360 self->valid = 0;
361 Py_INCREF(Py_None);
362 return Py_None;
363 }
returning (PyObject*)NULL without setting an exception
found 4 similar trace(s) to this