From 6502a989fcf7768c21b342fd1eb662eed05b3614 Mon Sep 17 00:00:00 2001 From: nickfolino Date: Mon, 31 Jan 2022 13:16:49 -0500 Subject: [PATCH] Added 'refList' as a list containing all referrals returned from server. --- Modules/constants.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Modules/constants.c b/Modules/constants.c index 07d60653..54cc66dd 100644 --- a/Modules/constants.c +++ b/Modules/constants.c @@ -162,9 +162,18 @@ LDAPraise_for_message(LDAP *l, LDAPMessage *m) } if (errnum == LDAP_REFERRAL && refs != NULL && refs[0] != NULL) { + /* Return all referrals as a list in "reflist" */ + PyObject *referralList = PyList_New(0); + int i = 0; + while (refs[i] != NULL) { + PyObject *referralURL = Py_BuildValue("s", refs[i++]); + PyList_Append(referralList, referralURL); + Py_XDECREF(referralURL); + } + PyDict_SetItemString(info, "reflist", referralList); + Py_XDECREF(referralList); /* Keep old behaviour, overshadow error message */ char err[1024]; - snprintf(err, sizeof(err), "Referral:\n%s", refs[0]); str = PyUnicode_FromString(err); PyDict_SetItemString(info, "info", str);