Commit a1d62b1e authored by Doug MacEachern's avatar Doug MacEachern
Browse files

fold duplication of SSL{Proxy}Protocol directives into

ssl_cmd_protocol_parse function.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk/modules/ssl@93865 13f79535-47bb-0310-9956-ffa450edef68
parent 3db2f7d8
Loading
Loading
Loading
Loading
+22 −53
Changes for ssl_engine_config.c: 22 added lines, 53 removed lines.
Original line number Diff line number Diff line
@@ -1060,14 +1060,16 @@ const char *ssl_cmd_SSLRequire(cmd_parms *cmd, void *ctx,
    return NULL;
}

const char *ssl_cmd_SSLProtocol(cmd_parms *cmd, void *ctx,
                                const char *opt)
static const char *ssl_cmd_protocol_parse(cmd_parms *parms,
                                          const char *arg,
                                          ssl_proto_t *options)
{
    SSLSrvConfigRec *sc = mySrvConfig(cmd->server);
    ssl_proto_t thisopt, options = SSL_PROTOCOL_NONE;
    ssl_proto_t thisopt;

    *options = SSL_PROTOCOL_NONE;

    while (*opt) {
        char *w = ap_getword_conf(cmd->pool, &opt);
    while (*arg) {
        char *w = ap_getword_conf(parms->temp_pool, &arg);
        char action = '\0';

        if ((*w == '+') || (*w == '-')) {
@@ -1087,75 +1089,42 @@ const char *ssl_cmd_SSLProtocol(cmd_parms *cmd, void *ctx,
            thisopt = SSL_PROTOCOL_ALL;
        }
        else {
            return apr_pstrcat(cmd->pool,
                               "SSLProtocol: Illegal protocol '",
            return apr_pstrcat(parms->temp_pool,
                               parms->cmd->name,
                               ": Illegal protocol '",
                               w, "'", NULL);
        }

        if (action == '-') {
            options &= ~thisopt;
            *options &= ~thisopt;
        }
        else if (action == '+') {
            options |= thisopt;
            *options |= thisopt;
        }
        else {
            options = thisopt;
            *options = thisopt;
        }
    }

    sc->nProtocol = options;

    return NULL;
}

#ifdef SSL_EXPERIMENTAL_PROXY

const char *ssl_cmd_SSLProxyProtocol(cmd_parms *cmd, char *struct_ptr,
const char *ssl_cmd_SSLProtocol(cmd_parms *cmd, void *ctx,
                                const char *opt)
{
    SSLSrvConfigRec *sc = mySrvConfig(cmd->server);
    ssl_proto_t thisopt, options = SSL_PROTOCOL_NONE;

    while (*opt) {
        char *w = ap_getword_conf(cmd->pool, &opt);
        char action = '\0';

        if ((*w == '+') || (*w == '-')) {
            action = *(w++);
        }

        if (strcEQ(w, "SSLv2")) {
            thisopt = SSL_PROTOCOL_SSLV2;
        }
        else if (strcEQ(w, "SSLv3")) {
            thisopt = SSL_PROTOCOL_SSLV3;
        }
        else if (strcEQ(w, "TLSv1")) {
            thisopt = SSL_PROTOCOL_TLSV1;
        }
        else if (strcEQ(w, "all")) {
            thisopt = SSL_PROTOCOL_ALL;
        }
        else {
            return apr_pstrcat(cmd->pool,
                               "SSLProxyProtocol: Illegal protocol '",
                               w, "'", NULL);
    return ssl_cmd_protocol_parse(cmd, opt, &sc->nProtocol);
}

        if (action == '-') {
            options &= ~thisopt;
        }
        else if (action == '+') {
            options |= thisopt;
        }
        else {
            options = thisopt;
        }
    }
#ifdef SSL_EXPERIMENTAL_PROXY

    sc->nProxyProtocol = options;
const char *ssl_cmd_SSLProxyProtocol(cmd_parms *cmd, char *struct_ptr,
                                     const char *opt)
{
    SSLSrvConfigRec *sc = mySrvConfig(cmd->server);

    return NULL;
    return ssl_cmd_protocol_parse(cmd, opt, &sc->nProxyProtocol);
}

const char *ssl_cmd_SSLProxyCipherSuite(cmd_parms *cmd, char *struct_ptr,