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");
+