mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-01-06 10:46:21 +08:00
document missing feature; avoid the risk of returning argv in an inconsistent state when an error occurs
This commit is contained in:
parent
aa681f980d
commit
27e5fabb8b
@ -78,6 +78,21 @@ used by the \fBproxytemplate\fP directive to define cacheable templates.
|
||||
Specifies a cacheable template and "time to live" (in sec) <ttl> of queries
|
||||
belonging to the template.
|
||||
|
||||
.TP
|
||||
.B response-callback { head | tail }
|
||||
Specifies whether the response callback should be placed at the
|
||||
.B tail
|
||||
(the default) or at the
|
||||
.B head
|
||||
(actually, wherever the stacking sequence would make it appear)
|
||||
of the callback list. This affects how the overlay interacts with other
|
||||
overlays, since the proxycache overlay should be executed as early
|
||||
as possible (and thus configured as late as possible), to get
|
||||
a chance to return the cached results; however, if executed early
|
||||
at response, it would cache entries that may be later "massaged"
|
||||
by other databases and thus returned \fIafter\fP massaging the first
|
||||
time, and \fIbefore\fP massaging when cached.
|
||||
|
||||
.LP
|
||||
The following adds a template with filter string \fB((&sn=)(givenName=))\fP
|
||||
and attributes mail, postaladdress, telephonenumber and a TTL of 1 hour.
|
||||
|
@ -1499,18 +1499,19 @@ proxy_cache_config(
|
||||
AttributeName* attr_name;
|
||||
AttributeName* attrarray;
|
||||
const char* text=NULL;
|
||||
char *save_argv0 = NULL;
|
||||
char *argv0 = NULL;
|
||||
|
||||
int index, i;
|
||||
int num;
|
||||
int rc = 0;
|
||||
|
||||
if ( strncasecmp( argv[0], "proxycache-", STRLENOF( "proxycache-" ) ) == 0 ) {
|
||||
save_argv0 = argv[0];
|
||||
argv[0] += STRLENOF( "proxycache-" );
|
||||
argv0 = argv[0] + STRLENOF( "proxycache-" );
|
||||
} else {
|
||||
argv0 = argv[0];
|
||||
}
|
||||
|
||||
if ( strcasecmp( argv[0], "proxycache" ) == 0 ) {
|
||||
if ( strcasecmp( argv0, "proxycache" ) == 0 ) {
|
||||
if ( argc < 6 ) {
|
||||
fprintf( stderr, "%s: line %d: missing arguments in \"proxycache"
|
||||
" <backend> <max_entries> <numattrsets> <entry limit> "
|
||||
@ -1549,7 +1550,7 @@ proxy_cache_config(
|
||||
qm->attr_sets[i].attrs = NULL;
|
||||
}
|
||||
|
||||
} else if ( strcasecmp( argv[0], "proxyattrset" ) == 0 ) {
|
||||
} else if ( strcasecmp( argv0, "proxyattrset" ) == 0 ) {
|
||||
if ( argc < 3 ) {
|
||||
fprintf( stderr, "%s: line %d: missing arguments in \"proxyattrset "
|
||||
"<index> <attributes>\"\n", fname, lineno );
|
||||
@ -1581,7 +1582,7 @@ proxy_cache_config(
|
||||
attr_name->an_name.bv_len = 0;
|
||||
}
|
||||
}
|
||||
} else if ( strcasecmp( argv[0], "proxytemplate" ) == 0 ) {
|
||||
} else if ( strcasecmp( argv0, "proxytemplate" ) == 0 ) {
|
||||
if ( argc != 4 ) {
|
||||
fprintf( stderr, "%s: line %d: missing argument(s) in "
|
||||
"\"proxytemplate <filter> <proj attr set> <TTL>\" line\n",
|
||||
@ -1625,7 +1626,7 @@ proxy_cache_config(
|
||||
temp->querystr.bv_val = NULL;
|
||||
cm->numtemplates++;
|
||||
|
||||
} else if ( strcasecmp( argv[0], "response-callback" ) == 0 ) {
|
||||
} else if ( strcasecmp( argv0, "response-callback" ) == 0 ) {
|
||||
/* set to "tail" to put the response callback
|
||||
* at the end of the callback list; this is required
|
||||
* in case other overlays are present, so that the
|
||||
@ -1653,13 +1654,12 @@ proxy_cache_config(
|
||||
}
|
||||
/* anything else */
|
||||
else {
|
||||
if ( argv0 != argv[0] ) {
|
||||
return SLAP_CONF_UNKNOWN;
|
||||
}
|
||||
rc = cm->db.bd_info->bi_db_config( &cm->db, fname, lineno, argc, argv );
|
||||
}
|
||||
|
||||
if ( save_argv0 ) {
|
||||
argv[0] = save_argv0;
|
||||
}
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user