[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
RE: error text in search results
Better yet:
> > By examining the provided text to see if it starts with "Referral:".
> >
> > See http://www.umich.edu/~dirsvcs/ldap/doc/other/ldap-ref.html
>
> Try this one...
diff -u -r1.63 result.c
--- result.c 1999/10/21 15:53:57 1.63
+++ result.c 1999/10/25 01:10:05
@@ -18,15 +18,25 @@
/* we need LBER internals */
#include "../../libraries/liblber/lber-int.h"
-static char *v2ref( struct berval **ref )
+static char *v2ref( struct berval **ref, const char *text )
{
- size_t len, i;
+ size_t len = 0, i = 0;
char *v2;
- if(ref == NULL) return NULL;
+ if(ref == NULL) return text;
- len = sizeof("Referral:");
- v2 = ch_strdup("Referral:");
+ if (text) {
+ len = strlen( text );
+ if (text[len-1] != '\n')
+ i = 1;
+ }
+ v2 = ch_malloc( len+i+sizeof("Referral:") );
+ if (text) {
+ strcpy(v2, text);
+ if (i)
+ v2[len++] = '\n';
+ }
+ strcpy( v2+len, "Referral:" );
for( i=0; ref[i] != NULL; i++ ) {
v2 = ch_realloc( v2, len + ref[i]->bv_len + 1 );
@@ -384,12 +394,15 @@
err = LDAP_NO_SUCH_OBJECT;
} else if ( op->o_protocol < LDAP_VERSION3 ) {
err = LDAP_PARTIAL_RESULTS;
- tmp = v2ref( ref );
- text = tmp;
- ref = NULL;
}
}
+ if ( op->o_protocol < LDAP_VERSION3 ) {
+ tmp = v2ref( ref, text );
+ text = tmp;
+ ref = NULL;
+ }
+
tag = req2res( op->o_tag );
msgid = (tag != LBER_SEQUENCE) ? op->o_msgid : 0;
@@ -449,10 +462,9 @@
err = LDAP_PARTIAL_RESULTS;
}
- tmp = v2ref( refs );
+ tmp = v2ref( refs, text );
text = tmp;
refs = NULL;
-
} else {
/* don't send references in search results */
assert( refs == NULL );