mirror of
https://git.openldap.org/openldap/openldap.git
synced 2024-12-21 03:10:25 +08:00
allow multiple URIs (need to backport to back-ldap)
This commit is contained in:
parent
f894db3be2
commit
c432154ad1
@ -1042,9 +1042,13 @@ ldap_url_list2urls(
|
|||||||
/* figure out how big the string is */
|
/* figure out how big the string is */
|
||||||
size = 1; /* nul-term */
|
size = 1; /* nul-term */
|
||||||
for (ludp = ludlist; ludp != NULL; ludp = ludp->lud_next) {
|
for (ludp = ludlist; ludp != NULL; ludp = ludp->lud_next) {
|
||||||
size += strlen(ludp->lud_scheme) + strlen(ludp->lud_host);
|
size += strlen(ludp->lud_scheme);
|
||||||
if (strchr(ludp->lud_host, ':')) /* will add [ ] below */
|
if ( ludp->lud_host ) {
|
||||||
|
size += strlen(ludp->lud_host);
|
||||||
|
/* will add [ ] below */
|
||||||
|
if (strchr(ludp->lud_host, ':'))
|
||||||
size += 2;
|
size += 2;
|
||||||
|
}
|
||||||
size += sizeof(":/// ");
|
size += sizeof(":/// ");
|
||||||
|
|
||||||
if (ludp->lud_port != 0) {
|
if (ludp->lud_port != 0) {
|
||||||
@ -1059,9 +1063,11 @@ ldap_url_list2urls(
|
|||||||
|
|
||||||
p = s;
|
p = s;
|
||||||
for (ludp = ludlist; ludp != NULL; ludp = ludp->lud_next) {
|
for (ludp = ludlist; ludp != NULL; ludp = ludp->lud_next) {
|
||||||
p += sprintf(p,
|
p += sprintf(p, "%s://", ludp->lud_scheme);
|
||||||
strchr(ludp->lud_host, ':') ? "%s://[%s]" : "%s://%s",
|
if ( ludp->lud_host ) {
|
||||||
ludp->lud_scheme, ludp->lud_host);
|
p += sprintf(p, strchr(ludp->lud_host, ':')
|
||||||
|
? "[%s]" : "%s", ludp->lud_host);
|
||||||
|
}
|
||||||
if (ludp->lud_port != 0)
|
if (ludp->lud_port != 0)
|
||||||
p += sprintf(p, ":%d", ludp->lud_port);
|
p += sprintf(p, ":%d", ludp->lud_port);
|
||||||
*p++ = '/';
|
*p++ = '/';
|
||||||
|
@ -73,6 +73,7 @@
|
|||||||
|
|
||||||
#include "slap.h"
|
#include "slap.h"
|
||||||
#include "../back-ldap/back-ldap.h"
|
#include "../back-ldap/back-ldap.h"
|
||||||
|
#include "../../../libraries/libldap/ldap-int.h"
|
||||||
#include "back-meta.h"
|
#include "back-meta.h"
|
||||||
|
|
||||||
static struct metatarget *
|
static struct metatarget *
|
||||||
@ -121,8 +122,7 @@ meta_back_db_config(
|
|||||||
#if 0
|
#if 0
|
||||||
int j;
|
int j;
|
||||||
#endif /* uncomment if uri MUST be a branch of suffix */
|
#endif /* uncomment if uri MUST be a branch of suffix */
|
||||||
LDAPURLDesc *ludp;
|
LDAPURLDesc *ludp, *tmpludp;
|
||||||
char *last;
|
|
||||||
struct berval dn;
|
struct berval dn;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
@ -157,7 +157,7 @@ meta_back_db_config(
|
|||||||
/*
|
/*
|
||||||
* uri MUST be legal!
|
* uri MUST be legal!
|
||||||
*/
|
*/
|
||||||
if ( ldap_url_parse( argv[ 1 ], &ludp ) != LDAP_SUCCESS ) {
|
if ( ldap_url_parselist( &ludp, argv[ 1 ] ) != LDAP_SUCCESS ) {
|
||||||
fprintf( stderr,
|
fprintf( stderr,
|
||||||
"%s: line %d: unable to parse URI"
|
"%s: line %d: unable to parse URI"
|
||||||
" in \"uri <protocol>://<server>[:port]/<naming context>\" line\n",
|
" in \"uri <protocol>://<server>[:port]/<naming context>\" line\n",
|
||||||
@ -191,10 +191,25 @@ meta_back_db_config(
|
|||||||
return( 1 );
|
return( 1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
li->targets[ i ]->uri = ch_strdup( argv[ 1 ] );
|
ludp->lud_dn[ 0 ] = '\0';
|
||||||
last = strstr( li->targets[ i ]->uri, ludp->lud_dn );
|
|
||||||
assert( last != NULL );
|
for ( tmpludp = ludp->lud_next; tmpludp; tmpludp = tmpludp->lud_next ) {
|
||||||
last[ 0 ] = '\0';
|
if ( tmpludp->lud_dn != NULL && tmpludp->lud_dn[ 0 ] != '\0' ) {
|
||||||
|
fprintf( stderr, "%s: line %d: "
|
||||||
|
"multiple URIs must have no DN part\n",
|
||||||
|
fname, lineno, argv[ 1 ] );
|
||||||
|
return( 1 );
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
li->targets[ i ]->uri = ldap_url_list2urls( ludp );
|
||||||
|
ldap_free_urllist( ludp );
|
||||||
|
if ( li->targets[ i ]->uri == NULL) {
|
||||||
|
fprintf( stderr, "%s: line %d: no memory?\n",
|
||||||
|
fname, lineno );
|
||||||
|
return( 1 );
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* uri MUST be a branch of suffix!
|
* uri MUST be a branch of suffix!
|
||||||
@ -239,8 +254,6 @@ meta_back_db_config(
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ldap_free_urldesc( ludp );
|
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
fprintf(stderr, "%s: line %d: URI \"%s\", suffix \"%s\"\n",
|
fprintf(stderr, "%s: line %d: URI \"%s\", suffix \"%s\"\n",
|
||||||
fname, lineno, li->targets[ i ]->uri,
|
fname, lineno, li->targets[ i ]->uri,
|
||||||
|
Loading…
Reference in New Issue
Block a user