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