libzypp/bnc-439532.diff

114 lines
3.2 KiB
Diff

--- zypp/media/MediaCurl.cc 2008-10-28 21:55:46.000000000 +0100
+++ /space/git/suse/zypp/libzypp/zypp/media/MediaCurl.cc 2008-10-28 17:31:05.000000000 +0100
@@ -185,7 +185,7 @@
Pathname MediaCurl::_cookieFile = "/var/lib/YaST2/cookies";
-const char *const MediaCurl::anonymousIdHeader()
+static const char *const anonymousIdHeader()
{
// we need to add the release and identifier to the
// agent string.
@@ -203,14 +203,14 @@
}
static const std::string _value(
- str::form(
- "X-ZYpp-AnonymousUniqueId: %s",
- target ? target->anonymousUniqueId().c_str() : "" )
+ str::trim( str::form(
+ "X-ZYpp-AnonymousId: %s",
+ target ? target->anonymousUniqueId().c_str() : "" ) )
);
return _value.c_str();
}
-
-const char *const MediaCurl::agentString()
+
+static const char *const agentString()
{
// we need to add the release and identifier to the
// agent string.
@@ -244,7 +244,8 @@
: MediaHandler( url_r, attach_point_hint_r,
"/", // urlpath at attachpoint
true ), // does_download
- _curl( NULL )
+ _curl( NULL ),
+ _customHeaders(0L)
{
_curlError[0] = '\0';
_curlDebug = 0L;
@@ -491,18 +492,7 @@
disconnectFrom();
ZYPP_THROW(MediaCurlSetOptException(_url, _curlError));
}
-
- // now add the anonymous id header
- curl_slist *chunk = NULL;
- chunk = curl_slist_append(chunk, anonymousIdHeader());
- ret = curl_easy_setopt ( _curl, CURLOPT_HTTPHEADER, chunk );
- curl_slist_free_all(chunk);
- if ( ret != 0) {
- disconnectFrom();
- ZYPP_THROW(MediaCurlSetOptException(_url, _curlError));
- }
-
}
@@ -714,6 +704,15 @@
ZYPP_THROW(MediaCurlSetOptException(_url, _curlError));
}
+ // now add the anonymous id header
+ _customHeaders = curl_slist_append(_customHeaders, anonymousIdHeader());
+
+ ret = curl_easy_setopt ( _curl, CURLOPT_HTTPHEADER, _customHeaders );
+
+ if ( ret != 0) {
+ disconnectFrom();
+ ZYPP_THROW(MediaCurlSetOptException(_url, _curlError));
+ }
// FIXME: need a derived class to propelly compare url's
MediaSourceRef media( new MediaSource(_url.getScheme(), _url.asString()));
@@ -734,6 +733,12 @@
//
void MediaCurl::disconnectFrom()
{
+ if ( _customHeaders )
+ {
+ curl_slist_free_all(_customHeaders);
+ _customHeaders = 0L;
+ }
+
if ( _curl )
{
curl_easy_cleanup( _curl );
--- zypp/media/MediaCurl.h 2008-10-28 21:55:46.000000000 +0100
+++ /space/git/suse/zypp/libzypp/zypp/media/MediaCurl.h 2008-10-28 17:31:05.000000000 +0100
@@ -94,13 +94,6 @@
static int progressCallback( void *clientp, double dltotal, double dlnow,
double ultotal, double ulnow );
-
- /** The user agent string */
- static const char *const agentString();
-
- /** anonymous id header used to count unique users */
- static const char *const anonymousIdHeader();
-
private:
/**
* Return a comma separated list of available authentication methods
@@ -114,6 +107,7 @@
CURL *_curl;
char _curlError[ CURL_ERROR_SIZE ];
long _curlDebug;
+ curl_slist *_customHeaders;
mutable std::string _userpwd;
std::string _proxy;