Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package rtorrent for openSUSE:Factory 
checked in at 2026-03-16 14:18:06
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rtorrent (Old)
 and      /work/SRC/openSUSE:Factory/.rtorrent.new.8177 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "rtorrent"

Mon Mar 16 14:18:06 2026 rev:27 rq:1339300 version:0.16.8

Changes:
--------
--- /work/SRC/openSUSE:Factory/rtorrent/rtorrent.changes        2026-03-04 
21:11:07.791099785 +0100
+++ /work/SRC/openSUSE:Factory/.rtorrent.new.8177/rtorrent.changes      
2026-03-16 14:21:23.411405589 +0100
@@ -1,0 +2,6 @@
+Mon Mar 16 07:13:29 UTC 2026 - Jan Engelhardt <[email protected]>
+
+- Update to release 0.16.8
+  * Fixed various SCGI issues.
+
+-------------------------------------------------------------------

Old:
----
  rtorrent-0.16.7.tar.gz

New:
----
  rtorrent-0.16.8.tar.gz

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

Other differences:
------------------
++++++ rtorrent.spec ++++++
--- /var/tmp/diff_new_pack.8oDT5M/_old  2026-03-16 14:21:23.883425216 +0100
+++ /var/tmp/diff_new_pack.8oDT5M/_new  2026-03-16 14:21:23.883425216 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           rtorrent
-Version:        0.16.7
+Version:        0.16.8
 Release:        0
 Summary:        Console-based BitTorrent client
 License:        SUSE-GPL-2.0+-with-openssl-exception

++++++ _scmsync.obsinfo ++++++
--- /var/tmp/diff_new_pack.8oDT5M/_old  2026-03-16 14:21:23.915426547 +0100
+++ /var/tmp/diff_new_pack.8oDT5M/_new  2026-03-16 14:21:23.919426714 +0100
@@ -1,5 +1,5 @@
-mtime: 1772630835
-commit: e17dda0be227aafafa6122dc91f777bb2bbf4bbb3ccd1a79ea497bc7b29a46c4
+mtime: 1773653033
+commit: 327ebbbfdc243b23a33c29682bee8a4bb249dfd98cf37832edc02d065bce5495
 url: https://src.opensuse.org/jengelh/rtorrent
 revision: master
 

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

++++++ build.specials.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/.gitignore new/.gitignore
--- old/.gitignore      1970-01-01 01:00:00.000000000 +0100
+++ new/.gitignore      2026-03-16 10:24:02.000000000 +0100
@@ -0,0 +1 @@
+.osc

++++++ rtorrent-0.16.7.tar.gz -> rtorrent-0.16.8.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rtorrent-0.16.7/configure 
new/rtorrent-0.16.8/configure
--- old/rtorrent-0.16.7/configure       2026-03-04 11:49:24.000000000 +0100
+++ new/rtorrent-0.16.8/configure       2026-03-15 18:07:03.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.16.7.
+# Generated by GNU Autoconf 2.72 for rtorrent 0.16.8.
 #
 # Report bugs to <[email protected]>.
 #
@@ -614,8 +614,8 @@
 # Identity of this package.
 PACKAGE_NAME='rtorrent'
 PACKAGE_TARNAME='rtorrent'
-PACKAGE_VERSION='0.16.7'
-PACKAGE_STRING='rtorrent 0.16.7'
+PACKAGE_VERSION='0.16.8'
+PACKAGE_STRING='rtorrent 0.16.8'
 PACKAGE_BUGREPORT='[email protected]'
 PACKAGE_URL=''
 
@@ -1410,7 +1410,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.16.7 to adapt to many kinds of systems.
+'configure' configures rtorrent 0.16.8 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1481,7 +1481,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of rtorrent 0.16.7:";;
+     short | recursive ) echo "Configuration of rtorrent 0.16.8:";;
    esac
   cat <<\_ACEOF
 
@@ -1628,7 +1628,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-rtorrent configure 0.16.7
+rtorrent configure 0.16.8
 generated by GNU Autoconf 2.72
 
 Copyright (C) 2023 Free Software Foundation, Inc.
@@ -2257,7 +2257,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.16.7, which was
+It was created by rtorrent $as_me 0.16.8, which was
 generated by GNU Autoconf 2.72.  Invocation command line was
 
   $ $0$ac_configure_args_raw
@@ -3950,7 +3950,7 @@
 
 # Define the identity of the package.
  PACKAGE='rtorrent'
- VERSION='0.16.7'
+ VERSION='0.16.8'
 
 
 printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@@ -21553,19 +21553,19 @@
 fi
 
 pkg_failed=no
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libtorrent >= 
0.16.7" >&5
-printf %s "checking for libtorrent >= 0.16.7... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libtorrent >= 
0.16.8" >&5
+printf %s "checking for libtorrent >= 0.16.8... " >&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.16.7\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "libtorrent >= 0.16.7") 2>&5
+    { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists 
--print-errors \"libtorrent >= 0.16.8\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "libtorrent >= 0.16.8") 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.16.7" 
2>/dev/null`
+  pkg_cv_DEPENDENCIES_CFLAGS=`$PKG_CONFIG --cflags "libtorrent >= 0.16.8" 
2>/dev/null`
                      test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
@@ -21577,12 +21577,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.16.7\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "libtorrent >= 0.16.7") 2>&5
+    { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists 
--print-errors \"libtorrent >= 0.16.8\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "libtorrent >= 0.16.8") 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.16.7" 
2>/dev/null`
+  pkg_cv_DEPENDENCIES_LIBS=`$PKG_CONFIG --libs "libtorrent >= 0.16.8" 
2>/dev/null`
                      test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
@@ -21603,14 +21603,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.16.7" 2>&1`
+                DEPENDENCIES_PKG_ERRORS=`$PKG_CONFIG --short-errors 
--print-errors --cflags --libs "libtorrent >= 0.16.8" 2>&1`
         else
-                DEPENDENCIES_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags 
--libs "libtorrent >= 0.16.7" 2>&1`
+                DEPENDENCIES_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags 
--libs "libtorrent >= 0.16.8" 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.16.7) were not 
met:
+        as_fn_error $? "Package requirements (libtorrent >= 0.16.8) were not 
met:
 
 $DEPENDENCIES_PKG_ERRORS
 
@@ -23202,7 +23202,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.16.7, which was
+This file was extended by rtorrent $as_me 0.16.8, which was
 generated by GNU Autoconf 2.72.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -23270,7 +23270,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config='$ac_cs_config_escaped'
 ac_cs_version="\\
-rtorrent config.status 0.16.7
+rtorrent config.status 0.16.8
 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.16.7/configure.ac 
new/rtorrent-0.16.8/configure.ac
--- old/rtorrent-0.16.7/configure.ac    2026-03-04 11:39:56.000000000 +0100
+++ new/rtorrent-0.16.8/configure.ac    2026-03-15 17:58:09.000000000 +0100
@@ -1,6 +1,6 @@
 m4_pattern_allow([PKG_CHECK_EXISTS])
 
-AC_INIT([rtorrent],[0.16.7],[[email protected]])
+AC_INIT([rtorrent],[0.16.8],[[email protected]])
 
 AC_CONFIG_HEADERS([config.h])
 AC_CONFIG_MACRO_DIRS([scripts])
@@ -48,7 +48,7 @@
 fi
 
 PKG_CHECK_MODULES([CPPUNIT], [cppunit],, [no_cppunit="yes"])
-PKG_CHECK_MODULES([DEPENDENCIES], [libtorrent >= 0.16.7])
+PKG_CHECK_MODULES([DEPENDENCIES], [libtorrent >= 0.16.8])
 
 AC_LANG_PUSH(C++)
 TORRENT_WITH_XMLRPC_C
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rtorrent-0.16.7/src/rpc/scgi.cc 
new/rtorrent-0.16.8/src/rpc/scgi.cc
--- old/rtorrent-0.16.7/src/rpc/scgi.cc 2026-03-04 11:39:56.000000000 +0100
+++ new/rtorrent-0.16.8/src/rpc/scgi.cc 2026-03-15 17:58:09.000000000 +0100
@@ -1,5 +1,6 @@
 #include "config.h"
 
+#include <algorithm>
 #include <cassert>
 #include <unistd.h>
 #include <sys/un.h>
@@ -20,6 +21,12 @@
 
 namespace rpc {
 
+SCgi::SCgi() {
+  std::generate(m_tasks.begin(), m_tasks.end(), []() { return 
std::make_unique<SCgiTask>(); });
+
+  m_current = m_tasks.begin();
+}
+
 SCgi::~SCgi() {
   assert(!is_open() && "SCgi::~SCgi() called while open");
 }
@@ -106,9 +113,10 @@
   if (!is_open())
     return;
 
-  for (SCgiTask* itr = m_task, *last = m_task + max_tasks; itr != last; ++itr)
+  for (auto& itr : m_tasks) {
     if (itr->is_open())
       itr->close();
+  }
 
   torrent::runtime::socket_manager()->close_event_or_throw(this, [this]() {
       torrent::this_thread::poll()->remove_and_close(this);
@@ -125,10 +133,19 @@
 
 void
 SCgi::event_read() {
+  if (m_current < m_tasks.begin() || m_current >= m_tasks.end())
+    throw torrent::internal_error("SCgi::event_read() m_current is out of 
bounds");
+
   while (true) {
-    auto* task = std::find_if(m_task, m_task + max_tasks, 
std::mem_fn(&SCgiTask::is_available));
+    // TODO: Optimize this by keeping track of count.
+    auto prev = m_current;
 
-    if (task == m_task + max_tasks) {
+    m_current = std::find_if(m_current + 1, m_tasks.end(), [](const auto& 
task) { return !task->is_open(); });
+
+    if (m_current == m_tasks.end())
+      m_current = std::find_if(m_tasks.begin(), prev, [](const auto& task) { 
return !task->is_open(); });
+
+    if (m_current == prev) {
       // TODO: Currently just close, although we should remove ourselves from 
read.
       int fd = torrent::fd_accept(file_descriptor());
 
@@ -138,11 +155,15 @@
       continue;
     }
 
-    auto open_func = [this, task]() {
+    auto open_func = [this, task = m_current->get()]() {
         int fd = torrent::fd_accept(file_descriptor());
 
         if (fd == -1) {
-          if (errno == EAGAIN || errno == EWOULDBLOCK)
+          if (errno == EAGAIN || errno == EWOULDBLOCK || errno == EINTR)
+            return;
+
+          // Force a new event_read() call just to be sure we don't enter an 
infinite loop.
+          if (errno == ECONNABORTED)
             return;
 
           throw torrent::resource_error("Listener port accept() failed: " + 
std::string(std::strerror(errno)));
@@ -151,11 +172,11 @@
         task->open(this, fd);
       };
 
-    auto cleanup_func = [task]() {
+    auto cleanup_func = [task = m_current->get()]() {
         task->cancel_open();
       };
 
-    bool result = 
torrent::runtime::socket_manager()->open_event_or_cleanup(task, open_func, 
cleanup_func);
+    bool result = 
torrent::runtime::socket_manager()->open_event_or_cleanup(m_current->get(), 
open_func, cleanup_func);
 
     if (!result)
       break;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rtorrent-0.16.7/src/rpc/scgi.h 
new/rtorrent-0.16.8/src/rpc/scgi.h
--- old/rtorrent-0.16.7/src/rpc/scgi.h  2026-03-04 11:39:56.000000000 +0100
+++ new/rtorrent-0.16.8/src/rpc/scgi.h  2026-03-15 17:58:09.000000000 +0100
@@ -1,7 +1,9 @@
 #ifndef RTORRENT_RPC_SCGI_H
 #define RTORRENT_RPC_SCGI_H
 
+#include <array>
 #include <functional>
+#include <memory>
 #include <torrent/event.h>
 
 #include "rpc/scgi_task.h"
@@ -12,6 +14,7 @@
 public:
   static const int max_tasks = 100;
 
+  SCgi();
   ~SCgi() override;
 
   const char*         type_name() const override { return "scgi"; }
@@ -33,11 +36,15 @@
   void                event_error() override;
 
 private:
+  using task_list = std::array<std::unique_ptr<SCgiTask>, max_tasks>;
+
   void                open(sockaddr* sa, unsigned int length);
 
   std::string         m_path;
   int                 m_logFd{-1};
-  SCgiTask            m_task[max_tasks];
+
+  task_list           m_tasks;
+  task_list::iterator m_current;
 };
 
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rtorrent-0.16.7/src/rpc/scgi_task.cc 
new/rtorrent-0.16.8/src/rpc/scgi_task.cc
--- old/rtorrent-0.16.7/src/rpc/scgi_task.cc    2026-03-04 11:39:56.000000000 
+0100
+++ new/rtorrent-0.16.8/src/rpc/scgi_task.cc    2026-03-15 17:58:09.000000000 
+0100
@@ -43,12 +43,10 @@
   if (!is_open())
     return;
 
-  torrent::runtime::socket_manager()->close_event_or_throw(this, [this]() {
-      torrent::this_thread::poll()->remove_and_close(this);
+  torrent::this_thread::poll()->remove_and_close(this);
 
-      torrent::fd_close(file_descriptor());
-      set_file_descriptor(-1);
-    });
+  torrent::fd_close(file_descriptor());
+  set_file_descriptor(-1);
 };
 
 void

Reply via email to