1266 static PyObject *
1267 l_ldap_extended_operation( LDAPObject* self, PyObject *args )
1268 {
1269 char *reqoid = NULL;
1270 struct berval reqvalue = {0, NULL};
1271 PyObject *serverctrls = Py_None;
1272 PyObject *clientctrls = Py_None;
1273 LDAPControl** server_ldcs = NULL;
1274 LDAPControl** client_ldcs = NULL;
1275
1276 int msgid;
1277 int ldaperror;
1278
1279 if (!PyArg_ParseTuple( args, "sz#|OO", &reqoid, &reqvalue.bv_val, &reqvalue.bv_len, &serverctrls, &clientctrls ))
when _PyArg_ParseTuple_SizeT() succeeds
taking False path
1280 return NULL;
1281
1282 if (not_valid(self)) return NULL;
when considering value == (int)0 from Modules/LDAPObject.c:1282
taking False path
1283
1284 if (!PyNone_Check(serverctrls)) {
taking True path
1285 if (!LDAPControls_from_object(serverctrls, &server_ldcs))
when considering range: -0x80000000 <= value <= -1
taking False path
1286 return NULL;
1287 }
1288
1289 if (!PyNone_Check(clientctrls)) {
taking True path
1290 if (!LDAPControls_from_object(clientctrls, &client_ldcs))
when considering value == (int)0 from Modules/LDAPObject.c:1290
taking True path
1291 return NULL;
1292 }
1293
1294 LDAP_BEGIN_ALLOW_THREADS( self );
1295 ldaperror = ldap_extended_operation( self->ldap, reqoid,
1296 reqvalue.bv_val != NULL ? &reqvalue : NULL,
1297 server_ldcs,
1298 client_ldcs,
1299 &msgid );
1300 LDAP_END_ALLOW_THREADS( self );
1301
1302 LDAPControl_List_DEL( server_ldcs );
1303 LDAPControl_List_DEL( client_ldcs );
1304
1305 if ( ldaperror!=LDAP_SUCCESS )
1306 return LDAPerror( self->ldap, "ldap_extended_operation" );
1307
1308 return PyInt_FromLong( msgid );
1309 }
returning (PyObject*)NULL without setting an exception
found 2 similar trace(s) to this