--- 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;