Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package rtorrent for openSUSE:Factory 
checked in at 2025-01-05 15:28:50
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rtorrent (Old)
 and      /work/SRC/openSUSE:Factory/.rtorrent.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "rtorrent"

Sun Jan  5 15:28:50 2025 rev:14 rq:1234607 version:0.15.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/rtorrent/rtorrent.changes        2024-12-29 
11:56:31.263887116 +0100
+++ /work/SRC/openSUSE:Factory/.rtorrent.new.1881/rtorrent.changes      
2025-01-05 15:28:59.692181236 +0100
@@ -1,0 +2,6 @@
+Thu Jan  2 10:36:44 UTC 2025 - Jan Engelhardt <[email protected]>
+
+- Update to release 0.15.1
+  * Resolved scgi software crash with SIGPIPE exception.
+
+-------------------------------------------------------------------

Old:
----
  rtorrent-0.15.0.tar.gz

New:
----
  rtorrent-0.15.1.tar.gz

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

Other differences:
------------------
++++++ rtorrent.spec ++++++
--- /var/tmp/diff_new_pack.fro1se/_old  2025-01-05 15:29:00.224203119 +0100
+++ /var/tmp/diff_new_pack.fro1se/_new  2025-01-05 15:29:00.224203119 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package rtorrent
 #
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
 
 
 Name:           rtorrent
-Version:        0.15.0
+Version:        0.15.1
 Release:        0
 Summary:        Console-based BitTorrent client
 License:        SUSE-GPL-2.0+-with-openssl-exception
@@ -38,8 +38,8 @@
 BuildRequires:  pkgconfig(cppunit) >= 1.9.6
 BuildRequires:  pkgconfig(libcurl) >= 7.15.4
 BuildRequires:  pkgconfig(libtorrent) >= 0.15.0
-BuildRequires:  pkgconfig(xmlrpc)
 BuildRequires:  sysuser-tools
+Provides:       bundled(tinyxml2) = 10.0.0
 %sysusers_requires
 
 %description
@@ -57,9 +57,7 @@
 export CXXFLAGS="$CFLAGS"
 export CXXFLAGS="$CXXFLAGS -std=gnu++14"
 autoreconf -fiv
-%configure \
-       --with-xmlrpc-c="%_bindir/xmlrpc-c-config" \
-       --enable-ipv6
+%configure --with-xmlrpc-tinyxml2 --enable-ipv6
 %make_build
 
 %install

++++++ _scmsync.obsinfo ++++++
--- /var/tmp/diff_new_pack.fro1se/_old  2025-01-05 15:29:00.256204435 +0100
+++ /var/tmp/diff_new_pack.fro1se/_new  2025-01-05 15:29:00.260204599 +0100
@@ -1,5 +1,5 @@
-mtime: 1735243711
-commit: d0e1d6d00ae8a84882411242fac2d147c9d496c63edffe663779694cabbf6582
+mtime: 1735830402
+commit: 5857fe05c1c1900aac7a237be3b537f77c0c3ab3488b24ee8d4f1fd4f897613c
 url: https://src.opensuse.org/jengelh/rtorrent
 revision: master
 

++++++ build.specials.obscpio ++++++
diff: old/*: No such file or directory
diff: new/*: No such file or directory

++++++ rtorrent-0.15.0.tar.gz -> rtorrent-0.15.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rtorrent-0.15.0/configure 
new/rtorrent-0.15.1/configure
--- old/rtorrent-0.15.0/configure       2024-12-26 17:53:57.000000000 +0100
+++ new/rtorrent-0.15.1/configure       2025-01-01 13:39:58.000000000 +0100
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.72 for rtorrent 0.15.0.
+# Generated by GNU Autoconf 2.72 for rtorrent 0.15.1.
 #
 # Report bugs to <[email protected]>.
 #
@@ -614,8 +614,8 @@
 # Identity of this package.
 PACKAGE_NAME='rtorrent'
 PACKAGE_TARNAME='rtorrent'
-PACKAGE_VERSION='0.15.0'
-PACKAGE_STRING='rtorrent 0.15.0'
+PACKAGE_VERSION='0.15.1'
+PACKAGE_STRING='rtorrent 0.15.1'
 PACKAGE_BUGREPORT='[email protected]'
 PACKAGE_URL=''
 
@@ -1404,7 +1404,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-'configure' configures rtorrent 0.15.0 to adapt to many kinds of systems.
+'configure' configures rtorrent 0.15.1 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1475,7 +1475,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of rtorrent 0.15.0:";;
+     short | recursive ) echo "Configuration of rtorrent 0.15.1:";;
    esac
   cat <<\_ACEOF
 
@@ -1629,7 +1629,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-rtorrent configure 0.15.0
+rtorrent configure 0.15.1
 generated by GNU Autoconf 2.72
 
 Copyright (C) 2023 Free Software Foundation, Inc.
@@ -2073,7 +2073,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by rtorrent $as_me 0.15.0, which was
+It was created by rtorrent $as_me 0.15.1, which was
 generated by GNU Autoconf 2.72.  Invocation command line was
 
   $ $0$ac_configure_args_raw
@@ -3585,7 +3585,7 @@
 
 # Define the identity of the package.
  PACKAGE='rtorrent'
- VERSION='0.15.0'
+ VERSION='0.15.1'
 
 
 printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@@ -22271,19 +22271,19 @@
 fi
 
 pkg_failed=no
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libtorrent >= 
0.15.0" >&5
-printf %s "checking for libtorrent >= 0.15.0... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libtorrent >= 
0.15.1" >&5
+printf %s "checking for libtorrent >= 0.15.1... " >&6; }
 
 if test -n "$DEPENDENCIES_CFLAGS"; then
     pkg_cv_DEPENDENCIES_CFLAGS="$DEPENDENCIES_CFLAGS"
  elif test -n "$PKG_CONFIG"; then
     if test -n "$PKG_CONFIG" && \
-    { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists 
--print-errors \"libtorrent >= 0.15.0\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "libtorrent >= 0.15.0") 2>&5
+    { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists 
--print-errors \"libtorrent >= 0.15.1\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "libtorrent >= 0.15.1") 2>&5
   ac_status=$?
   printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
-  pkg_cv_DEPENDENCIES_CFLAGS=`$PKG_CONFIG --cflags "libtorrent >= 0.15.0" 
2>/dev/null`
+  pkg_cv_DEPENDENCIES_CFLAGS=`$PKG_CONFIG --cflags "libtorrent >= 0.15.1" 
2>/dev/null`
                      test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
@@ -22295,12 +22295,12 @@
     pkg_cv_DEPENDENCIES_LIBS="$DEPENDENCIES_LIBS"
  elif test -n "$PKG_CONFIG"; then
     if test -n "$PKG_CONFIG" && \
-    { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists 
--print-errors \"libtorrent >= 0.15.0\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "libtorrent >= 0.15.0") 2>&5
+    { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists 
--print-errors \"libtorrent >= 0.15.1\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "libtorrent >= 0.15.1") 2>&5
   ac_status=$?
   printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
-  pkg_cv_DEPENDENCIES_LIBS=`$PKG_CONFIG --libs "libtorrent >= 0.15.0" 
2>/dev/null`
+  pkg_cv_DEPENDENCIES_LIBS=`$PKG_CONFIG --libs "libtorrent >= 0.15.1" 
2>/dev/null`
                      test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
@@ -22321,14 +22321,14 @@
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-                DEPENDENCIES_PKG_ERRORS=`$PKG_CONFIG --short-errors 
--print-errors --cflags --libs "libtorrent >= 0.15.0" 2>&1`
+                DEPENDENCIES_PKG_ERRORS=`$PKG_CONFIG --short-errors 
--print-errors --cflags --libs "libtorrent >= 0.15.1" 2>&1`
         else
-                DEPENDENCIES_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags 
--libs "libtorrent >= 0.15.0" 2>&1`
+                DEPENDENCIES_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags 
--libs "libtorrent >= 0.15.1" 2>&1`
         fi
         # Put the nasty error message in config.log where it belongs
         echo "$DEPENDENCIES_PKG_ERRORS" >&5
 
-        as_fn_error $? "Package requirements (libtorrent >= 0.15.0) were not 
met:
+        as_fn_error $? "Package requirements (libtorrent >= 0.15.1) were not 
met:
 
 $DEPENDENCIES_PKG_ERRORS
 
@@ -23147,7 +23147,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by rtorrent $as_me 0.15.0, which was
+This file was extended by rtorrent $as_me 0.15.1, which was
 generated by GNU Autoconf 2.72.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -23215,7 +23215,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config='$ac_cs_config_escaped'
 ac_cs_version="\\
-rtorrent config.status 0.15.0
+rtorrent config.status 0.15.1
 configured by $0, generated by GNU Autoconf 2.72,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rtorrent-0.15.0/configure.ac 
new/rtorrent-0.15.1/configure.ac
--- old/rtorrent-0.15.0/configure.ac    2024-12-26 17:53:22.000000000 +0100
+++ new/rtorrent-0.15.1/configure.ac    2025-01-01 13:34:11.000000000 +0100
@@ -1,6 +1,6 @@
 m4_pattern_allow([PKG_CHECK_EXISTS])
 
-AC_INIT([rtorrent],[0.15.0],[[email protected]])
+AC_INIT([rtorrent],[0.15.1],[[email protected]])
 
 AC_CONFIG_HEADERS([config.h])
 AC_CONFIG_MACRO_DIRS([scripts])
@@ -50,7 +50,7 @@
 
 PKG_CHECK_MODULES([LIBCURL], [libcurl],, [LIBCURL_CHECK_CONFIG])
 PKG_CHECK_MODULES([CPPUNIT], [cppunit],, [no_cppunit="yes"])
-PKG_CHECK_MODULES([DEPENDENCIES], [libtorrent >= 0.15.0])
+PKG_CHECK_MODULES([DEPENDENCIES], [libtorrent >= 0.15.1])
 
 AC_LANG_PUSH(C++)
 TORRENT_WITH_XMLRPC_C
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rtorrent-0.15.0/src/Makefile.am 
new/rtorrent-0.15.1/src/Makefile.am
--- old/rtorrent-0.15.0/src/Makefile.am 2024-12-26 17:06:37.000000000 +0100
+++ new/rtorrent-0.15.1/src/Makefile.am 2025-01-01 13:21:47.000000000 +0100
@@ -155,6 +155,7 @@
        ui/root.cc \
        ui/root.h \
        \
+       utils/base64.h \
        utils/directory.cc \
        utils/directory.h \
        utils/file_status_cache.cc \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rtorrent-0.15.0/src/Makefile.in 
new/rtorrent-0.15.1/src/Makefile.in
--- old/rtorrent-0.15.0/src/Makefile.in 2024-12-26 17:53:58.000000000 +0100
+++ new/rtorrent-0.15.1/src/Makefile.in 2025-01-01 13:39:57.000000000 +0100
@@ -631,6 +631,7 @@
        ui/root.cc \
        ui/root.h \
        \
+       utils/base64.h \
        utils/directory.cc \
        utils/directory.h \
        utils/file_status_cache.cc \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rtorrent-0.15.0/src/rpc/xmlrpc_tinyxml2.cc 
new/rtorrent-0.15.1/src/rpc/xmlrpc_tinyxml2.cc
--- old/rtorrent-0.15.0/src/rpc/xmlrpc_tinyxml2.cc      2024-12-26 
17:06:37.000000000 +0100
+++ new/rtorrent-0.15.1/src/rpc/xmlrpc_tinyxml2.cc      2025-01-01 
13:34:15.000000000 +0100
@@ -142,22 +142,20 @@
     printer->CloseElement(true);
     break;
   case torrent::Object::TYPE_VALUE:
-    if (obj.as_value() > ((torrent::Object::value_type)2 << 30) || 
obj.as_value() < -((torrent::Object::value_type)2 << 30)) {
-      printer->OpenElement("i8", true);
-    } else {
-      printer->OpenElement("i4", true);
-    }
+    printer->OpenElement("i8", true);
     printer->PushText(std::to_string(obj.as_value()).c_str());
     printer->CloseElement(true);
     break;
   case torrent::Object::TYPE_LIST:
     printer->OpenElement("array", true);
+    printer->OpenElement("data", true);
     for (const auto& itr : obj.as_list()) {
       printer->OpenElement("value", true);
       print_object_xml(itr, printer);
       printer->CloseElement(true);
     }
     printer->CloseElement(true);
+    printer->CloseElement(true);
     break;
   case torrent::Object::TYPE_MAP:
     printer->OpenElement("struct", true);
@@ -175,7 +173,7 @@
     break;
   case torrent::Object::TYPE_DICT_KEY:
     printer->OpenElement("array", true);
-
+    printer->OpenElement("data", true);
     printer->OpenElement("value", true);
     print_object_xml(obj.as_dict_key(), printer);
     printer->CloseElement(true);
@@ -192,9 +190,10 @@
       printer->CloseElement(true);
     }
     printer->CloseElement(true);
+    printer->CloseElement(true);
     break;
   default:
-    printer->OpenElement("i4", true);
+    printer->OpenElement("i8", true);
     printer->PushText(0);
     printer->CloseElement(true);
   }
@@ -320,7 +319,7 @@
   printer->PushText("faultCode");
   printer->CloseElement(true);
   printer->OpenElement("value", true);
-  printer->OpenElement("i4", true);
+  printer->OpenElement("i8", true);
   printer->PushText(faultCode);
   printer->CloseElement(true);
   printer->CloseElement(true);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rtorrent-0.15.0/src/utils/base64.h 
new/rtorrent-0.15.1/src/utils/base64.h
--- old/rtorrent-0.15.0/src/utils/base64.h      1970-01-01 01:00:00.000000000 
+0100
+++ new/rtorrent-0.15.1/src/utils/base64.h      2024-12-26 17:06:37.000000000 
+0100
@@ -0,0 +1,73 @@
+#include <string>
+
+#include <torrent/exceptions.h>
+
+namespace utils {
+
+std::string
+remove_newlines(const std::string& str) {
+  std::string result;
+  for (auto &itr : str) {
+    if (itr != '\n' || itr != '\n')
+      result.push_back(itr);
+  }
+  return result;
+}
+
+// Modified from the public domain code in
+// 
https://en.wikibooks.org/wiki/Algorithm_Implementation/Miscellaneous/Base64#C++_2
+constexpr static char base64_pad_character = '=';
+
+std::string
+decode_base64(const std::string& input) {
+  if (input.length() % 4) // Sanity check
+    throw torrent::input_error("Invalid base64.");
+  size_t padding = 0;
+  if (input.length()) {
+    if (input[input.length() - 1] == base64_pad_character)
+      padding++;
+    if (input[input.length() - 2] == base64_pad_character)
+      padding++;
+  }
+  // Setup a vector to hold the result
+  std::string decodedBytes;
+  decodedBytes.reserve(((input.length() / 4) * 3) - padding);
+  long temp = 0; // Holds decoded quanta
+  std::string::const_iterator cursor = input.begin();
+  while (cursor < input.end()) {
+    for (size_t quantumPosition = 0; quantumPosition < 4; quantumPosition++) {
+      temp <<= 6;
+      if (*cursor >= 0x41 && *cursor <= 0x5A) // This area will need tweaking 
if
+        temp |= *cursor - 0x41; // you are using an alternate alphabet
+      else if (*cursor >= 0x61 && *cursor <= 0x7A)
+        temp |= *cursor - 0x47;
+      else if (*cursor >= 0x30 && *cursor <= 0x39)
+        temp |= *cursor + 0x04;
+      else if (*cursor == 0x2B)
+        temp |= 0x3E; // change to 0x2D for URL alphabet
+      else if (*cursor == 0x2F)
+        temp |= 0x3F; // change to 0x5F for URL alphabet
+      else if (*cursor == base64_pad_character) // pad
+      {
+        switch (input.end() - cursor) {
+          case 1: // One pad character
+            decodedBytes.push_back((temp >> 16) & 0x000000FF);
+            decodedBytes.push_back((temp >> 8) & 0x000000FF);
+            return decodedBytes;
+          case 2: // Two pad characters
+            decodedBytes.push_back((temp >> 10) & 0x000000FF);
+            return decodedBytes;
+          default:
+            throw torrent::input_error("Invalid padding in base64.");
+        }
+      } else
+        throw torrent::input_error("Invalid character in base64.");
+      cursor++;
+    }
+    decodedBytes.push_back((temp >> 16) & 0x000000FF);
+    decodedBytes.push_back((temp >> 8) & 0x000000FF);
+    decodedBytes.push_back((temp)&0x000000FF);
+  }
+  return decodedBytes;
+}
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rtorrent-0.15.0/test/rpc/xmlrpc_test.cc 
new/rtorrent-0.15.1/test/rpc/xmlrpc_test.cc
--- old/rtorrent-0.15.0/test/rpc/xmlrpc_test.cc 2024-12-26 17:06:37.000000000 
+0100
+++ new/rtorrent-0.15.1/test/rpc/xmlrpc_test.cc 2025-01-01 13:34:15.000000000 
+0100
@@ -78,7 +78,7 @@
 void
 XmlrpcTest::test_size_limit() {
   std::string input = "<?xml 
version=\"1.0\"?><methodCall><methodName>xmlrpc_reflect</methodName><params><param><value><string></string></value></param><param><value><string>\xc3\x28</string></value></param></params></methodCall>";
-  std::string expected = "<?xml 
version=\"1.0\"?><methodResponse><fault><struct><member><name>faultCode</name><value><i4>-509</i4></value></member><member><name>faultString</name><value><string>Content
 size exceeds maximum XML-RPC 
limit</string></value></member></struct></fault></methodResponse>";
+  std::string expected = "<?xml 
version=\"1.0\"?><methodResponse><fault><struct><member><name>faultCode</name><value><i8>-509</i8></value></member><member><name>faultString</name><value><string>Content
 size exceeds maximum XML-RPC 
limit</string></value></member></struct></fault></methodResponse>";
   std::string output;
   m_xmlrpc.set_size_limit(1);
   m_xmlrpc.process(input.c_str(), input.size(), [&output](const char* c, 
uint32_t l){ output.append(c, l); return true;});

Reply via email to