https://issues.shibboleth.net/jira/browse/CPPXT-95
[shibboleth/cpp-xmltooling.git] / xmltooling / util / CurlURLInputStream.cpp
index 4d1e4b3..e5036da 100644 (file)
@@ -75,7 +75,7 @@ namespace {
     size_t curl_header_hook(void* ptr, size_t size, size_t nmemb, void* stream)
     {
         // only handle single-byte data
-        if (size!=1 || nmemb<5 || !stream)
+        if (size != 1 || nmemb < 5 || !stream)
             return nmemb;
         string* cacheTag = reinterpret_cast<string*>(stream);
         const char* hdr = reinterpret_cast<char*>(ptr);
@@ -117,9 +117,9 @@ namespace {
                 }
                 break;
             }
-            // append until whitespace
+            // append until data's gone or we see a CR/LF
             while (remaining > 0) {
-                if (!isspace(*hdr)) {
+                if (*hdr != '\r' && *hdr != '\n') {
                     (*cacheTag) += *hdr++;
                     --remaining;
                     continue;
@@ -523,6 +523,9 @@ bool CurlURLInputStream::readMore(int* runningHandles)
 
         default:
             fLog.error("error while fetching %s: (%d) %s", fURL.c_str(), msg->data.result, fError);
+            if (msg->data.result == CURLE_SSL_CIPHER) {
+                fLog.error("on Red Hat 6+, make sure libcurl used is built with OpenSSL");
+            }
             ThrowXML1(NetAccessorException, XMLExcepts::NetAcc_InternalError, fURL.c_str());
             break;
         }