Hello community, here is the log from the commit of package soapy-remote for openSUSE:Factory checked in at 2019-01-28 20:49:47 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/soapy-remote (Old) and /work/SRC/openSUSE:Factory/.soapy-remote.new.28833 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "soapy-remote" Mon Jan 28 20:49:47 2019 rev:4 rq:669029 version:0.5.1 Changes: -------- --- /work/SRC/openSUSE:Factory/soapy-remote/soapy-remote.changes 2018-11-12 09:45:01.860863657 +0100 +++ /work/SRC/openSUSE:Factory/.soapy-remote.new.28833/soapy-remote.changes 2019-01-28 20:50:37.269767475 +0100 @@ -1,0 +2,15 @@ +Mon Jan 28 10:21:04 UTC 2019 - Jan Engelhardt <[email protected]> + +- Use noun phrase in descriptions. + +------------------------------------------------------------------- +Sun Jan 27 09:30:08 UTC 2019 - Wojciech Kazubski <[email protected]> + +- Update to version 0.5.1 + * Fix SoapyLogAcceptor not closing sockets on shutdown + * Report socket creation errors within SoapyRPCSocket + * MDNS timeout for OSX when no servers are available + * Added explicit compile flags for MSVC needed by common + * Compilation fixes for strerror_r API differences + +------------------------------------------------------------------- Old: ---- soapy-remote-0.5.0.tar.gz New: ---- soapy-remote-0.5.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ soapy-remote.spec ++++++ --- /var/tmp/diff_new_pack.B8DZs2/_old 2019-01-28 20:50:38.461766217 +0100 +++ /var/tmp/diff_new_pack.B8DZs2/_new 2019-01-28 20:50:38.461766217 +0100 @@ -1,7 +1,7 @@ # # spec file for package soapy-remote # -# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. # Copyright (c) 2017, Martin Hauke <[email protected]> # # All modifications and additions to the file contributed by third parties @@ -13,16 +13,17 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# Please submit bugfixes or comments via https://bugs.opensuse.org/ # + %define soapy_modver 0.7 %define soapy_modname soapysdr%{soapy_modver}-module-remote Name: soapy-remote -Version: 0.5.0 +Version: 0.5.1 Release: 0 -Summary: Use any Soapy SDR remotely +Summary: Remote device support for Soapy SDR License: BSL-1.0 Group: Productivity/Hamradio/Other Url: https://github.com/pothosware/SoapyRemote/wiki @@ -34,15 +35,13 @@ BuildRequires: pkgconfig(SoapySDR) %description -Soapy Remote - Remote device support for Soapy SDR. A Soapy module that supports remote devices within the Soapy API. %package -n %{soapy_modname} -Summary: Use any Soapy SDR remotely +Summary: Remote device support for Soapy SDR Group: System/Libraries %description -n %{soapy_modname} -Soapy Remote - Remote device support for Soapy SDR. A Soapy module that supports remote devices within the Soapy API. %prep ++++++ soapy-remote-0.5.0.tar.gz -> soapy-remote-0.5.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/SoapyRemote-soapy-remote-0.5.0/CMakeLists.txt new/SoapyRemote-soapy-remote-0.5.1/CMakeLists.txt --- old/SoapyRemote-soapy-remote-0.5.0/CMakeLists.txt 2018-10-25 05:45:39.000000000 +0200 +++ new/SoapyRemote-soapy-remote-0.5.1/CMakeLists.txt 2019-01-26 19:21:42.000000000 +0100 @@ -52,11 +52,26 @@ endif(CMAKE_COMPILER_IS_GNUCXX) +#link threads in freebsd +if(CMAKE_SYSTEM_NAME MATCHES "FreeBSD") + find_package(Threads) + message(STATUS "CMAKE_THREAD_LIBS_INIT: ${CMAKE_THREAD_LIBS_INIT}") + list(APPEND SoapySDR_LIBRARIES ${CMAKE_THREAD_LIBS_INIT}) +endif() + #enable c++11 extensions for OSX if (APPLE) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x -Wc++11-extensions") endif(APPLE) +if(MSVC) + #we always want to use multiple cores for compilation + add_compile_options(/MP) + + #projects should be cross-platform and standard stl functions should work + add_definitions(-DNOMINMAX) #enables std::min and std::max +endif() + #common headers used by client and server include_directories(${CMAKE_CURRENT_SOURCE_DIR}/common) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/SoapyRemote-soapy-remote-0.5.0/Changelog.txt new/SoapyRemote-soapy-remote-0.5.1/Changelog.txt --- old/SoapyRemote-soapy-remote-0.5.0/Changelog.txt 2018-10-25 05:45:39.000000000 +0200 +++ new/SoapyRemote-soapy-remote-0.5.1/Changelog.txt 2019-01-26 19:21:42.000000000 +0100 @@ -1,3 +1,12 @@ +Release 0.5.1 (2019-01-26) +========================== + +- Fix SoapyLogAcceptor not closing sockets on shutdown +- Report socket creation errors within SoapyRPCSocket +- MDNS timeout for OSX when no servers are available +- Added explicit compile flags for MSVC needed by common +- Compilation fixes for strerror_r API differences + Release 0.5.0 (2018-10-24) ========================== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/SoapyRemote-soapy-remote-0.5.0/client/LogAcceptor.cpp new/SoapyRemote-soapy-remote-0.5.1/client/LogAcceptor.cpp --- old/SoapyRemote-soapy-remote-0.5.0/client/LogAcceptor.cpp 2018-10-25 05:45:39.000000000 +0200 +++ new/SoapyRemote-soapy-remote-0.5.1/client/LogAcceptor.cpp 2019-01-26 19:21:42.000000000 +0100 @@ -1,4 +1,4 @@ -// Copyright (c) 2015-2018 Josh Blum +// Copyright (c) 2015-2019 Josh Blum // SPDX-License-Identifier: BSL-1.0 #include "LogAcceptor.hpp" @@ -32,7 +32,7 @@ ~LogAcceptorThreadData(void) { - this->shutdown(); + if (thread != nullptr) this->shutdown(); } void activate(void); @@ -103,7 +103,7 @@ done = true; thread->join(); delete thread; - client = SoapyRPCSocket(); + client.close(); } void LogAcceptorThreadData::handlerLoop(void) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/SoapyRemote-soapy-remote-0.5.0/common/CMakeLists.txt new/SoapyRemote-soapy-remote-0.5.1/common/CMakeLists.txt --- old/SoapyRemote-soapy-remote-0.5.0/common/CMakeLists.txt 2018-10-25 05:45:39.000000000 +0200 +++ new/SoapyRemote-soapy-remote-0.5.1/common/CMakeLists.txt 2019-01-26 19:21:42.000000000 +0100 @@ -41,6 +41,13 @@ CHECK_INCLUDE_FILES(net/if.h HAS_NET_IF_H) CHECK_INCLUDE_FILES(fcntl.h HAS_FCNTL_H) +include(CheckCXXSourceCompiles) +CHECK_CXX_SOURCE_COMPILES("#include <cstring> +int main(void){return strerror_r(0, NULL, 0);}" STRERROR_R_XSI) +if (STRERROR_R_XSI) + add_definitions(-DSTRERROR_R_XSI) +endif () + #network libraries if (WIN32) list(APPEND SoapySDR_LIBRARIES ws2_32) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/SoapyRemote-soapy-remote-0.5.0/common/SoapyMDNSEndpointApple.cpp new/SoapyRemote-soapy-remote-0.5.1/common/SoapyMDNSEndpointApple.cpp --- old/SoapyRemote-soapy-remote-0.5.0/common/SoapyMDNSEndpointApple.cpp 2018-10-25 05:45:39.000000000 +0200 +++ new/SoapyRemote-soapy-remote-0.5.1/common/SoapyMDNSEndpointApple.cpp 2019-01-26 19:21:42.000000000 +0100 @@ -6,6 +6,7 @@ #include <SoapySDR/Logger.hpp> #include "SoapyURLUtils.hpp" #include <dns_sd.h> +#include <cerrno> #include <cstdlib> //atoi /*********************************************************************** @@ -222,7 +223,31 @@ else DNSServiceProcessResult(sdRef); } -std::map<std::string, std::map<int, std::string>> SoapyMDNSEndpoint::getServerURLs(const int ipVer, const long) +static bool waitDNSServiceRef(DNSServiceRef sdRef, const long timeoutUs) +{ + //get the underlying Unix domain socket for timeout + auto sock = DNSServiceRefSockFD(sdRef); + if (sock == -1) + { + SoapySDR::logf(SOAPY_SDR_ERROR, "DNSServiceRefSockFD() failed %d", sock); + return false; + } + + struct timeval tv; + tv.tv_sec = timeoutUs / 1000000; + tv.tv_usec = timeoutUs % 1000000; + + fd_set readfds; + FD_ZERO(&readfds); + FD_SET(sock, &readfds); + + const int ret = ::select(sock+1, &readfds, NULL, NULL, &tv); + if (ret == 0) SoapySDR::logf(SOAPY_SDR_DEBUG, "select(DNSServiceRefSockFD()) timeout"); + if (ret == -1) SoapySDR::logf(SOAPY_SDR_ERROR, "select(DNSServiceRefSockFD()) failed %d", errno); + return ret == 1; +} + +std::map<std::string, std::map<int, std::string>> SoapyMDNSEndpoint::getServerURLs(const int ipVer, const long timeoutUs) { SoapyMDNSBrowseResult result; result.ipVerRequest = ipVer; @@ -238,7 +263,7 @@ if (ret != kDNSServiceErr_NoError) SoapySDR::logf( SOAPY_SDR_ERROR, "DNSServiceBrowse() failed %d", ret); - else DNSServiceProcessResult(sdRef); + else if (waitDNSServiceRef(sdRef, timeoutUs)) DNSServiceProcessResult(sdRef); DNSServiceRefDeallocate(sdRef); return result.serverURLs; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/SoapyRemote-soapy-remote-0.5.0/common/SoapyRPCSocket.cpp new/SoapyRemote-soapy-remote-0.5.1/common/SoapyRPCSocket.cpp --- old/SoapyRemote-soapy-remote-0.5.0/common/SoapyRPCSocket.cpp 2018-10-25 05:45:39.000000000 +0200 +++ new/SoapyRemote-soapy-remote-0.5.1/common/SoapyRPCSocket.cpp 2019-01-26 19:21:42.000000000 +0100 @@ -1,4 +1,4 @@ -// Copyright (c) 2015-2018 Josh Blum +// Copyright (c) 2015-2019 Josh Blum // SPDX-License-Identifier: BSL-1.0 #include "SoapySocketDefs.hpp" @@ -128,7 +128,11 @@ } if (this->null()) _sock = ::socket(addr.addr()->sa_family, urlObj.getType(), 0); - if (this->null()) return -1; + if (this->null()) + { + this->reportError("socket("+url+")"); + return -1; + } //setup reuse address int one = 1; @@ -184,7 +188,11 @@ } if (this->null()) _sock = ::socket(addr.addr()->sa_family, urlObj.getType(), 0); - if (this->null()) return -1; + if (this->null()) + { + this->reportError("socket("+url+")"); + return -1; + } if (urlObj.getType() == SOCK_STREAM) this->setDefaultTcpSockOpts(); int ret = ::connect(_sock, addr.addr(), addr.addrlen()); @@ -204,7 +212,11 @@ } if (this->null()) _sock = ::socket(addr.addr()->sa_family, urlObj.getType(), 0); - if (this->null()) return -1; + if (this->null()) + { + this->reportError("socket("+url+")"); + return -1; + } if (urlObj.getType() == SOCK_STREAM) this->setDefaultTcpSockOpts(); //enable non blocking @@ -298,7 +310,11 @@ //create socket if null if (this->null()) _sock = ::socket(addr.addr()->sa_family, SOCK_DGRAM, 0); - if (this->null()) return -1; + if (this->null()) + { + this->reportError("socket("+group+")"); + return -1; + } int ret = 0; int loopInt = loop?1:0; @@ -496,7 +512,7 @@ return buff; #else //http://linux.die.net/man/3/strerror_r - #if ((_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) && ! _GNU_SOURCE) || __APPLE__ + #ifdef STRERROR_R_XSI strerror_r(err, buff, sizeof(buff)); #else //this version may decide to use its own internal string diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/SoapyRemote-soapy-remote-0.5.0/debian/changelog new/SoapyRemote-soapy-remote-0.5.1/debian/changelog --- old/SoapyRemote-soapy-remote-0.5.0/debian/changelog 2018-10-25 05:45:39.000000000 +0200 +++ new/SoapyRemote-soapy-remote-0.5.1/debian/changelog 2019-01-26 19:21:42.000000000 +0100 @@ -1,3 +1,9 @@ +soapyremote (0.5.1-1) unstable; urgency=low + + * Release 0.5.1 (2019-01-26) + + -- Josh Blum <[email protected]> Sat, 26 Jan 2019 12:21:39 -0000 + soapyremote (0.5.0-1) unstable; urgency=low * Release 0.5.0 (2018-10-24) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/SoapyRemote-soapy-remote-0.5.0/debian/control new/SoapyRemote-soapy-remote-0.5.1/debian/control --- old/SoapyRemote-soapy-remote-0.5.0/debian/control 2018-10-25 05:45:39.000000000 +0200 +++ new/SoapyRemote-soapy-remote-0.5.1/debian/control 2019-01-26 19:21:42.000000000 +0100 @@ -1,5 +1,5 @@ Source: soapyremote -Section: libs +Section: hamradio Priority: optional Maintainer: Josh Blum <[email protected]> Build-Depends: @@ -16,21 +16,34 @@ Architecture: any Multi-Arch: same Depends: ${shlibs:Depends}, ${misc:Depends}, avahi-daemon -Description: Soapy Remote - Remote device support for Soapy SDR. - A Soapy module that supports remote devices within the Soapy API. +Description: Use SoapySDR devices over network (client module) + The SoapyRemote project provides a client module and a server that make it + possible on the client side to list and access hardware supported by SoapySDR + modules on the server as if they were local modules. + . + This package contains the client module. Package: soapysdr-module-remote Architecture: all Depends: soapysdr0.7-module-remote, ${misc:Depends} -Description: Soapy Remote - Remote device support for Soapy SDR. - A Soapy module that supports remote devices within the Soapy API. +Description: Use SoapySDR devices over network (default client module) + The SoapyRemote project provides a client module and a server that make it + possible on the client side to list and access hardware supported by SoapySDR + modules on the server as if they were local modules. . - This is an empty dependency package that pulls in the remote module - for the default version of libsoapysdr. + This is an empty dependency package that pulls in the client module for the + default version of libsoapysdr. Package: soapysdr-server Section: libs Architecture: any +Conflicts: soapyremote-server +Replaces: soapyremote-server +Provides: soapyremote-server Depends: ${shlibs:Depends}, ${misc:Depends}, init-system-helpers, avahi-daemon -Description: Soapy Remote - Remote device support for Soapy SDR. - The SoapySDRServer server application for remote devices. +Description: Use SoapySDR devices over network (server) + The SoapyRemote project provides a client module and a server that make it + possible on the client side to list and access hardware supported by SoapySDR + modules on the server as if they were local modules. + . + This package contains the server. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/SoapyRemote-soapy-remote-0.5.0/debian/copyright new/SoapyRemote-soapy-remote-0.5.1/debian/copyright --- old/SoapyRemote-soapy-remote-0.5.0/debian/copyright 2018-10-25 05:45:39.000000000 +0200 +++ new/SoapyRemote-soapy-remote-0.5.1/debian/copyright 2019-01-26 19:21:42.000000000 +0100 @@ -4,7 +4,7 @@ Files: * Copyright: - Copyright (c) 2015-2018 Josh Blum <[email protected]> + Copyright (c) 2015-2019 Josh Blum <[email protected]> Copyright (c) 2016-2016 Bastille Networks License: BSL-1.0 Boost Software License - Version 1.0 - August 17th, 2003 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/SoapyRemote-soapy-remote-0.5.0/server/ServerStreamData.cpp new/SoapyRemote-soapy-remote-0.5.1/server/ServerStreamData.cpp --- old/SoapyRemote-soapy-remote-0.5.0/server/ServerStreamData.cpp 2018-10-25 05:45:39.000000000 +0200 +++ new/SoapyRemote-soapy-remote-0.5.1/server/ServerStreamData.cpp 2019-01-26 19:21:42.000000000 +0100 @@ -127,6 +127,11 @@ endpoint->writeStatus(ret, chanMask, flags, timeNs); break; //discard after error, this may have been invalid flags or time } + if (elemsLeft < (size_t)ret) + { + SoapySDR_logf(SOAPY_SDR_ERROR, "Server-side receive endpoint: device->writeStream wrote more elements than requested"); + break; //stop after error + } elemsLeft -= ret; incrementBuffs(buffs, ret, elemSize); if (elemsLeft == 0) break;
