114 lines
3.2 KiB
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;
|