mirror of
https://github.com/apache/httpd.git
synced 2025-11-08 04:22:21 +03:00
Per Greg's request, add a version string component to the ap_provider.h
functions. This allows modules to register different versions of the same provider. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@97696 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
4
CHANGES
4
CHANGES
@@ -2,11 +2,11 @@ Changes with Apache 2.1.0-dev
|
|||||||
|
|
||||||
[Remove entries to the current 2.0 section below, when backported]
|
[Remove entries to the current 2.0 section below, when backported]
|
||||||
|
|
||||||
|
*) Add version string to provider API. [Justin Erenkrantz]
|
||||||
|
|
||||||
*) Rewrite of aaa modules to an authn/authz model.
|
*) Rewrite of aaa modules to an authn/authz model.
|
||||||
[Dirk-Willem van Gulik, Justin Erenkrantz]
|
[Dirk-Willem van Gulik, Justin Erenkrantz]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Changes with Apache 2.0.44
|
Changes with Apache 2.0.44
|
||||||
|
|
||||||
*) build: './configure && make' now works without an in-tree
|
*) build: './configure && make' now works without an in-tree
|
||||||
|
|||||||
@@ -67,12 +67,14 @@
|
|||||||
* @param pool The pool to create any storage from
|
* @param pool The pool to create any storage from
|
||||||
* @param provider_group The group to store the provider in
|
* @param provider_group The group to store the provider in
|
||||||
* @param provider_name The name for this provider
|
* @param provider_name The name for this provider
|
||||||
|
* @param provider_version The version for this provider
|
||||||
* @param provider Opaque structure for this provider
|
* @param provider Opaque structure for this provider
|
||||||
* @return APR_SUCCESS if all went well
|
* @return APR_SUCCESS if all went well
|
||||||
*/
|
*/
|
||||||
AP_DECLARE(apr_status_t) ap_register_provider(apr_pool_t *pool,
|
AP_DECLARE(apr_status_t) ap_register_provider(apr_pool_t *pool,
|
||||||
const char *provider_group,
|
const char *provider_group,
|
||||||
const char *provider_name,
|
const char *provider_name,
|
||||||
|
const char *provider_version,
|
||||||
const void *provider);
|
const void *provider);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -80,9 +82,11 @@ AP_DECLARE(apr_status_t) ap_register_provider(apr_pool_t *pool,
|
|||||||
* provider pool.
|
* provider pool.
|
||||||
* @param provider_group The group to look for this provider in
|
* @param provider_group The group to look for this provider in
|
||||||
* @param provider_name The name for the provider
|
* @param provider_name The name for the provider
|
||||||
|
* @param provider_version The version for the provider
|
||||||
* @return provider pointer to provider if found, NULL otherwise
|
* @return provider pointer to provider if found, NULL otherwise
|
||||||
*/
|
*/
|
||||||
AP_DECLARE(void *) ap_lookup_provider(const char *provider_group,
|
AP_DECLARE(void *) ap_lookup_provider(const char *provider_group,
|
||||||
const char *provider_name);
|
const char *provider_name,
|
||||||
|
const char *provider_version);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -115,7 +115,7 @@ static const char *add_authn_provider(cmd_parms *cmd, void *config,
|
|||||||
|
|
||||||
/* lookup and cache the actual provider now */
|
/* lookup and cache the actual provider now */
|
||||||
newp->provider = ap_lookup_provider(AUTHN_PROVIDER_GROUP,
|
newp->provider = ap_lookup_provider(AUTHN_PROVIDER_GROUP,
|
||||||
newp->provider_name);
|
newp->provider_name, "0");
|
||||||
|
|
||||||
if (newp->provider == NULL) {
|
if (newp->provider == NULL) {
|
||||||
/* by the time they use it, the provider should be loaded and
|
/* by the time they use it, the provider should be loaded and
|
||||||
@@ -256,7 +256,7 @@ static int authenticate_basic_user(request_rec *r)
|
|||||||
*/
|
*/
|
||||||
if (!current_provider) {
|
if (!current_provider) {
|
||||||
provider = ap_lookup_provider(AUTHN_PROVIDER_GROUP,
|
provider = ap_lookup_provider(AUTHN_PROVIDER_GROUP,
|
||||||
AUTHN_DEFAULT_PROVIDER);
|
AUTHN_DEFAULT_PROVIDER, "0");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
provider = current_provider->provider;
|
provider = current_provider->provider;
|
||||||
|
|||||||
@@ -506,7 +506,7 @@ static const char *add_authn_provider(cmd_parms *cmd, void *config,
|
|||||||
|
|
||||||
/* lookup and cache the actual provider now */
|
/* lookup and cache the actual provider now */
|
||||||
newp->provider = ap_lookup_provider(AUTHN_PROVIDER_GROUP,
|
newp->provider = ap_lookup_provider(AUTHN_PROVIDER_GROUP,
|
||||||
newp->provider_name);
|
newp->provider_name, "0");
|
||||||
|
|
||||||
if (newp->provider == NULL) {
|
if (newp->provider == NULL) {
|
||||||
/* by the time they use it, the provider should be loaded and
|
/* by the time they use it, the provider should be loaded and
|
||||||
@@ -1476,7 +1476,7 @@ static const char *get_hash(request_rec *r, const char *user,
|
|||||||
*/
|
*/
|
||||||
if (!current_provider) {
|
if (!current_provider) {
|
||||||
provider = ap_lookup_provider(AUTHN_PROVIDER_GROUP,
|
provider = ap_lookup_provider(AUTHN_PROVIDER_GROUP,
|
||||||
AUTHN_DEFAULT_PROVIDER);
|
AUTHN_DEFAULT_PROVIDER, "0");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
provider = current_provider->provider;
|
provider = current_provider->provider;
|
||||||
|
|||||||
@@ -191,7 +191,8 @@ static const authn_provider authn_dbm_provider =
|
|||||||
|
|
||||||
static void register_hooks(apr_pool_t *p)
|
static void register_hooks(apr_pool_t *p)
|
||||||
{
|
{
|
||||||
ap_register_provider(p, AUTHN_PROVIDER_GROUP, "dbm", &authn_dbm_provider);
|
ap_register_provider(p, AUTHN_PROVIDER_GROUP, "dbm", "0",
|
||||||
|
&authn_dbm_provider);
|
||||||
}
|
}
|
||||||
|
|
||||||
module AP_MODULE_DECLARE_DATA authn_dbm_module =
|
module AP_MODULE_DECLARE_DATA authn_dbm_module =
|
||||||
|
|||||||
@@ -219,7 +219,8 @@ static const authn_provider authn_file_provider =
|
|||||||
|
|
||||||
static void register_hooks(apr_pool_t *p)
|
static void register_hooks(apr_pool_t *p)
|
||||||
{
|
{
|
||||||
ap_register_provider(p, AUTHN_PROVIDER_GROUP, "file", &authn_file_provider);
|
ap_register_provider(p, AUTHN_PROVIDER_GROUP, "file", "0",
|
||||||
|
&authn_file_provider);
|
||||||
}
|
}
|
||||||
|
|
||||||
module AP_MODULE_DECLARE_DATA authn_file_module =
|
module AP_MODULE_DECLARE_DATA authn_file_module =
|
||||||
|
|||||||
@@ -62,10 +62,10 @@
|
|||||||
DAV_DECLARE(void) dav_register_provider(apr_pool_t *p, const char *name,
|
DAV_DECLARE(void) dav_register_provider(apr_pool_t *p, const char *name,
|
||||||
const dav_provider *provider)
|
const dav_provider *provider)
|
||||||
{
|
{
|
||||||
ap_register_provider(p, DAV_PROVIDER_GROUP, name, provider);
|
ap_register_provider(p, DAV_PROVIDER_GROUP, name, "0", provider);
|
||||||
}
|
}
|
||||||
|
|
||||||
const dav_provider * dav_lookup_provider(const char *name)
|
const dav_provider * dav_lookup_provider(const char *name)
|
||||||
{
|
{
|
||||||
return ap_lookup_provider(DAV_PROVIDER_GROUP, name);
|
return ap_lookup_provider(DAV_PROVIDER_GROUP, name, "0");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -69,9 +69,11 @@ static apr_status_t cleanup_global_providers(void *ctx)
|
|||||||
AP_DECLARE(apr_status_t) ap_register_provider(apr_pool_t *pool,
|
AP_DECLARE(apr_status_t) ap_register_provider(apr_pool_t *pool,
|
||||||
const char *provider_group,
|
const char *provider_group,
|
||||||
const char *provider_name,
|
const char *provider_name,
|
||||||
|
const char *provider_version,
|
||||||
const void *provider)
|
const void *provider)
|
||||||
{
|
{
|
||||||
apr_hash_t *provider_group_hash;
|
apr_hash_t *provider_group_hash;
|
||||||
|
apr_hash_t *provider_version_hash;
|
||||||
|
|
||||||
if (global_providers == NULL) {
|
if (global_providers == NULL) {
|
||||||
global_providers = apr_hash_make(pool);
|
global_providers = apr_hash_make(pool);
|
||||||
@@ -89,17 +91,28 @@ AP_DECLARE(apr_status_t) ap_register_provider(apr_pool_t *pool,
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
provider_version_hash = apr_hash_get(provider_group_hash, provider_name,
|
||||||
|
APR_HASH_KEY_STRING);
|
||||||
|
|
||||||
|
if (!provider_version_hash) {
|
||||||
|
provider_version_hash = apr_hash_make(pool);
|
||||||
|
apr_hash_set(provider_group_hash, provider_name, APR_HASH_KEY_STRING,
|
||||||
|
provider_version_hash);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/* just set it. no biggy if it was there before. */
|
/* just set it. no biggy if it was there before. */
|
||||||
apr_hash_set(provider_group_hash, provider_name, APR_HASH_KEY_STRING,
|
apr_hash_set(provider_version_hash, provider_version, APR_HASH_KEY_STRING,
|
||||||
provider);
|
provider);
|
||||||
|
|
||||||
return APR_SUCCESS;
|
return APR_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
AP_DECLARE(void *) ap_lookup_provider(const char *provider_group,
|
AP_DECLARE(void *) ap_lookup_provider(const char *provider_group,
|
||||||
const char *provider_name)
|
const char *provider_name,
|
||||||
|
const char *provider_version)
|
||||||
{
|
{
|
||||||
apr_hash_t *provider_group_hash;
|
apr_hash_t *provider_group_hash, *provider_name_hash;
|
||||||
|
|
||||||
if (global_providers == NULL) {
|
if (global_providers == NULL) {
|
||||||
return NULL;
|
return NULL;
|
||||||
@@ -112,6 +125,13 @@ AP_DECLARE(void *) ap_lookup_provider(const char *provider_group,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
return apr_hash_get(provider_group_hash, provider_name,
|
provider_name_hash = apr_hash_get(provider_group_hash, provider_name,
|
||||||
|
APR_HASH_KEY_STRING);
|
||||||
|
|
||||||
|
if (provider_name_hash == NULL) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return apr_hash_get(provider_name_hash, provider_version,
|
||||||
APR_HASH_KEY_STRING);
|
APR_HASH_KEY_STRING);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user