[OpenWrt-Devel] [PATCH] iperf: update to version 2.0.13

Hauke Mehrtens hauke at hauke-m.de
Sat May 11 15:21:36 PDT 2019


The removed patchesd are already inteagrted in the upstream version.

Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
 package/network/utils/iperf/Makefile          |   6 +-
 ...n-signal-handling-per-POSIX-calling-.patch |  43 -----
 ...rtup-fix-daemon-mode-per-redirecting.patch | 161 ------------------
 .../patches/0003-fix-non-ipv6-builds.patch    |  16 +-
 4 files changed, 10 insertions(+), 216 deletions(-)
 delete mode 100644 package/network/utils/iperf/patches/0001-fix-latent-bug-in-signal-handling-per-POSIX-calling-.patch
 delete mode 100644 package/network/utils/iperf/patches/0002-cleanup-main-startup-fix-daemon-mode-per-redirecting.patch

diff --git a/package/network/utils/iperf/Makefile b/package/network/utils/iperf/Makefile
index 383eb07949..33d00b43d7 100644
--- a/package/network/utils/iperf/Makefile
+++ b/package/network/utils/iperf/Makefile
@@ -8,11 +8,11 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=iperf
-PKG_VERSION:=2.0.12
-PKG_RELEASE:=3
+PKG_VERSION:=2.0.13
+PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_HASH:=367f651fb1264b13f6518e41b8a7e08ce3e41b2a1c80e99ff0347561eed32646
+PKG_HASH:=c88adec966096a81136dda91b4bd19c27aae06df4d45a7f547a8e50d723778ad
 PKG_SOURCE_URL:=@SF/iperf2
 
 PKG_MAINTAINER:=Felix Fietkau <nbd at nbd.name>
diff --git a/package/network/utils/iperf/patches/0001-fix-latent-bug-in-signal-handling-per-POSIX-calling-.patch b/package/network/utils/iperf/patches/0001-fix-latent-bug-in-signal-handling-per-POSIX-calling-.patch
deleted file mode 100644
index a713e06b96..0000000000
--- a/package/network/utils/iperf/patches/0001-fix-latent-bug-in-signal-handling-per-POSIX-calling-.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 7c0ac64ebea38d0d9ff4d160db4d33bc087a3490 Mon Sep 17 00:00:00 2001
-From: Robert McMahon <rjmcmahon at rjmcmahon.com>
-Date: Mon, 16 Jul 2018 17:51:29 -0700
-Subject: [PATCH] fix latent bug in signal handling, per POSIX calling exit()
- in signal handler is not safe.  Use _exit() instead.  Also, detect the user
- signal SIGINT for the case of server needing two invocations to stop server
- threads.  Note: the server threads still need some work from graceful
- termination with a single ctrl-c
-
----
-
---- a/compat/signal.c
-+++ b/compat/signal.c
-@@ -171,7 +171,7 @@ void sig_exit( int inSigno ) {
-     static int num = 0;
-     if ( num++ == 0 ) {
-         fflush( 0 );
--        exit( 0 );
-+	_exit(0);
-     }
- } /* end sig_exit */
- 
---- a/src/main.cpp
-+++ b/src/main.cpp
-@@ -268,7 +268,7 @@ void Sig_Interupt( int inSigno ) {
-     // We try to not allow a single interrupt handled by multiple threads
-     // to completely kill the app so we save off the first thread ID
-     // then that is the only thread that can supply the next interrupt
--    if ( thread_equalid( sThread, thread_zeroid() ) ) {
-+    if ( (inSigno == SIGINT) && thread_equalid( sThread, thread_zeroid() ) ) {
-         sThread = thread_getid();
-     } else if ( thread_equalid( sThread, thread_getid() ) ) {
-         sig_exit( inSigno );
-@@ -420,9 +420,3 @@ VOID ServiceStop() {
- }
- 
- #endif
--
--
--
--
--
--
diff --git a/package/network/utils/iperf/patches/0002-cleanup-main-startup-fix-daemon-mode-per-redirecting.patch b/package/network/utils/iperf/patches/0002-cleanup-main-startup-fix-daemon-mode-per-redirecting.patch
deleted file mode 100644
index c8655c9142..0000000000
--- a/package/network/utils/iperf/patches/0002-cleanup-main-startup-fix-daemon-mode-per-redirecting.patch
+++ /dev/null
@@ -1,161 +0,0 @@
-From 755be8bdb48d2536e39d2d7cf84e8a8f86b8776f Mon Sep 17 00:00:00 2001
-From: Robert McMahon <rjmcmahon at rjmcmahon.com>
-Date: Sat, 6 Oct 2018 13:36:52 -0700
-Subject: [PATCH] cleanup main startup, fix daemon mode per redirecting stdin,
- stderr and stdout to /dev/null
-
----
-
---- a/src/main.cpp
-+++ b/src/main.cpp
-@@ -167,67 +167,7 @@ int main( int argc, char **argv ) {
-     Settings_ParseCommandLine( argc, argv, ext_gSettings );
- 
-     // Check for either having specified client or server
--    if ( ext_gSettings->mThreadMode == kMode_Client
--         || ext_gSettings->mThreadMode == kMode_Listener ) {
--#ifdef WIN32
--        // Start the server as a daemon
--        if ( isDaemon( ext_gSettings )) {
--	    if (ext_gSettings->mThreadMode == kMode_Listener) {
--		CmdInstallService(argc, argv);
--	    } else {
--		fprintf(stderr, "Client cannot be run as a daemon\n");
--	    }
--            return 0;
--        }
--
--        // Remove the Windows service if requested
--        if ( isRemoveService( ext_gSettings ) ) {
--            // remove the service
--            if ( CmdRemoveService() ) {
--                fprintf(stderr, "IPerf Service is removed.\n");
--                return 0;
--            }
--        }
--#else
--	if ( isDaemon( ext_gSettings ) ) {
--	    if (ext_gSettings->mThreadMode != kMode_Listener) {
--		fprintf(stderr, "Iperf client cannot be run as a daemon\n");
--		return 0;
--	    }
--	    if (daemon(1, 1) < 0) {
--	        perror("daemon");
--	    }
--	    fprintf( stderr, "Running Iperf Server as a daemon\n");
--	    fprintf( stderr, "The Iperf daemon process ID : %d\n",((int)getpid()));
--	    fclose(stdout);
--	    fclose(stderr);
--	    fclose(stdin);
--	}
--#endif
--        // initialize client(s)
--        if ( ext_gSettings->mThreadMode == kMode_Client ) {
--            client_init( ext_gSettings );
--        }
--
--#ifdef HAVE_THREAD
--        // start up the reporter and client(s) or listener
--        {
--            thread_Settings *into = NULL;
--            // Create the settings structure for the reporter thread
--            Settings_Copy( ext_gSettings, &into );
--            into->mThreadMode = kMode_Reporter;
--
--            // Have the reporter launch the client or listener
--            into->runNow = ext_gSettings;
--
--            // Start all the threads that are ready to go
--            thread_start( into );
--        }
--#else
--        // No need to make a reporter thread because we don't have threads
--        thread_start( ext_gSettings );
--#endif
--    } else {
-+    if ((ext_gSettings->mThreadMode != kMode_Client) && (ext_gSettings->mThreadMode != kMode_Listener)) {
-         // neither server nor client mode was specified
-         // print usage and exit
- 
-@@ -236,20 +176,75 @@ int main( int argc, char **argv ) {
-         // Starting in 2.0 to restart a previously defined service
-         // you must call iperf with "iperf -D" or using the environment variable
-         SERVICE_TABLE_ENTRY dispatchTable[] =
--        {
--            { (LPSTR)TEXT(SZSERVICENAME), (LPSERVICE_MAIN_FUNCTION)service_main},
--            { NULL, NULL}
--        };
-+	    {
-+		{ (LPSTR)TEXT(SZSERVICENAME), (LPSERVICE_MAIN_FUNCTION)service_main},
-+		{ NULL, NULL}
-+	    };
- 
- 	// starting the service by SCM, there is no arguments will be passed in.
- 	// the arguments will pass into Service_Main entry.
-         if (!StartServiceCtrlDispatcher(dispatchTable) )
-             // If the service failed to start then print usage
- #endif
--        fprintf( stderr, usage_short, argv[0], argv[0] );
-+	    fprintf( stderr, usage_short, argv[0], argv[0] );
-+	return 0;
-+    }
-+
-+
-+    switch (ext_gSettings->mThreadMode) {
-+    case kMode_Client :
-+	if ( isDaemon( ext_gSettings ) ) {
-+	    fprintf(stderr, "Iperf client cannot be run as a daemon\n");
-+	    return 0;
-+	}
-+        // initialize client(s)
-+        client_init( ext_gSettings );
-+	break;
-+    case kMode_Listener :
-+	if ( isDaemon( ext_gSettings ) ) {
-+	    fprintf( stderr, "Running Iperf Server as a daemon\n");
-+	    // Start the server as a daemon
-+#ifdef WIN32
-+	    CmdInstallService(argc, argv);
-+	    // Remove the Windows service if requested
-+	    if ( isRemoveService( ext_gSettings ) ) {
-+		// remove the service
-+		if ( CmdRemoveService() ) {
-+		    fprintf(stderr, "IPerf Service is removed.\n");
-+		    return 0;
-+		}
-+	    }
-+#else
-+	    fflush(stderr);
-+	    // redirect stdin, stdout and sterr to /dev/null (see dameon and no close flag)
-+	    if (daemon(1, 0) < 0) {
-+	        perror("daemon");
-+	    }
-+	}
-+#endif
-+	break;
-+    default :
-+	fprintf( stderr, "unknown mode");
-+	break;
-+    }
-+#ifdef HAVE_THREAD
-+        // start up the reporter and client(s) or listener
-+    {
-+	thread_Settings *into = NULL;
-+	// Create the settings structure for the reporter thread
-+	Settings_Copy( ext_gSettings, &into );
-+	into->mThreadMode = kMode_Reporter;
-+
-+	// Have the reporter launch the client or listener
-+	into->runNow = ext_gSettings;
- 
--        return 0;
-+	// Start all the threads that are ready to go
-+	thread_start( into );
-     }
-+#else
-+    // No need to make a reporter thread because we don't have threads
-+    thread_start( ext_gSettings );
-+#endif
- 
-     // wait for other (client, server) threads to complete
-     thread_joinall();
diff --git a/package/network/utils/iperf/patches/0003-fix-non-ipv6-builds.patch b/package/network/utils/iperf/patches/0003-fix-non-ipv6-builds.patch
index 9d96c1919a..c6afa3e160 100644
--- a/package/network/utils/iperf/patches/0003-fix-non-ipv6-builds.patch
+++ b/package/network/utils/iperf/patches/0003-fix-non-ipv6-builds.patch
@@ -1,18 +1,16 @@
-Index: iperf-2.0.12/src/Listener.cpp
-===================================================================
---- iperf-2.0.12.orig/src/Listener.cpp
-+++ iperf-2.0.12/src/Listener.cpp
-@@ -670,6 +670,7 @@ int Listener::L2_setup (void) {
+--- a/src/Listener.cpp
++++ b/src/Listener.cpp
+@@ -723,6 +723,7 @@ int Listener::L2_setup (void) {
  
      // Now optimize packet flow up the raw socket
      // Establish the flow BPF to forward up only "connected" packets to this raw socket
 +#ifdef HAVE_IPV6
      if (l->sa_family == AF_INET6) {
+ #ifdef HAVE_IPV6
  	struct in6_addr *v6peer = SockAddr_get_in6_addr(&server->peer);
- 	struct in6_addr *v6local = SockAddr_get_in6_addr(&server->local);
-@@ -682,6 +683,9 @@ int Listener::L2_setup (void) {
- 	    WARN_errno( rc == SOCKET_ERROR, "l2 v4in6 connect ip bpf");
- 	}
+@@ -740,6 +741,9 @@ int Listener::L2_setup (void) {
+ 	return -1;
+ #endif /* HAVE_IPV6 */
      } else {
 +#else
 +    {
-- 
2.20.1




More information about the openwrt-devel mailing list