From 8326d2be226547f816a46b583f6c17cdcd59f298 Mon Sep 17 00:00:00 2001
From: Howard Chu <hyc@openldap.org>
Date: Wed, 13 Dec 2006 16:24:09 +0000
Subject: [PATCH] ITS#4545 unchased referral fix from HEAD

---
 libraries/libldap/result.c | 22 +++++++++++++++++++++-
 1 file changed, 21 insertions(+), 1 deletion(-)

diff --git a/libraries/libldap/result.c b/libraries/libldap/result.c
index 4db51b83e3..03a2677fe9 100644
--- a/libraries/libldap/result.c
+++ b/libraries/libldap/result.c
@@ -566,7 +566,7 @@ nextresp2:
 								lr->lr_msgid, 0, 0);
 						}
 
-						/* We sucessfully chased the reference */
+						/* We successfully chased the reference */
 						v3ref = V3REF_SUCCESS;
 					}
 				}
@@ -648,6 +648,26 @@ nextresp2:
 					LDAP_FREE( lr->lr_res_error );
 					lr->lr_res_error = NULL;
 				}
+
+				/* Since it's not a SearchReference, it must be a
+				 * result. Since we're not chasing the referral,
+				 * this request is done.
+				 */
+				if ( v3ref == V3REF_TOAPP ) {
+					lr->lr_status = LDAP_REQST_COMPLETED;
+					Debug( LDAP_DEBUG_TRACE,
+						"request done: ld %p msgid %d, "
+						"referral returned to app\n",
+						(void *)ld, lr->lr_msgid, 0);
+#ifdef LDAP_R_COMPILE
+					ldap_pvt_thread_mutex_lock( &ld->ld_req_mutex );
+#endif
+					ldap_free_request( ld, lr );
+#ifdef LDAP_R_COMPILE
+					ldap_pvt_thread_mutex_unlock( &ld->ld_req_mutex );
+#endif
+					lr = NULL;
+				}
 			}
 		}
 	}
-- 
GitLab