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-06-23 15:04:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rtorrent (Old)
 and      /work/SRC/openSUSE:Factory/.rtorrent.new.7067 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "rtorrent"

Mon Jun 23 15:04:48 2025 rev:18 rq:1287756 version:0.15.5

Changes:
--------
--- /work/SRC/openSUSE:Factory/rtorrent/rtorrent.changes        2025-06-02 
22:00:56.898185987 +0200
+++ /work/SRC/openSUSE:Factory/.rtorrent.new.7067/rtorrent.changes      
2025-06-23 15:06:00.971594473 +0200
@@ -1,0 +2,7 @@
+Sun Jun 22 20:26:01 UTC 2025 - Jan Engelhardt <jeng...@inai.de>
+
+- Update to release 0.15.5
+  * Fixed corrupted stack in curl stack due to wrong argument type.
+  * Fix file descriptor leak in session file saving.
+
+-------------------------------------------------------------------

Old:
----
  rtorrent-0.15.4.tar.gz

New:
----
  rtorrent-0.15.5.tar.gz

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

Other differences:
------------------
++++++ rtorrent.spec ++++++
--- /var/tmp/diff_new_pack.KgYOfG/_old  2025-06-23 15:06:03.323692601 +0200
+++ /var/tmp/diff_new_pack.KgYOfG/_new  2025-06-23 15:06:03.339693268 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           rtorrent
-Version:        0.15.4
+Version:        0.15.5
 Release:        0
 Summary:        Console-based BitTorrent client
 License:        SUSE-GPL-2.0+-with-openssl-exception
@@ -40,7 +40,7 @@
 BuildRequires:  update-desktop-files
 BuildRequires:  pkgconfig(cppunit) >= 1.9.6
 BuildRequires:  pkgconfig(libcurl) >= 7.15.4
-BuildRequires:  pkgconfig(libtorrent) >= 0.15.4
+BuildRequires:  pkgconfig(libtorrent) >= %version
 BuildRequires:  sysuser-tools
 Provides:       bundled(tinyxml2) = 10.0.0
 %sysusers_requires

++++++ _scmsync.obsinfo ++++++
--- /var/tmp/diff_new_pack.KgYOfG/_old  2025-06-23 15:06:03.711708788 +0200
+++ /var/tmp/diff_new_pack.KgYOfG/_new  2025-06-23 15:06:03.743710123 +0200
@@ -1,5 +1,5 @@
-mtime: 1748854700
-commit: cc7eb3f9b4de255eb48e122df6b1db1e9fdf9f002f888e0fc96c8ec6f3daf413
+mtime: 1750624182
+commit: 6f7f5705345badbf4f44fdab8316ddbf5488a0a40687f9d1c2b3f9fcadcc36ed
 url: https://src.opensuse.org/jengelh/rtorrent
 revision: master
 

++++++ build.specials.obscpio ++++++

++++++ rtorrent-0.15.4.tar.gz -> rtorrent-0.15.5.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rtorrent-0.15.4/configure 
new/rtorrent-0.15.5/configure
--- old/rtorrent-0.15.4/configure       2025-06-01 15:41:08.000000000 +0200
+++ new/rtorrent-0.15.5/configure       2025-06-22 18:25:49.000000000 +0200
@@ -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.4.
+# Generated by GNU Autoconf 2.72 for rtorrent 0.15.5.
 #
 # Report bugs to <sundell.softw...@gmail.com>.
 #
@@ -614,8 +614,8 @@
 # Identity of this package.
 PACKAGE_NAME='rtorrent'
 PACKAGE_TARNAME='rtorrent'
-PACKAGE_VERSION='0.15.4'
-PACKAGE_STRING='rtorrent 0.15.4'
+PACKAGE_VERSION='0.15.5'
+PACKAGE_STRING='rtorrent 0.15.5'
 PACKAGE_BUGREPORT='sundell.softw...@gmail.com'
 PACKAGE_URL=''
 
@@ -1422,7 +1422,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.4 to adapt to many kinds of systems.
+'configure' configures rtorrent 0.15.5 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1493,7 +1493,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of rtorrent 0.15.4:";;
+     short | recursive ) echo "Configuration of rtorrent 0.15.5:";;
    esac
   cat <<\_ACEOF
 
@@ -1651,7 +1651,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-rtorrent configure 0.15.4
+rtorrent configure 0.15.5
 generated by GNU Autoconf 2.72
 
 Copyright (C) 2023 Free Software Foundation, Inc.
@@ -2334,7 +2334,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.4, which was
+It was created by rtorrent $as_me 0.15.5, which was
 generated by GNU Autoconf 2.72.  Invocation command line was
 
   $ $0$ac_configure_args_raw
@@ -4027,7 +4027,7 @@
 
 # Define the identity of the package.
  PACKAGE='rtorrent'
- VERSION='0.15.4'
+ VERSION='0.15.5'
 
 
 printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@@ -23070,19 +23070,19 @@
 fi
 
 pkg_failed=no
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libtorrent >= 
0.15.4" >&5
-printf %s "checking for libtorrent >= 0.15.4... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libtorrent >= 
0.15.5" >&5
+printf %s "checking for libtorrent >= 0.15.5... " >&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.4\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "libtorrent >= 0.15.4") 2>&5
+    { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists 
--print-errors \"libtorrent >= 0.15.5\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "libtorrent >= 0.15.5") 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.4" 
2>/dev/null`
+  pkg_cv_DEPENDENCIES_CFLAGS=`$PKG_CONFIG --cflags "libtorrent >= 0.15.5" 
2>/dev/null`
                      test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
@@ -23094,12 +23094,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.4\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "libtorrent >= 0.15.4") 2>&5
+    { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists 
--print-errors \"libtorrent >= 0.15.5\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "libtorrent >= 0.15.5") 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.4" 
2>/dev/null`
+  pkg_cv_DEPENDENCIES_LIBS=`$PKG_CONFIG --libs "libtorrent >= 0.15.5" 
2>/dev/null`
                      test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
@@ -23120,14 +23120,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.4" 2>&1`
+                DEPENDENCIES_PKG_ERRORS=`$PKG_CONFIG --short-errors 
--print-errors --cflags --libs "libtorrent >= 0.15.5" 2>&1`
         else
-                DEPENDENCIES_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags 
--libs "libtorrent >= 0.15.4" 2>&1`
+                DEPENDENCIES_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags 
--libs "libtorrent >= 0.15.5" 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.4) were not 
met:
+        as_fn_error $? "Package requirements (libtorrent >= 0.15.5) were not 
met:
 
 $DEPENDENCIES_PKG_ERRORS
 
@@ -24762,7 +24762,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.4, which was
+This file was extended by rtorrent $as_me 0.15.5, which was
 generated by GNU Autoconf 2.72.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -24830,7 +24830,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config='$ac_cs_config_escaped'
 ac_cs_version="\\
-rtorrent config.status 0.15.4
+rtorrent config.status 0.15.5
 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.4/configure.ac 
new/rtorrent-0.15.5/configure.ac
--- old/rtorrent-0.15.4/configure.ac    2025-06-01 15:40:42.000000000 +0200
+++ new/rtorrent-0.15.5/configure.ac    2025-06-22 18:25:31.000000000 +0200
@@ -1,6 +1,6 @@
 m4_pattern_allow([PKG_CHECK_EXISTS])
 
-AC_INIT([rtorrent],[0.15.4],[sundell.softw...@gmail.com])
+AC_INIT([rtorrent],[0.15.5],[sundell.softw...@gmail.com])
 
 AC_CONFIG_HEADERS([config.h])
 AC_CONFIG_MACRO_DIRS([scripts])
@@ -54,7 +54,7 @@
 
 PKG_CHECK_MODULES([LIBCURL], [libcurl],, [LIBCURL_CHECK_CONFIG])
 PKG_CHECK_MODULES([CPPUNIT], [cppunit],, [no_cppunit="yes"])
-PKG_CHECK_MODULES([DEPENDENCIES], [libtorrent >= 0.15.4])
+PKG_CHECK_MODULES([DEPENDENCIES], [libtorrent >= 0.15.5])
 
 AC_LANG_PUSH(C++)
 TORRENT_WITH_XMLRPC_C
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rtorrent-0.15.4/src/core/curl_stack.cc 
new/rtorrent-0.15.5/src/core/curl_stack.cc
--- old/rtorrent-0.15.4/src/core/curl_stack.cc  2025-06-01 15:40:42.000000000 
+0200
+++ new/rtorrent-0.15.5/src/core/curl_stack.cc  2025-06-22 18:25:31.000000000 
+0200
@@ -233,10 +233,14 @@
 // TODO: Is this function supposed to set a per-handle timeout, or is
 // it the shortest timeout amongst all handles?
 int
-CurlStack::set_timeout([[maybe_unused]] void* handle, 
std::chrono::microseconds timeout, void* userp) {
+CurlStack::set_timeout(void*, long timeout_ms, void* userp) {
   CurlStack* stack = (CurlStack*)userp;
 
-  
torrent::this_thread::scheduler()->update_wait_for_ceil_seconds(&stack->m_task_timeout,
 timeout);
+  if (timeout_ms == -1)
+    torrent::this_thread::scheduler()->erase(&stack->m_task_timeout);
+  else
+    
torrent::this_thread::scheduler()->update_wait_for_ceil_seconds(&stack->m_task_timeout,
 std::chrono::milliseconds(timeout_ms));
+
   return 0;
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rtorrent-0.15.4/src/core/curl_stack.h 
new/rtorrent-0.15.5/src/core/curl_stack.h
--- old/rtorrent-0.15.4/src/core/curl_stack.h   2025-06-01 15:40:42.000000000 
+0200
+++ new/rtorrent-0.15.5/src/core/curl_stack.h   2025-06-22 18:25:31.000000000 
+0200
@@ -79,7 +79,7 @@
 
   void                receive_action(CurlSocket* socket, int type);
 
-  static int          set_timeout(void* handle, std::chrono::microseconds 
timeout, void* userp);
+  static int          set_timeout(void*, long timeout_ms, void* userp);
 
   void                transfer_done(void* handle, const char* msg);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rtorrent-0.15.4/src/core/download_store.cc 
new/rtorrent-0.15.5/src/core/download_store.cc
--- old/rtorrent-0.15.4/src/core/download_store.cc      2025-06-01 
15:40:43.000000000 +0200
+++ new/rtorrent-0.15.5/src/core/download_store.cc      2025-06-22 
18:25:31.000000000 +0200
@@ -100,9 +100,10 @@
 #else
     fdatasync(fd);
 #endif
-    ::close(fd);
   }
 
+  ::close(fd);
+
   return true;
 
 download_store_save_error:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rtorrent-0.15.4/src/rpc/exec_file.cc 
new/rtorrent-0.15.5/src/rpc/exec_file.cc
--- old/rtorrent-0.15.4/src/rpc/exec_file.cc    2025-06-01 15:40:43.000000000 
+0200
+++ new/rtorrent-0.15.5/src/rpc/exec_file.cc    2025-06-22 18:25:31.000000000 
+0200
@@ -1,6 +1,7 @@
 #include "config.h"
 
 #include <cerrno>
+#include <cstring>
 #include <fcntl.h>
 #include <string>
 #include <unistd.h>
@@ -18,7 +19,7 @@
 
 int
 ExecFile::execute(const char* file, char* const* argv, int flags) {
-  // Write the execued command and its parameters to the log fd.
+  // Write the executed command and its parameters to the log fd.
   [[maybe_unused]] int result;
 
   if (m_log_fd != -1) {
@@ -117,18 +118,23 @@
   }
 
   int status;
-  int wpid;
 
-  do {
-    wpid = waitpid(childPid, &status, 0);
-  } while (wpid == -1 && WIFEXITED(status) == 0);
-
-  if (wpid != childPid)
-    throw torrent::internal_error("ExecFile::execute(...) waitpid failed.");
+  while (waitpid(childPid, &status, 0) == -1) {
+    switch (errno) {
+    case EINTR:
+      continue;
+    case ECHILD:
+      throw torrent::internal_error("ExecFile::execute(...) waitpid failed 
with ECHILD, child process not found.");
+    case EINVAL:
+      throw torrent::internal_error("ExecFile::execute(...) waitpid failed 
with EINVAL.");
+    default:
+      throw torrent::internal_error("ExecFile::execute(...) waitpid failed 
with unexpected error: " + std::string(std::strerror(errno)));
+    }
+  };
 
   // Check return value?
   if (m_log_fd != -1) {
-    if (status == 0)
+    if (WIFEXITED(status) && WEXITSTATUS(status) == 0)
       result = write(m_log_fd, "\n--- Success ---\n", sizeof("\n--- Success 
---\n"));
     else
       result = write(m_log_fd, "\n--- Error ---\n", sizeof("\n--- Error 
---\n"));

Reply via email to