Hello community, here is the log from the commit of package uftpd for openSUSE:Factory checked in at 2018-07-06 10:42:14 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/uftpd (Old) and /work/SRC/openSUSE:Factory/.uftpd.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "uftpd" Fri Jul 6 10:42:14 2018 rev:2 rq:620668 version:2.6 Changes: -------- --- /work/SRC/openSUSE:Factory/uftpd/uftpd.changes 2018-06-29 22:36:15.266009424 +0200 +++ /work/SRC/openSUSE:Factory/.uftpd.new/uftpd.changes 2018-07-06 10:42:20.099230511 +0200 @@ -1,0 +2,9 @@ +Wed Jul 4 15:20:38 UTC 2018 - mar...@gmx.de + +- Update to version 2.6 + Fixes + * Issue #16: 100% CPU when client session exits + * Add missing include file for `gettimeofday()` + * Flush stdout logging when running in the foreground + +------------------------------------------------------------------- Old: ---- uftpd-2.5.tar.gz New: ---- uftpd-2.6.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ uftpd.spec ++++++ --- /var/tmp/diff_new_pack.TgoElx/_old 2018-07-06 10:42:20.547229978 +0200 +++ /var/tmp/diff_new_pack.TgoElx/_new 2018-07-06 10:42:20.547229978 +0200 @@ -1,6 +1,7 @@ # # spec file for package uftpd # +# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. # Copyright (c) 2018, Martin Hauke <mar...@gmx.de> # # All modifications and additions to the file contributed by third parties @@ -17,7 +18,7 @@ Name: uftpd -Version: 2.5 +Version: 2.6 Release: 0 Summary: The no nonsense TFTP/FTP server License: ISC ++++++ uftpd-2.5.tar.gz -> uftpd-2.6.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/uftpd-2.5/ChangeLog.md new/uftpd-2.6/ChangeLog.md --- old/uftpd-2.5/ChangeLog.md 2018-06-06 21:57:05.000000000 +0200 +++ new/uftpd-2.6/ChangeLog.md 2018-07-03 17:32:03.000000000 +0200 @@ -3,6 +3,16 @@ All notable changes to the project are documented in this file. +[v2.6][UNRELEASED] +------------------ + +Bug fix release. + +### Fixes +- Issue #16: 100% CPU when client session exits +- Add missing include file for `gettimeofday()` +- Flush stdout logging when running in the foreground + [v2.5][] - 2018-06-06 --------------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/uftpd-2.5/configure.ac new/uftpd-2.6/configure.ac --- old/uftpd-2.5/configure.ac 2018-06-06 21:57:05.000000000 +0200 +++ new/uftpd-2.6/configure.ac 2018-07-03 17:32:03.000000000 +0200 @@ -1,4 +1,4 @@ -AC_INIT([uftpd], [2.5], [https://github.com/troglobit/uftpd/issues]) +AC_INIT([uftpd], [2.6], [https://github.com/troglobit/uftpd/issues]) AM_INIT_AUTOMAKE([1.11 foreign no-dist-gzip dist-xz]) AM_SILENT_RULES([yes]) @@ -12,7 +12,8 @@ # Configuration. AC_HEADER_STDC -AC_CHECK_FUNCS(strstr getopt getsubopt) +AC_CHECK_HEADERS(sys/time.h) +AC_CHECK_FUNCS(strstr getopt getsubopt gettimeofday) # Check for uint[8,16,32]_t AC_TYPE_UINT8_T diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/uftpd-2.5/debian/changelog new/uftpd-2.6/debian/changelog --- old/uftpd-2.5/debian/changelog 2018-06-06 21:57:05.000000000 +0200 +++ new/uftpd-2.6/debian/changelog 2018-07-03 17:32:03.000000000 +0200 @@ -1,3 +1,11 @@ +uftpd (2.6) unstable; urgency=medium + + * Bug fix release + * Really fix 100% CPU issue, take two. Some clients managed to trigger + a bug caused by calling `uev_exit()` twice on client session exit + + -- Joachim Nilsson <troglo...@gmail.com> Tue, 03 Jul 2018 17:14:00 +0200 + uftpd (2.5) unstable; urgency=critical * Really fix 100% CPU issue diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/uftpd-2.5/src/common.c new/uftpd-2.6/src/common.c --- old/uftpd-2.5/src/common.c 2018-06-06 21:57:05.000000000 +0200 +++ new/uftpd-2.6/src/common.c 2018-07-03 17:32:03.000000000 +0200 @@ -280,13 +280,10 @@ int del_session(ctrl_t *ctrl, int isftp) { - uev_ctx_t *ctx; - DBG("%sFTP Client session ended.", isftp ? "": "T" ); if (!ctrl) return -1; - ctx = ctrl->ctx; if (isftp && ctrl->sd > 0) { shutdown(ctrl->sd, SHUT_RDWR); @@ -310,9 +307,6 @@ free(ctrl->ctx); free(ctrl); - if (!inetd) - return uev_exit(ctx); - return 0; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/uftpd-2.5/src/ftpcmd.c new/uftpd-2.6/src/ftpcmd.c --- old/uftpd-2.5/src/ftpcmd.c 2018-06-06 21:57:05.000000000 +0200 +++ new/uftpd-2.6/src/ftpcmd.c 2018-07-03 17:32:03.000000000 +0200 @@ -17,6 +17,9 @@ #include "uftpd.h" #include <arpa/ftp.h> +#ifdef HAVE_SYS_TIME_H +# include <sys/time.h> +#endif typedef struct { char *command; @@ -1501,6 +1504,7 @@ static void child_exit(uev_t *w, void *arg, int events) { + DBG("Child exiting ..."); uev_exit(w->ctx); } @@ -1519,6 +1523,7 @@ uev_timer_set(&ctrl->timeout_watcher, INACTIVITY_TIMER, 0); if (recv_msg(w->fd, ctrl->buf, ctrl->bufsz, &command, &argument)) { + DBG("Short read, exiting."); uev_exit(ctrl->ctx); return; } @@ -1601,6 +1606,7 @@ INFO("Client connection from %s", ctrl->clientaddr); ftp_command(ctrl); + DBG("Client exiting, bye"); exit(del_session(ctrl, 1)); fail: free(ctrl); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/uftpd-2.5/src/log.c new/uftpd-2.6/src/log.c --- old/uftpd-2.5/src/log.c 2018-06-06 21:57:05.000000000 +0200 +++ new/uftpd-2.6/src/log.c 2018-07-03 17:32:03.000000000 +0200 @@ -51,6 +51,7 @@ if (loglevel == LOG_DEBUG) fprintf(file, "%d> ", getpid()); vfprintf(file, fmt, args); + fflush(file); } va_end(args); }