[cpp-sp] branch maint-3 updated: SSPCPP-1012 - Add deprecation warnings where required

Scott Cantor cantor.2 at osu.edu
Wed Jul 30 14:57:19 UTC 2025


This is an automated email from the git hooks/post-receive script.

scantor pushed a commit to branch maint-3
in repository cpp-sp.

View the commit online:
http://git.shibboleth.net/view/?p=cpp-sp.git;a=commit;h=26daecefbd5233da263bb8a19fe21a6a9f92a8ec

The following commit(s) were added to refs/heads/maint-3 by this push:
     new 26daecef SSPCPP-1012 - Add deprecation warnings where required
26daecef is described below

commit 26daecefbd5233da263bb8a19fe21a6a9f92a8ec
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Wed Jul 30 10:56:22 2025 -0400

    SSPCPP-1012 - Add deprecation warnings where required
    
    https://shibboleth.atlassian.net/browse/SSPCPP-1012
    
    Deprecate ShibExpireRedirects command.
    Add generic content setting to all active modules.
---
 apache/mod_shib.cpp        | 29 ++++++++++++++++++++++++-----
 fastcgi/shibauthorizer.cpp |  9 ++++++---
 fastcgi/shibresponder.cpp  | 10 +++++++---
 iis7_shib/IIS7Request.cpp  |  9 +++++++--
 4 files changed, 44 insertions(+), 13 deletions(-)

diff --git a/apache/mod_shib.cpp b/apache/mod_shib.cpp
index 8c4991f4..f3be14ca 100644
--- a/apache/mod_shib.cpp
+++ b/apache/mod_shib.cpp
@@ -331,6 +331,13 @@ extern "C" void* merge_shib_dir_config (SH_AP_POOL* p, void* base, void* sub)
     else
         dc->bExportAssertion = -1;
 
+    if (child->bExpireRedirects != -1)
+        dc->bExpireRedirects = child->bExpireRedirects;
+    else if (parent->bExpireRedirects != -1 && (!child->tUnsettings || !apr_table_get(child->tUnsettings, "expireRedirects")))
+        dc->bExpireRedirects = parent->bExpireRedirects;
+    else
+        dc->bExpireRedirects = -1;
+
     dc->bOff = ((child->bOff == -1) ? parent->bOff : child->bOff);
     dc->bBasicHijack = ((child->bBasicHijack == -1) ? parent->bBasicHijack : child->bBasicHijack);
 #ifndef SHIB_APACHE_24
@@ -340,7 +347,6 @@ extern "C" void* merge_shib_dir_config (SH_AP_POOL* p, void* base, void* sub)
 #endif
     dc->bUseEnvVars = ((child->bUseEnvVars==-1) ? parent->bUseEnvVars : child->bUseEnvVars);
     dc->bUseHeaders = ((child->bUseHeaders==-1) ? parent->bUseHeaders : child->bUseHeaders);
-    dc->bExpireRedirects = ((child->bExpireRedirects==-1) ? parent->bExpireRedirects : child->bExpireRedirects);
     return dc;
 }
 
@@ -699,7 +705,8 @@ public:
   long sendRedirect(const char* url) {
     HTTPResponse::sendRedirect(url);
     ap_table_set(m_req->headers_out, "Location", url);
-    if (m_dc->bExpireRedirects != 0) {
+    pair <bool,bool> flag = getRequestSettings().first->getBool("expireRedirects");
+    if (!flag.first || flag.second) {
         ap_table_set(m_req->err_headers_out, "Expires", "Wed, 01 Jan 1997 12:00:00 GMT");
         ap_table_set(m_req->err_headers_out, "Cache-Control", "private,no-store,no-cache,max-age=0");
     }
@@ -1503,6 +1510,8 @@ pair<bool,bool> ApacheRequestMapper::getBool(const char* name, const char* ns) c
             return make_pair(true, sta->m_dc->bRequireSession==1);
         else if (name && !strcmp(name,"exportAssertion") && sta->m_dc->bExportAssertion != -1)
             return make_pair(true, sta->m_dc->bExportAssertion==1);
+        else if (name && !strcmp(name,"expireRedirects") && sta->m_dc->bExpireRedirects != -1)
+            return make_pair(true, sta->m_dc->bExpireRedirects==1);
         else if (sta->m_dc->tSettings) {
             const char* prop = ap_table_get(sta->m_dc->tSettings, name);
             if (prop)
@@ -1824,6 +1833,12 @@ extern "C" const char* ap_set_global_string_slot(cmd_parms* parms, void*, const
 
 extern "C" const char* shib_set_server_string_slot(cmd_parms* parms, void*, const char* arg)
 {
+#ifdef SHIB_APACHE_24
+    if (!strcmp(parms->cmd->name, "ShibURLScheme")) {
+        ap_log_error(APLOG_MARK, APLOG_WARNING|APLOG_NOERRNO, SH_AP_R(parms->server), "DEPRECATED: '%s' is deprecated, use ServerName",
+            parms->cmd->name);
+    }
+#endif
     char* base=(char*)ap_get_module_config(parms->server->module_config,&mod_shib);
     size_t offset=(size_t)parms->info;
     *((char**)(base + offset))=ap_pstrdup(parms->pool,arg);
@@ -2117,7 +2132,7 @@ static command_rec shire_cmds[] = {
 
   {"ShibURLScheme", (config_fn_t)shib_set_server_string_slot,
    (void *) XtOffsetOf (shib_server_config, szScheme),
-   RSRC_CONF, TAKE1, "URL scheme to force into generated URLs for a vhost"},
+   RSRC_CONF, TAKE1, "DEPRECATED: URL scheme to force into generated URLs for a vhost"},
 
   {"ShibRequestSetting", (config_fn_t)shib_table_set, nullptr,
    OR_AUTHCFG, TAKE2, "Set arbitrary Shibboleth request property for content"},
@@ -2274,6 +2289,10 @@ extern "C" const char* deprecated_set_flag_slot(cmd_parms *cmd, void *struct_ptr
         ap_log_error(APLOG_MARK, APLOG_WARNING|APLOG_NOERRNO, 0, cmd->server,
             "DEPRECATED: '%s' will be removed in a future version", cmd->cmd->name);
     }
+    else if (!strcasecmp(cmd->cmd->name, "ShibExpireRedirects")) {
+        ap_log_error(APLOG_MARK, APLOG_WARNING|APLOG_NOERRNO, 0, cmd->server,
+            "DEPRECATED: '%s On|Off' replaced with 'ShibRequestSetting expireRedirects 1|0'", cmd->cmd->name);
+    }
     return ap_set_flag_slot(cmd, struct_ptr, arg);
 }
 
@@ -2367,9 +2386,9 @@ static command_rec shib_cmds[] = {
     AP_INIT_FLAG("ShibUseHeaders", (config_fn_t)ap_set_flag_slot,
         (void *) offsetof (shib_dir_config, bUseHeaders),
         OR_AUTHCFG, "Export attributes using custom HTTP headers"),
-    AP_INIT_FLAG("ShibExpireRedirects", (config_fn_t)ap_set_flag_slot,
+    AP_INIT_FLAG("ShibExpireRedirects", (config_fn_t)deprecated_set_flag_slot,
         (void *) offsetof (shib_dir_config, bExpireRedirects),
-        OR_AUTHCFG, "Expire SP-generated redirects"),
+        OR_AUTHCFG, "(DEPRECATED) Expire SP-generated redirects"),
 
     {nullptr}
 };
diff --git a/fastcgi/shibauthorizer.cpp b/fastcgi/shibauthorizer.cpp
index ba0bbfe4..ac35567a 100644
--- a/fastcgi/shibauthorizer.cpp
+++ b/fastcgi/shibauthorizer.cpp
@@ -240,9 +240,12 @@ public:
         HTTPResponse::sendRedirect(url);
         string hdr=string("Status: 302 Please Wait\r\nLocation: ") + url + "\r\n"
           "Content-Type: text/html\r\n"
-          "Content-Length: 40\r\n"
-          "Expires: Wed, 01 Jan 1997 12:00:00 GMT\r\n"
-          "Cache-Control: private,no-store,no-cache,max-age=0\r\n";
+          "Content-Length: 40\r\n";
+        pair <bool,bool> flag = getRequestSettings().first->getBool("expireRedirects");
+        if (!flag.first || flag.second) {
+          hdr += "Expires: Wed, 01 Jan 1997 12:00:00 GMT\r\n"
+            "Cache-Control: private,no-store,no-cache,max-age=0\r\n";
+        }
         for (multimap<string,string>::const_iterator i=m_response_headers.begin(); i!=m_response_headers.end(); ++i)
             hdr += i->first + ": " + i->second + "\r\n";
         hdr += "\r\n";
diff --git a/fastcgi/shibresponder.cpp b/fastcgi/shibresponder.cpp
index 65e46003..62a3f2a2 100644
--- a/fastcgi/shibresponder.cpp
+++ b/fastcgi/shibresponder.cpp
@@ -193,9 +193,13 @@ public:
         HTTPResponse::sendRedirect(url);
         string hdr=string("Status: 302 Please Wait\r\nLocation: ") + url + "\r\n"
           "Content-Type: text/html\r\n"
-          "Content-Length: 40\r\n"
-          "Expires: Wed, 01 Jan 1997 12:00:00 GMT\r\n"
-          "Cache-Control: private,no-store,no-cache,max-age=0\r\n";
+          "Content-Length: 40\r\n";
+
+        pair <bool,bool> flag = getRequestSettings().first->getBool("expireRedirects");
+        if (!flag.first || flag.second) {
+          hdr += "Expires: Wed, 01 Jan 1997 12:00:00 GMT\r\n"
+            "Cache-Control: private,no-store,no-cache,max-age=0\r\n";
+        }
         for (multimap<string,string>::const_iterator i=m_response_headers.begin(); i!=m_response_headers.end(); ++i)
             hdr += i->first + ": " + i->second + "\r\n";
         hdr += "\r\n";
diff --git a/iis7_shib/IIS7Request.cpp b/iis7_shib/IIS7Request.cpp
index 2f10d9cd..527373a9 100644
--- a/iis7_shib/IIS7Request.cpp
+++ b/iis7_shib/IIS7Request.cpp
@@ -429,8 +429,13 @@ void IIS7Request::setResponseHeader(const char* name, const char* value, bool re
 long IIS7Request::sendRedirect(const char* url)
 {
     HTTPResponse::sendRedirect(url);
-    setResponseHeader("Expires", "Wed, 01 Jan 1997 12:00:00 GMT", true);
-    setResponseHeader("Cache-Control", "private,no-store,no-cache,max-age=0", true);
+
+    pair <bool.bool> flag = getRequestSettings().first->getBool("expireRedirects");
+    if (!flag.first || flag.second) {
+        setResponseHeader("Expires", "Wed, 01 Jan 1997 12:00:00 GMT", true);
+        setResponseHeader("Cache-Control", "private,no-store,no-cache,max-age=0", true);
+    }
+    
     HRESULT hr = m_response->Redirect(url);
     if (FAILED(hr)) {
         logFatal("Redirect", hr);

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the commits mailing list