Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package libzypp for openSUSE:Factory checked 
in at 2023-04-29 17:27:57
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libzypp (Old)
 and      /work/SRC/openSUSE:Factory/.libzypp.new.1533 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libzypp"

Sat Apr 29 17:27:57 2023 rev:471 rq:1083529 version:17.31.11

Changes:
--------
--- /work/SRC/openSUSE:Factory/libzypp/libzypp.changes  2023-04-14 
13:12:20.467310970 +0200
+++ /work/SRC/openSUSE:Factory/.libzypp.new.1533/libzypp.changes        
2023-04-29 17:28:05.698530714 +0200
@@ -1,0 +2,22 @@
+Fri Apr 28 13:40:07 CEST 2023 - m...@suse.de
+
+- MediaCurl: Fix endless loop if wrong credentials are stored in
+  credentials.cat (bsc#1210870)
+  Since libzypp-17.31.7 wrong credentials stored in credentials.cat
+  may lead to an endless loop. Rather than asking for the right
+  credentials, the stored ones are used again and again.
+- zypp.conf: Introduce 'download.connect_timeout' [60 sec.]
+  (bsc#1208329)
+  Maximum time in seconds that you allow the connection phase to
+  the server to take. This only limits the connection phase, it has
+  no impact once it has connected. (see also CURLOPT_CONNECTTIMEOUT)
+- commit: Try to provide /dev fs if not present (fixes #444)
+- fix build with boost 1.82.
+- version 17.31.11 (22)
+
+-------------------------------------------------------------------
+Mon Apr 24 08:30:44 CEST 2023 - aschn...@suse.com
+
+- fix build with boost 1.82
+
+-------------------------------------------------------------------

Old:
----
  libzypp-17.31.10.tar.bz2

New:
----
  libzypp-17.31.11.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libzypp.spec ++++++
--- /var/tmp/diff_new_pack.ZyPK3u/_old  2023-04-29 17:28:06.286533176 +0200
+++ /var/tmp/diff_new_pack.ZyPK3u/_new  2023-04-29 17:28:06.294533210 +0200
@@ -42,7 +42,7 @@
 %bcond_with enable_preview_single_rpmtrans_as_default_for_zypper
 
 Name:           libzypp
-Version:        17.31.10
+Version:        17.31.11
 Release:        0
 License:        GPL-2.0+
 Url:            https://github.com/openSUSE/libzypp

++++++ libzypp-17.31.10.tar.bz2 -> libzypp-17.31.11.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libzypp-17.31.10/VERSION.cmake 
new/libzypp-17.31.11/VERSION.cmake
--- old/libzypp-17.31.10/VERSION.cmake  2023-04-13 16:51:38.000000000 +0200
+++ new/libzypp-17.31.11/VERSION.cmake  2023-04-28 13:42:03.000000000 +0200
@@ -61,8 +61,8 @@
 SET(LIBZYPP_MAJOR "17")
 SET(LIBZYPP_COMPATMINOR "22")
 SET(LIBZYPP_MINOR "31")
-SET(LIBZYPP_PATCH "10")
+SET(LIBZYPP_PATCH "11")
 #
-# LAST RELEASED: 17.31.10 (22)
+# LAST RELEASED: 17.31.11 (22)
 # (The number in parenthesis is LIBZYPP_COMPATMINOR)
 #=======
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libzypp-17.31.10/package/libzypp.changes 
new/libzypp-17.31.11/package/libzypp.changes
--- old/libzypp-17.31.10/package/libzypp.changes        2023-04-13 
16:51:38.000000000 +0200
+++ new/libzypp-17.31.11/package/libzypp.changes        2023-04-28 
13:42:03.000000000 +0200
@@ -1,4 +1,26 @@
 -------------------------------------------------------------------
+Fri Apr 28 13:40:07 CEST 2023 - m...@suse.de
+
+- MediaCurl: Fix endless loop if wrong credentials are stored in
+  credentials.cat (bsc#1210870)
+  Since libzypp-17.31.7 wrong credentials stored in credentials.cat
+  may lead to an endless loop. Rather than asking for the right
+  credentials, the stored ones are used again and again.
+- zypp.conf: Introduce 'download.connect_timeout' [60 sec.]
+  (bsc#1208329)
+  Maximum time in seconds that you allow the connection phase to
+  the server to take. This only limits the connection phase, it has
+  no impact once it has connected. (see also CURLOPT_CONNECTTIMEOUT)
+- commit: Try to provide /dev fs if not present (fixes #444)
+- fix build with boost 1.82.
+- version 17.31.11 (22)
+
+-------------------------------------------------------------------
+Mon Apr 24 08:30:44 CEST 2023 - aschn...@suse.com
+
+- fix build with boost 1.82
+
+-------------------------------------------------------------------
 Thu Apr 13 16:48:40 CEST 2023 - m...@suse.de
 
 - BuildRequires: libsolv-devel >= 0.7.24 for x86_64_v[234]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libzypp-17.31.10/po/nl.po 
new/libzypp-17.31.11/po/nl.po
--- old/libzypp-17.31.10/po/nl.po       2023-03-13 16:50:22.000000000 +0100
+++ new/libzypp-17.31.11/po/nl.po       2023-04-15 23:42:04.000000000 +0200
@@ -16,7 +16,7 @@
 "Project-Id-Version: zypp.nl\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2022-12-22 14:35+0100\n"
-"PO-Revision-Date: 2023-03-10 19:14+0000\n"
+"PO-Revision-Date: 2023-04-15 21:14+0000\n"
 "Last-Translator: Heimen Stoffels <vistau...@fastmail.com>\n"
 "Language-Team: Dutch <https://l10n.opensuse.org/projects/libzypp/master/nl/>"
 "\n"
@@ -3855,7 +3855,7 @@
 #: zypp/RepoManager.cc:1837 zypp/RepoManager.cc:2039
 #, c-format, boost-format
 msgid "Can't delete '%s'"
-msgstr "Kan '%s' niet verwijderen"
+msgstr "‘%s’ kan niet worden verwijderd"
 
 #: zypp/RepoManager.cc:2027 zypp/RepoManager.cc:2477
 msgid "Can't figure out where the service is stored."
@@ -4225,7 +4225,7 @@
 #: zypp/solver/detail/ProblemSolutionIgnore.cc:42
 #, c-format, boost-format
 msgid "break %s by ignoring some of its dependencies"
-msgstr "%s afbreken door enige van zijn afhankelijkheden te negeren"
+msgstr "doorbreek ‘%s’ door enkele afhankelijkheden te negeren"
 
 #: zypp/solver/detail/ProblemSolutionIgnore.cc:48
 msgid "generally ignore of some dependencies"
@@ -4261,7 +4261,7 @@
 #: zypp/solver/detail/SATResolver.cc:1154
 #, boost-format
 msgid "problem with the installed %1%"
-msgstr "probleem met de geïnstalleerde %1%"
+msgstr "er is een probleem met het geïnstalleerde pakket ‘%1%’"
 
 #: zypp/solver/detail/SATResolver.cc:1157
 msgid "conflicting requests"
@@ -4529,7 +4529,7 @@
 #: zypp/solver/detail/SATResolver.cc:1538
 #, boost-format
 msgid "keep obsolete %1%"
-msgstr "verouderde %1% behouden"
+msgstr "behoud het verouderde pakket ‘%1%’"
 
 #: zypp/solver/detail/SATResolver.cc:1543
 #, boost-format
@@ -4591,7 +4591,7 @@
 #: zypp/solver/detail/SATResolver.cc:1626
 #, boost-format
 msgid "deinstallation of %1%"
-msgstr "%1% verwijderen"
+msgstr "verwijder ‘%1%’"
 
 #: zypp/target/RpmPostTransCollector.cc:98
 #, boost-format
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libzypp-17.31.10/zypp/PurgeKernels.cc 
new/libzypp-17.31.11/zypp/PurgeKernels.cc
--- old/libzypp-17.31.10/zypp/PurgeKernels.cc   2023-03-13 16:50:22.000000000 
+0100
+++ new/libzypp-17.31.11/zypp/PurgeKernels.cc   2023-04-24 11:42:04.000000000 
+0200
@@ -28,6 +28,7 @@
 #include <sys/utsname.h>
 #include <functional>
 #include <array>
+#include <climits>
 
 #undef ZYPP_BASE_LOGGER_LOGGROUP
 #define ZYPP_BASE_LOGGER_LOGGROUP "PurgeKernels"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libzypp-17.31.10/zypp/RepoInfo.cc 
new/libzypp-17.31.11/zypp/RepoInfo.cc
--- old/libzypp-17.31.10/zypp/RepoInfo.cc       2023-03-13 16:50:22.000000000 
+0100
+++ new/libzypp-17.31.11/zypp/RepoInfo.cc       2023-04-28 11:42:04.000000000 
+0200
@@ -1050,20 +1050,24 @@
 
   bool RepoInfo::requireStatusWithMediaFile () const
   {
+    // We skip the check for downloading media unless a local copy of the
+    // media file exists and states that there is more than one medium.
     bool canSkipMediaCheck = std::all_of( baseUrlsBegin(), baseUrlsEnd(), []( 
const zypp::Url &url ) { return url.schemeIsDownloading(); });
-
-    const auto &mDataPath = metadataPath();
-    if ( canSkipMediaCheck && !mDataPath.empty() ) {
-      zypp::Pathname mediafile = mDataPath/"media.1/media";
-
-      zypp::repo::SUSEMediaVerifier lverifier { mediafile };
-      if ( lverifier ) {
-        canSkipMediaCheck = lverifier.totalMedia() == 1;
+    if ( canSkipMediaCheck ) {
+      const auto &mDataPath = metadataPath();
+      if ( not mDataPath.empty() ) {
+        PathInfo mediafile { mDataPath/"media.1/media" };
+        if ( mediafile.isExist() ) {
+          repo::SUSEMediaVerifier lverifier { mediafile.path() };
+          if ( lverifier && lverifier.totalMedia() > 1 ) {
+            canSkipMediaCheck = false;
+          }
+        }
       }
     }
-
-    DBG << "Can SKIP media.1/media check for status calc: " << 
canSkipMediaCheck << " for repo " << alias() << std::endl;
-    return !canSkipMediaCheck;
+    if ( canSkipMediaCheck )
+      DBG << "Can SKIP media.1/media check for status calc of repo " << 
alias() << endl;
+    return not canSkipMediaCheck;
   }
 
   /////////////////////////////////////////////////////////////////
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libzypp-17.31.10/zypp/media/MediaCurl.cc 
new/libzypp-17.31.11/zypp/media/MediaCurl.cc
--- old/libzypp-17.31.10/zypp/media/MediaCurl.cc        2023-03-31 
18:42:04.000000000 +0200
+++ new/libzypp-17.31.11/zypp/media/MediaCurl.cc        2023-04-28 
11:42:04.000000000 +0200
@@ -429,9 +429,6 @@
   }
   vol_settings.addHeader("Pragma:");
 
-  _settings.setTimeout(ZConfig::instance().download_transfer_timeout());
-  _settings.setConnectTimeout(CONNECT_TIMEOUT);
-
   _settings.setUserAgentString(agentString());
 
   // fill some settings from url query parameters
@@ -744,27 +741,27 @@
 
   Url fileurl(getFileUrl(filename));
 
-  bool retry = false;
+  bool firstAuth = true;  // bsc#1210870: authenticate must not return stored 
credentials more than once.
   unsigned internalTry = 0;
   static constexpr unsigned maxInternalTry = 3;
 
   do
   {
-    retry = false;
     try
     {
       doGetFileCopy( srcFile, target, report );
+      break;  // success!
     }
     // retry with proper authentication data
     catch (MediaUnauthorizedException & ex_r)
     {
-      if(authenticate(ex_r.hint(), !retry))
-        retry = true;
-      else
-      {
-        report->finish(fileurl, 
zypp::media::DownloadProgressReport::ACCESS_DENIED, ex_r.asUserHistory());
-        ZYPP_RETHROW(ex_r);
+      if ( authenticate(ex_r.hint(), firstAuth) ) {
+        firstAuth = false;  // must not return stored credentials again
+        continue; // retry
       }
+
+      report->finish(fileurl, 
zypp::media::DownloadProgressReport::ACCESS_DENIED, ex_r.asUserHistory());
+      ZYPP_RETHROW(ex_r);
     }
     // unexpected exception
     catch (MediaException & excpt_r)
@@ -774,8 +771,7 @@
         if ( internalTry < maxInternalTry ) {
           // just report (NO_ERROR); no interactive request to the user
           report->problem(fileurl, media::DownloadProgressReport::NO_ERROR, 
excpt_r.asUserHistory()+_("Will try again..."));
-          retry = true;
-          continue;
+          continue; // retry
         }
         excpt_r.addHistory( str::Format(_("Giving up after %1% attempts.")) % 
maxInternalTry );
       }
@@ -790,8 +786,7 @@
       ZYPP_RETHROW(excpt_r);
     }
   }
-  while (retry);
-
+  while ( true );
   report->finish(fileurl, zypp::media::DownloadProgressReport::NO_ERROR, "");
 }
 
@@ -1083,49 +1078,6 @@
 
 ///////////////////////////////////////////////////////////////////
 
-
-#if DETECT_DIR_INDEX
-bool MediaCurl::detectDirIndex() const
-{
-  if(_url.getScheme() != "http" && _url.getScheme() != "https")
-    return false;
-  //
-  // try to check the effective url and set the not_a_file flag
-  // if the url path ends with a "/", what usually means, that
-  // we've received a directory index (index.html content).
-  //
-  // Note: This may be dangerous and break file retrieving in
-  //       case of some server redirections ... ?
-  //
-  bool      not_a_file = false;
-  char     *ptr = NULL;
-  CURLcode  ret = curl_easy_getinfo( _curl,
-                                     CURLINFO_EFFECTIVE_URL,
-                                     &ptr);
-  if ( ret == CURLE_OK && ptr != NULL)
-  {
-    try
-    {
-      Url         eurl( ptr);
-      std::string path( eurl.getPathName());
-      if( !path.empty() && path != "/" && *path.rbegin() == '/')
-      {
-        DBG << "Effective url ("
-            << eurl
-            << ") seems to provide the index of a directory"
-            << endl;
-        not_a_file = true;
-      }
-    }
-    catch( ... )
-    {}
-  }
-  return not_a_file;
-}
-#endif
-
-///////////////////////////////////////////////////////////////////
-
 void MediaCurl::doGetFileCopy( const OnMediaLocation &srcFile , const Pathname 
& target, callback::SendReport<DownloadProgressReport> & report, RequestOptions 
options ) const
 {
     Pathname dest = target.absolutename();
@@ -1332,13 +1284,6 @@
         ZYPP_RETHROW(e);
       }
     }
-
-#if DETECT_DIR_INDEX
-    if (!ret && detectDirIndex())
-      {
-        ZYPP_THROW(MediaNotAFileException(_url, filename));
-      }
-#endif // DETECT_DIR_INDEX
 }
 
 ///////////////////////////////////////////////////////////////////
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libzypp-17.31.10/zypp/target/TargetImpl.cc 
new/libzypp-17.31.11/zypp/target/TargetImpl.cc
--- old/libzypp-17.31.10/zypp/target/TargetImpl.cc      2023-03-13 
16:50:22.000000000 +0100
+++ new/libzypp-17.31.11/zypp/target/TargetImpl.cc      2023-04-26 
18:42:04.000000000 +0200
@@ -232,21 +232,49 @@
     ///////////////////////////////////////////////////////////////////
     namespace
     {
+      class AssertMountedBase
+      {
+        NON_COPYABLE(AssertMountedBase);
+        NON_MOVABLE(AssertMountedBase);
+      protected:
+        AssertMountedBase()
+        {}
+
+        ~AssertMountedBase()
+        {
+          if ( ! _mountpoint.empty() ) {
+            // we mounted it so we unmount...
+            MIL << "We mounted " << _mountpoint << " so we unmount it" << endl;
+            execute({ "umount", "-R", "-l", _mountpoint.asString() });
+          }
+        }
+
+      protected:
+        int execute( ExternalProgram::Arguments && cmd_r ) const
+        {
+          ExternalProgram prog( cmd_r, ExternalProgram::Stderr_To_Stdout );
+          for( std::string line = prog.receiveLine(); ! line.empty(); line = 
prog.receiveLine() )
+          { DBG << line; }
+          return prog.close();
+        }
+
+      protected:
+        Pathname _mountpoint;
+
+      };
+
       /// \brief Try to provide /proc fs if not present.
       /// bsc#1181328: Some systemd tools require /proc to be mounted
-      class AssertProcMounted
+      class AssertProcMounted : private AssertMountedBase
       {
-        NON_COPYABLE(AssertProcMounted);
-        NON_MOVABLE(AssertProcMounted);
       public:
-
         AssertProcMounted( Pathname root_r )
         {
           root_r /= "/proc";
           if ( ! PathInfo(root_r/"self").isDir() ) {
             MIL << "Try to make sure proc is mounted at" << root_r << endl;
             if ( filesystem::assert_dir(root_r) == 0
-              && execute({ "mount", "-t", "proc", "proc", root_r.asString() }) 
== 0 ) {
+              && execute({ "mount", "-t", "proc", "/proc", root_r.asString() 
}) == 0 ) {
               _mountpoint = std::move(root_r); // so we'll later unmount it
             }
             else {
@@ -254,28 +282,32 @@
             }
           }
         }
+      };
 
-        ~AssertProcMounted( )
+      /// \brief Try to provide /dev fs if not present.
+      /// #444: Some packages expect /dev to be mounted
+      class AssertDevMounted : private AssertMountedBase
+      {
+      public:
+        AssertDevMounted( Pathname root_r )
         {
-          if ( ! _mountpoint.empty() ) {
-            // we mounted it so we unmount...
-            MIL << "We mounted " << _mountpoint << " so we unmount it" << endl;
-            execute({ "umount", "-l", _mountpoint.asString() });
+          root_r /= "/dev";
+          if ( ! PathInfo(root_r/"null").isChr() ) {
+            MIL << "Try to make sure dev is mounted at" << root_r << endl;
+            // 
https://unix.stackexchange.com/questions/263972/unmount-a-rbind-mount-without-affecting-the-original-mount
+            // Without --make-rslave unmounting <sandbox-root>/dev/pts
+            // may unmount /dev/pts and you're out of ptys.
+            if ( filesystem::assert_dir(root_r) == 0
+              && execute({ "mount", "--rbind", "--make-rslave", "/dev", 
root_r.asString() }) == 0 ) {
+              _mountpoint = std::move(root_r); // so we'll later unmount it
+            }
+            else {
+              WAR << "Mounting dev at " << root_r << " failed" << endl;
+            }
           }
         }
-
-      private:
-        int execute( ExternalProgram::Arguments && cmd_r ) const
-        {
-          ExternalProgram prog( cmd_r, ExternalProgram::Stderr_To_Stdout );
-          for( std::string line = prog.receiveLine(); ! line.empty(); line = 
prog.receiveLine() )
-          { DBG << line; }
-          return prog.close();
-        }
-
-      private:
-        Pathname _mountpoint;
       };
+
     } // namespace
     ///////////////////////////////////////////////////////////////////
 
@@ -1582,6 +1614,7 @@
 
       // bsc#1181328: Some systemd tools require /proc to be mounted
       AssertProcMounted assertProcMounted( _root );
+      AssertDevMounted assertDevMounted( _root ); // also /dev
 
       RpmPostTransCollector postTransCollector( _root );
       std::vector<sat::Solvable> successfullyInstalledPackages;
@@ -1929,6 +1962,7 @@
 
       // bsc#1181328: Some systemd tools require /proc to be mounted
       AssertProcMounted assertProcMounted( _root );
+      AssertDevMounted assertDevMounted( _root ); // also /dev
 
       // Why nodeps?
       //
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libzypp-17.31.10/zypp-core/Pathname.cc 
new/libzypp-17.31.11/zypp-core/Pathname.cc
--- old/libzypp-17.31.10/zypp-core/Pathname.cc  2023-03-13 16:50:22.000000000 
+0100
+++ new/libzypp-17.31.11/zypp-core/Pathname.cc  2023-04-24 11:42:04.000000000 
+0200
@@ -10,6 +10,7 @@
  *
 */
 #include <iostream>
+#include <climits>
 
 #include <zypp-core/base/String.h>
 #include <zypp-core/Pathname.h>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libzypp-17.31.10/zypp-curl/curlhelper.cc 
new/libzypp-17.31.11/zypp-curl/curlhelper.cc
--- old/libzypp-17.31.10/zypp-curl/curlhelper.cc        2023-03-31 
18:42:04.000000000 +0200
+++ new/libzypp-17.31.11/zypp-curl/curlhelper.cc        2023-04-14 
16:42:04.000000000 +0200
@@ -24,6 +24,8 @@
 #include <list>
 #include <string>
 
+#define  TRANSFER_TIMEOUT_MAX   60 * 60
+
 using std::endl;
 using namespace zypp;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libzypp-17.31.10/zypp-curl/ng/network/request.cc 
new/libzypp-17.31.11/zypp-curl/ng/network/request.cc
--- old/libzypp-17.31.10/zypp-curl/ng/network/request.cc        2023-03-31 
18:42:04.000000000 +0200
+++ new/libzypp-17.31.11/zypp-curl/ng/network/request.cc        2023-04-14 
16:42:04.000000000 +0200
@@ -210,9 +210,6 @@
 
       locSet.addHeader("Pragma:");
 
-      locSet.setTimeout( 
zypp::MediaConfig::instance().download_transfer_timeout() );
-      locSet.setConnectTimeout( CONNECT_TIMEOUT );
-
       /** Force IPv4/v6 */
       switch ( zypp::env::ZYPP_MEDIA_CURL_IPRESOLVE() )
       {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libzypp-17.31.10/zypp-curl/private/curlhelper_p.h 
new/libzypp-17.31.11/zypp-curl/private/curlhelper_p.h
--- old/libzypp-17.31.10/zypp-curl/private/curlhelper_p.h       2023-03-31 
18:42:04.000000000 +0200
+++ new/libzypp-17.31.11/zypp-curl/private/curlhelper_p.h       2023-04-14 
16:42:04.000000000 +0200
@@ -18,10 +18,6 @@
 #include <zypp-core/Url.h>
 #include <zypp-curl/TransferSettings>
 
-#define  CONNECT_TIMEOUT        60
-#define  TRANSFER_TIMEOUT_MAX   60 * 60
-#define  DETECT_DIR_INDEX       0
-
 #define EXPLICITLY_NO_PROXY "_none_"
 
 #undef CURLVERSION_AT_LEAST
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libzypp-17.31.10/zypp-curl/transfersettings.cc 
new/libzypp-17.31.11/zypp-curl/transfersettings.cc
--- old/libzypp-17.31.10/zypp-curl/transfersettings.cc  2023-03-13 
16:50:22.000000000 +0100
+++ new/libzypp-17.31.11/zypp-curl/transfersettings.cc  2023-04-14 
16:42:04.000000000 +0200
@@ -37,7 +37,7 @@
     public:
       Impl() : _useproxy( false ),
         _timeout( MediaConfig::instance().download_transfer_timeout() ),
-        _connect_timeout( 60 ),
+        _connect_timeout( MediaConfig::instance().download_connect_timeout() ),
         _maxConcurrentConnections( 
MediaConfig::instance().download_max_concurrent_connections() ),
         
_minDownloadSpeed(MediaConfig::instance().download_min_download_speed()),
         
_maxDownloadSpeed(MediaConfig::instance().download_max_download_speed()),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libzypp-17.31.10/zypp-media/mediaconfig.cc 
new/libzypp-17.31.11/zypp-media/mediaconfig.cc
--- old/libzypp-17.31.10/zypp-media/mediaconfig.cc      2023-03-13 
16:50:22.000000000 +0100
+++ new/libzypp-17.31.11/zypp-media/mediaconfig.cc      2023-04-28 
11:42:04.000000000 +0200
@@ -25,6 +25,7 @@
       , download_max_download_speed    ( 0 )
       , download_max_silent_tries      ( 5 )
       , download_transfer_timeout      ( 180 )
+      , download_connect_timeout        ( 60 )
     { }
 
     Pathname credentials_global_dir_path;
@@ -35,6 +36,8 @@
     int download_max_download_speed;
     int download_max_silent_tries;
     int download_transfer_timeout;
+    int download_connect_timeout;
+
   };
 
   MediaConfig::MediaConfig() : d_ptr( new MediaConfigPrivate() )
@@ -73,6 +76,12 @@
         str::strtonum(value, d->download_max_silent_tries);
         return true;
 
+      } else if ( entry == "download.connect_timeout" ) {
+        str::strtonum(value, d->download_connect_timeout);
+        if ( d->download_connect_timeout < 0 )
+          d->download_connect_timeout = 0;
+        return true;
+
       } else if ( entry == "download.transfer_timeout" ) {
         str::strtonum(value, d->download_transfer_timeout);
         if ( d->download_transfer_timeout < 0 )                
d->download_transfer_timeout = 0;
@@ -112,6 +121,9 @@
   long MediaConfig::download_transfer_timeout() const
   { return d_func()->download_transfer_timeout; }
 
+  long MediaConfig::download_connect_timeout() const
+  { return d_func()->download_connect_timeout; }
+
   ZYPP_IMPL_PRIVATE(MediaConfig)
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libzypp-17.31.10/zypp-media/mediaconfig.h 
new/libzypp-17.31.11/zypp-media/mediaconfig.h
--- old/libzypp-17.31.10/zypp-media/mediaconfig.h       2023-03-13 
16:50:22.000000000 +0100
+++ new/libzypp-17.31.11/zypp-media/mediaconfig.h       2023-04-14 
16:42:04.000000000 +0200
@@ -85,6 +85,11 @@
      */
     long download_transfer_timeout() const;
 
+    /*!
+     * Maximum time in seconds that you allow the connection phase to the 
server to take.
+     */
+    long download_connect_timeout() const;
+
   private:
     MediaConfig();
     std::unique_ptr<MediaConfigPrivate> d_ptr;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libzypp-17.31.10/zypp.conf 
new/libzypp-17.31.11/zypp.conf
--- old/libzypp-17.31.10/zypp.conf      2023-03-13 16:50:22.000000000 +0100
+++ new/libzypp-17.31.11/zypp.conf      2023-04-28 11:42:04.000000000 +0200
@@ -182,6 +182,17 @@
 # download.max_silent_tries = 5
 
 ##
+## Maximum time in seconds that you allow the connection phase to the server 
to take.
+##
+## This only limits the connection phase, it has no impact once it has 
connected.
+## (see also CURLOPT_CONNECTTIMEOUT)
+##
+## Valid values:  Integer
+## Default value: 60
+##
+# download.connect_timeout = 60
+
+##
 ## Maximum time in seconds that you allow a transfer operation to take.
 ##
 ## This is useful for preventing your batch jobs from hanging for hours due

Reply via email to