Add User-Agent header to SOAP messages.
[shibboleth/sp.git] / shibsp / binding / impl / SOAPClient.cpp
index 29a002a..ac4a438 100644 (file)
@@ -46,27 +46,27 @@ SOAPClient::SOAPClient(SecurityPolicy& policy)
     setValidating(validate.first && validate.second);
 }
 
-void SOAPClient::send(const soap11::Envelope& env, MetadataCredentialCriteria& peer, const char* endpoint)
+void SOAPClient::send(const soap11::Envelope& env, const char* from, MetadataCredentialCriteria& to, const char* endpoint)
 {
     // Check for message signing requirements.   
-    m_relyingParty = m_app.getRelyingParty(dynamic_cast<const EntityDescriptor*>(peer.getRole().getParent()));
-    pair<bool,const char*> flag = m_relyingParty->getString("signRequests");
+    m_relyingParty = m_app.getRelyingParty(dynamic_cast<const EntityDescriptor*>(to.getRole().getParent()));
+    pair<bool,const char*> flag = m_relyingParty->getString("signing");
     if (flag.first && (!strcmp(flag.second, "true") || !strcmp(flag.second, "back"))) {
         m_credResolver=m_app.getCredentialResolver();
         if (m_credResolver) {
             m_credResolver->lock();
             // Fill in criteria to use.
-            peer.setUsage(CredentialCriteria::SIGNING_CREDENTIAL);
+            to.setUsage(Credential::SIGNING_CREDENTIAL);
             pair<bool,const char*> keyName = m_relyingParty->getString("keyName");
             if (keyName.first)
-                peer.getKeyNames().insert(keyName.second);
-            pair<bool,const XMLCh*> sigalg = m_relyingParty->getXMLString("signatureAlg");
+                to.getKeyNames().insert(keyName.second);
+            pair<bool,const XMLCh*> sigalg = m_relyingParty->getXMLString("signingAlg");
             if (sigalg.first)
-                peer.setXMLAlgorithm(sigalg.second);
-            const Credential* cred = m_credResolver->resolve(&peer);
+                to.setXMLAlgorithm(sigalg.second);
+            const Credential* cred = m_credResolver->resolve(&to);
             // Reset criteria back.
-            peer.setKeyAlgorithm(NULL);
-            peer.setKeySize(0);
+            to.setKeyAlgorithm(NULL);
+            to.setKeySize(0);
 
             if (cred) {
                 // Check for message.
@@ -98,7 +98,7 @@ void SOAPClient::send(const soap11::Envelope& env, MetadataCredentialCriteria& p
         }
     }
     
-    opensaml::SOAPClient::send(env, peer, endpoint);
+    opensaml::SOAPClient::send(env, from, to, endpoint);
 }
 
 void SOAPClient::prepareTransport(SOAPTransport& transport)
@@ -128,7 +128,7 @@ void SOAPClient::prepareTransport(SOAPTransport& transport)
                 m_credResolver->lock();
         }
         if (m_credResolver) {
-            m_criteria->setUsage(CredentialCriteria::TLS_CREDENTIAL);
+            m_criteria->setUsage(Credential::TLS_CREDENTIAL);
             authType = m_relyingParty->getString("keyName");
             if (authType.first)
                 m_criteria->getKeyNames().insert(authType.second);
@@ -171,12 +171,14 @@ void SOAPClient::prepareTransport(SOAPTransport& transport)
     
     transport.setConnectTimeout(m_settings->getUnsignedInt("connectTimeout").second);
     transport.setTimeout(m_settings->getUnsignedInt("timeout").second);
+    m_app.getServiceProvider().setTransportOptions(m_app.getString("policyId").second, transport);
 
     HTTPSOAPTransport* http = dynamic_cast<HTTPSOAPTransport*>(&transport);
     if (http) {
         flag = m_settings->getBool("chunkedEncoding");
         http->useChunkedEncoding(!flag.first || flag.second);
-        http->setRequestHeader("Shibboleth", PACKAGE_VERSION);
+        http->setRequestHeader("User-Agent", PACKAGE_NAME);
+        http->setRequestHeader(PACKAGE_NAME, PACKAGE_VERSION);
     }
 }