Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package liblo for openSUSE:Factory checked in at 2026-06-22 17:38:54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/liblo (Old) and /work/SRC/openSUSE:Factory/.liblo.new.1956 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "liblo" Mon Jun 22 17:38:54 2026 rev:28 rq:1361017 version:0.36 Changes: -------- --- /work/SRC/openSUSE:Factory/liblo/liblo.changes 2026-05-04 12:57:19.054864587 +0200 +++ /work/SRC/openSUSE:Factory/.liblo.new.1956/liblo.changes 2026-06-22 17:38:58.641812506 +0200 @@ -1,0 +2,6 @@ +Sat Jun 20 08:30:23 UTC 2026 - Martin Hauke <[email protected]> + +- Update to version 0.36 + * Fixed handling of connection closure for multiple TCP servers. + +------------------------------------------------------------------- Old: ---- liblo-0.35.tar.gz New: ---- liblo-0.36.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ liblo.spec ++++++ --- /var/tmp/diff_new_pack.8amNQb/_old 2026-06-22 17:38:59.461841182 +0200 +++ /var/tmp/diff_new_pack.8amNQb/_new 2026-06-22 17:38:59.461841182 +0200 @@ -19,7 +19,7 @@ %define lname liblo7 Name: liblo -Version: 0.35 +Version: 0.36 Release: 0 Summary: Open Sound Control implementation License: LGPL-2.1-or-later ++++++ liblo-0.35.tar.gz -> liblo-0.36.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liblo-0.35/ChangeLog new/liblo-0.36/ChangeLog --- old/liblo-0.35/ChangeLog 2026-04-30 22:30:53.000000000 +0200 +++ new/liblo-0.36/ChangeLog 2026-06-19 20:08:10.000000000 +0200 @@ -1,3 +1,6 @@ +2026-06-19 Stephen Sinclair <[email protected]> + * Fixed handling of connection closure for multiple TCP servers. + 2026-04-30 Stephen Sinclair <[email protected]> * Added Message::clear() * Added lo_bundle_clear() and lo_bundle_set_timestamp() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liblo-0.35/NEWS new/liblo-0.36/NEWS --- old/liblo-0.35/NEWS 2026-04-30 22:30:53.000000000 +0200 +++ new/liblo-0.36/NEWS 2026-06-19 20:08:10.000000000 +0200 @@ -1,4 +1,15 @@ -------------------------------------------- +2026-04-30: Release 0.36 +-------------------------------------------- + +This is a bug fix release. + +Changes of note since the 0.35 release: + +- Fixed handling of connection closure for multiple TCP servers. + + +-------------------------------------------- 2026-04-30: Release 0.35 -------------------------------------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liblo-0.35/configure new/liblo-0.36/configure --- old/liblo-0.35/configure 2026-04-30 22:31:13.000000000 +0200 +++ new/liblo-0.36/configure 2026-06-19 20:08:25.000000000 +0200 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for liblo 0.35. +# Generated by GNU Autoconf 2.71 for liblo 0.36. # # Report bugs to <[email protected]>. # @@ -621,8 +621,8 @@ # Identity of this package. PACKAGE_NAME='liblo' PACKAGE_TARNAME='liblo' -PACKAGE_VERSION='0.35' -PACKAGE_STRING='liblo 0.35' +PACKAGE_VERSION='0.36' +PACKAGE_STRING='liblo 0.36' PACKAGE_BUGREPORT='[email protected]' PACKAGE_URL='' @@ -1405,7 +1405,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 liblo 0.35 to adapt to many kinds of systems. +\`configure' configures liblo 0.36 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1476,7 +1476,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of liblo 0.35:";; + short | recursive ) echo "Configuration of liblo 0.36:";; esac cat <<\_ACEOF @@ -1602,7 +1602,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -liblo configure 0.35 +liblo configure 0.36 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -2044,7 +2044,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by liblo $as_me 0.35, which was +It was created by liblo $as_me 0.36, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -3555,7 +3555,7 @@ # Define the identity of the package. PACKAGE='liblo' - VERSION='0.35' + VERSION='0.36' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h @@ -3788,7 +3788,7 @@ -LO_SO_VERSION=14:0:7 +LO_SO_VERSION=14:1:7 LT_CURRENT_MINUS_AGE=7 @@ -3796,7 +3796,7 @@ -printf "%s\n" "#define LO_SO_VERSION {14, 0, 7}" >>confdefs.h +printf "%s\n" "#define LO_SO_VERSION {14, 1, 7}" >>confdefs.h # disable support for ipv6. @@ -19179,7 +19179,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by liblo $as_me 0.35, which was +This file was extended by liblo $as_me 0.36, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -19247,7 +19247,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -liblo config.status 0.35 +liblo config.status 0.36 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liblo-0.35/configure.ac new/liblo-0.36/configure.ac --- old/liblo-0.35/configure.ac 2026-04-30 22:30:53.000000000 +0200 +++ new/liblo-0.36/configure.ac 2026-06-19 20:08:10.000000000 +0200 @@ -1,6 +1,6 @@ AC_PREREQ([2.69]) -AC_INIT([liblo],[0.35],[[email protected]]) +AC_INIT([liblo],[0.36],[[email protected]]) # libtool version: current:revision:age # @@ -16,7 +16,7 @@ # If any interfaces have been removed since the last public release, then set # age to 0. m4_define([lt_current], 14) -m4_define([lt_revision], 0) +m4_define([lt_revision], 1) m4_define([lt_age], 7) m4_define([lt_version_info], [lt_current:lt_revision:lt_age]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liblo-0.35/libtool new/liblo-0.36/libtool --- old/liblo-0.35/libtool 2026-04-30 22:31:17.000000000 +0200 +++ new/liblo-0.36/libtool 2026-06-19 20:08:38.000000000 +0200 @@ -1,5 +1,5 @@ #! /bin/bash -# Generated automatically by config.status (liblo) 0.35 +# Generated automatically by config.status (liblo) 0.36 # NOTE: Changes made to this file will be lost: look at ltmain.sh. # Provide generalized library-building support services. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/liblo-0.35/src/server.c new/liblo-0.36/src/server.c --- old/liblo-0.35/src/server.c 2026-04-30 22:30:53.000000000 +0200 +++ new/liblo-0.36/src/server.c 2026-06-19 20:08:10.000000000 +0200 @@ -1405,7 +1405,7 @@ for (j = 0, k = 0; j < num_servers; j++) { for (i = 0; i < s[j]->sockets_len; i++) { sockets[k].fd = s[j]->sockets[i].fd; - sockets[k].events = POLLIN | POLLPRI | POLLERR | POLLHUP; + sockets[k].events = POLLIN | POLLPRI | POLLERR | POLLHUP | POLLNVAL; sockets[k].revents = s[j]->sockets[i].revents = 0; ++k; } @@ -1421,6 +1421,10 @@ else if (res) { for (j = 0, k = 0; j < num_servers; j++) { if (s[j]->protocol == LO_TCP) { + // Keep length of sockets array for this server since we modify it below, + // as it is needed for moving to the next server. + int sockets_len = s[j]->sockets_len; + if (sockets[k].revents & (POLLIN | POLLPRI)) { // If poll() was reporting a new connection on the listening // socket rather than a ready message, accept it and check again. @@ -1453,24 +1457,39 @@ * deleting a socket, since deleting sockets doesn't affect the * order of the array to the left of the index. */ - for (i = s[j]->sockets_len - 1, k += i; i > 0; i--, k--) { + for (i = sockets_len - 1, k += i; i > 0; i--, k--) { if (!sockets[k].revents) continue; - if (sockets[k].revents & (POLLERR | POLLHUP)) { + if (sockets[k].revents & (POLLERR | POLLHUP | POLLNVAL)) { closesocket(sockets[k].fd); lo_server_del_socket(s[j], i, sockets[k].fd); } - else { + else if (sockets[k].revents & (POLLIN | POLLPRI)) { s[j]->sockets[i].revents = POLLIN; recvd[j] = 1; } } - k += s[j]->sockets_len; + k += sockets_len; } else { - if (sockets[k].revents) { - s[j]->sockets[0].revents = POLLIN; - recvd[j] = 1; + if (sockets[k].revents & (POLLNVAL | POLLHUP)) { + // Fatal error + if (sockets[k].fd != -1) { + closesocket(sockets[k].fd); + } + s[j]->sockets[0].fd = -1; + } + else { + if (sockets[k].revents & POLLERR) { + // Clear the error by reading SO_ERROR + int err = 0; + socklen_t errlen = sizeof(err); + getsockopt(sockets[k].fd, SOL_SOCKET, SO_ERROR, (char*)&err, &errlen); + } + if (sockets[k].revents & (POLLIN | POLLPRI)) { + s[j]->sockets[0].revents = POLLIN; + recvd[j] = 1; + } } ++k; }
