]> granicus.if.org Git - apache/commitdiff
don't allocate SSLConnRec unless ssl is enabled on this vhost.
authorDoug MacEachern <dougm@apache.org>
Sun, 10 Mar 2002 00:22:07 +0000 (00:22 +0000)
committerDoug MacEachern <dougm@apache.org>
Sun, 10 Mar 2002 00:22:07 +0000 (00:22 +0000)
also provides a shorter shortcut for mod_ssl hooks to decline if ssl
is not enabled.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93823 13f79535-47bb-0310-9956-ffa450edef68

modules/ssl/mod_ssl.c
modules/ssl/ssl_engine_kernel.c
modules/ssl/ssl_engine_vars.c

index 41da04098980fd06c0fa72b6ad85b1f6d4ab678f..13209b30f367d067093e1040b732a7947a4541d7 100644 (file)
@@ -224,13 +224,7 @@ static int ssl_hook_pre_connection(conn_rec *c, void *csd)
     SSLSrvConfigRec *sc = mySrvConfig(c->base_server);
     SSL *ssl;
     char *cpVHostMD5;
-    SSLConnRec *sslconn = apr_pcalloc(c->pool, sizeof(*sslconn));
-
-    /*
-     * Create SSL context
-     */
-    myConnConfigSet(c, sslconn);
-    sslconn->log_level = sc->nLogLevel;
+    SSLConnRec *sslconn;
 
     /*
      * Immediately stop processing if SSL is disabled for this connection
@@ -238,6 +232,13 @@ static int ssl_hook_pre_connection(conn_rec *c, void *csd)
     if (sc == NULL || !sc->bEnabled)
         return DECLINED;
 
+    /*
+     * Create SSL context
+     */
+    sslconn = apr_pcalloc(c->pool, sizeof(*sslconn));
+    myConnConfigSet(c, sslconn);
+    sslconn->log_level = sc->nLogLevel;
+
     /*
      * Remember the connection information for
      * later access inside callback functions
index 6bee5eaab7bd7b308a65bb7fde4012a9ebcb8481..f7cd981b2dcd134ec2cf74bba7b6aa09678d7406 100644 (file)
@@ -171,6 +171,10 @@ int ssl_hook_ReadReq(request_rec *r)
     SSLConnRec *sslconn = myConnConfig(r->connection);
     SSL *ssl;
 
+    if (!sslconn) {
+        return DECLINED;
+    }
+
     /*
      * Get the SSL connection structure and perform the
      * delayed interlinking from SSL back to request_rec
@@ -233,7 +237,7 @@ int ssl_hook_Translate(request_rec *r)
 {
     SSLConnRec *sslconn = myConnConfig(r->connection);
 
-    if (sslconn->ssl == NULL)
+    if (!sslconn || !sslconn->ssl)
         return DECLINED;
 
     /*
@@ -332,7 +336,7 @@ int ssl_hook_Access(request_rec *r)
     dc  = myDirConfig(r);
     sc  = mySrvConfig(r->server);
     sslconn = myConnConfig(r->connection);
-    ssl = sslconn->ssl;
+    ssl = sslconn ? sslconn->ssl : NULL;
     if (ssl != NULL)
         ctx = SSL_get_SSL_CTX(ssl);
 
index 17b5e82653d665c500ba22fd9b6a95f599f1b18a..1957f7061a3ce229c07ea10ebe111e115ee22463 100644 (file)
@@ -679,7 +679,7 @@ static const char *ssl_var_log_handler_x(request_rec *r, char *a)
     char *result;
 
     result = NULL;
-    if (sslconn->ssl != NULL)
+    if (sslconn && sslconn->ssl)
         result = ssl_var_lookup(r->pool, r->server, r->connection, r, a);
     if (result != NULL && result[0] == NUL)
         result = NULL;