Author: jorton Date: Tue Feb 15 04:41:36 2005 New Revision: 153934 URL: http://svn.apache.org/viewcvs?view=rev&rev=153934 Log: Add test for ssl_ext_lookup optional function.
Added: httpd/test/trunk/perl-framework/t/ssl/extlookup.t Modified: httpd/test/trunk/perl-framework/c-modules/test_ssl/mod_test_ssl.c Modified: httpd/test/trunk/perl-framework/c-modules/test_ssl/mod_test_ssl.c URL: http://svn.apache.org/viewcvs/httpd/test/trunk/perl-framework/c-modules/test_ssl/mod_test_ssl.c?view=diff&r1=153933&r2=153934 ============================================================================== --- httpd/test/trunk/perl-framework/c-modules/test_ssl/mod_test_ssl.c (original) +++ httpd/test/trunk/perl-framework/c-modules/test_ssl/mod_test_ssl.c Tue Feb 15 04:41:36 2005 @@ -8,6 +8,12 @@ SSLVerifyClient require SSLVerifyDepth 10 </Location> + + <Location /test_ssl_ext_lookup> + SetHandler test-ssl-ext-lookup + SSLVerifyClient require + SSLVerifyDepth 10 + </Location> </IfModule> #endif @@ -19,15 +25,17 @@ #include "ap_config.h" #include "apr_optional.h" -#if 0 -/* if you have ssl installed, just need to include this file */ +#if AP_MODULE_MAGIC_AT_LEAST(20040425, 0) /* simply include mod_ssl.h if using >= 2.1.0 */ + #include "mod_ssl.h" -#else +#if AP_MODULE_MAGIC_AT_LEAST(20050127, 0) /* approx. when ssl_ext_lookup was added */ +#define HAVE_SSL_EXT_LOOKUP +static APR_OPTIONAL_FN_TYPE(ssl_ext_lookup) *ext_lookup; +#endif -/* but for testing purposes, we'll hardcode the required stuff - * that mod_ssl.h normally would - */ +#else +/* For use of < 2.0.x, inline the declaration: */ APR_DECLARE_OPTIONAL_FN(char *, ssl_var_lookup, (apr_pool_t *, server_rec *, @@ -41,8 +49,42 @@ static void import_ssl_var_lookup(void) { var_lookup = APR_RETRIEVE_OPTIONAL_FN(ssl_var_lookup); +#ifdef HAVE_SSL_EXT_LOOKUP + ext_lookup = APR_RETRIEVE_OPTIONAL_FN(ssl_ext_lookup); +#endif +} + +#ifdef HAVE_SSL_EXT_LOOKUP +static int test_ssl_ext_lookup(request_rec *r) +{ + const char *value; + + if (strcmp(r->handler, "test-ssl-ext-lookup") + || r->method_number != M_GET) { + return DECLINED; + } + + if (!r->args) { + ap_rputs("no query", r); + return OK; + } + + if (!ext_lookup) { + ap_rputs("ssl_ext_lookup not available", r); + return OK; + } + + value = ext_lookup(r->pool, r->connection, 1, r->args); + + if (!value) value = "NULL"; + + ap_rputs(value, r); + + return OK; } +#endif + static int test_ssl_var_lookup(request_rec *r) { char *value; @@ -83,6 +125,9 @@ static void test_ssl_register_hooks(apr_pool_t *p) { ap_hook_handler(test_ssl_var_lookup, NULL, NULL, APR_HOOK_MIDDLE); +#ifdef HAVE_SSL_EXT_LOOKUP + ap_hook_handler(test_ssl_ext_lookup, NULL, NULL, APR_HOOK_MIDDLE); +#endif ap_hook_optional_fn_retrieve(import_ssl_var_lookup, NULL, NULL, APR_HOOK_MIDDLE); } Added: httpd/test/trunk/perl-framework/t/ssl/extlookup.t URL: http://svn.apache.org/viewcvs/httpd/test/trunk/perl-framework/t/ssl/extlookup.t?view=auto&rev=153934 ============================================================================== --- httpd/test/trunk/perl-framework/t/ssl/extlookup.t (added) +++ httpd/test/trunk/perl-framework/t/ssl/extlookup.t Tue Feb 15 04:41:36 2005 @@ -0,0 +1,23 @@ +use strict; +use warnings FATAL => 'all'; + +use Apache::Test; +use Apache::TestRequest; +use Apache::TestUtil; + +plan tests => 2, need_module 'test_ssl', need_min_apache_version(2.1); + +Apache::TestRequest::scheme("https"); + +my $oid = "2.16.840.1.113730.1.13"; # Netscape certificate comment + +my $r = GET("/test_ssl_ext_lookup?$oid", cert => 'client_ok'); + +ok t_cmp($r->code, 200, "ssl_ext_lookup works"); + +my $c = $r->content; + +chomp $c; + +ok t_cmp($c, "This Is A Comment", "Retrieve nsComment extension"); +