summaryrefslogtreecommitdiff
path: root/net/py-ldap2/files/patch-message.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/py-ldap2/files/patch-message.c')
-rw-r--r--net/py-ldap2/files/patch-message.c43
1 files changed, 43 insertions, 0 deletions
diff --git a/net/py-ldap2/files/patch-message.c b/net/py-ldap2/files/patch-message.c
new file mode 100644
index 000000000000..1b7111a84ae2
--- /dev/null
+++ b/net/py-ldap2/files/patch-message.c
@@ -0,0 +1,43 @@
+--- Modules/message.c.orig Wed Nov 15 10:41:35 2000
++++ Modules/message.c Wed Nov 15 16:51:18 2000
+@@ -114,6 +114,40 @@
+ PyList_Append(result, entrytuple);
+ Py_DECREF(entrytuple);
+ }
++#if defined(LDAP_API_VERSION)
++ for(entry = ldap_first_reference(ld,m);
++ entry != NULL;
++ entry = ldap_next_reference(ld,entry))
++ {
++ char **refs = NULL;
++ PyObject* entrytuple;
++ PyObject* reflist = PyList_New(0);
++
++ if (reflist == NULL) {
++ Py_DECREF(result);
++ ldap_msgfree( m );
++ return NULL;
++ }
++ if (ldap_parse_reference(ld, entry, &refs, NULL, 0) != LDAP_SUCCESS) {
++ Py_DECREF(result);
++ ldap_msgfree( m );
++ return LDAPerror( ld, "ldap_parse_reference" );
++ }
++ if (refs) {
++ int i;
++ for (i=0; refs[i] != NULL; i++) {
++ PyObject *refstr = PyString_FromString(refs[i]);
++ PyList_Append(reflist, refstr);
++ Py_DECREF(refstr);
++ }
++ ber_memvfree( (void **) refs );
++ }
++ entrytuple = Py_BuildValue("(sO)", NULL, reflist);
++ Py_DECREF(reflist);
++ PyList_Append(result, entrytuple);
++ Py_DECREF(entrytuple);
++ }
++#endif
+ ldap_msgfree( m );
+ return result;
+ }