openSUSE Commits
Threads by month
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
August 2017
- 1 participants
- 2097 discussions
Hello community,
here is the log from the commit of package quiterss for openSUSE:Factory checked in at 2017-08-24 18:56:13
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/quiterss (Old)
and /work/SRC/openSUSE:Factory/.quiterss.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "quiterss"
Thu Aug 24 18:56:13 2017 rev:7 rq:518438 version:0.18.7
Changes:
--------
--- /work/SRC/openSUSE:Factory/quiterss/quiterss.changes 2017-06-21 13:58:16.182245998 +0200
+++ /work/SRC/openSUSE:Factory/.quiterss.new/quiterss.changes 2017-08-24 18:56:38.833529163 +0200
@@ -1,0 +2,18 @@
+Wed Aug 23 18:57:43 UTC 2017 - aloisio(a)gmx.com
+
+- Update to version 0.18.7
+ * Added: Share. Reddit, Instapaper
+ * Changed: SQLite 3.20.0
+ * Changed: Displaying icon in system tray
+ * Fixed: Copying folder properties when adding feed
+ * Fixed: Duplicated news without headings
+ * Fixed: Share. Email (Linux)
+ * Fixed: Application crash when open browser tab and layout
+ switching
+ * Fixed: Sometimes regular expressions in filters did not work
+ * Fixed: Some content links of the news description has no
+ "http" schema
+
+- Dropped quiterss-list_qmfiles.patch (fixed upstream)
+
+-------------------------------------------------------------------
Old:
----
QuiteRSS-0.18.6-src.tar.gz
quiterss-list_qmfiles.patch
New:
----
QuiteRSS-0.18.7-src.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ quiterss.spec ++++++
--- /var/tmp/diff_new_pack.BTYEhf/_old 2017-08-24 18:56:39.765397949 +0200
+++ /var/tmp/diff_new_pack.BTYEhf/_new 2017-08-24 18:56:39.785395133 +0200
@@ -17,15 +17,13 @@
Name: quiterss
-Version: 0.18.6
+Version: 0.18.7
Release: 0
Summary: RSS/Atom aggregator
License: GPL-3.0+
Group: Productivity/Networking/News/Utilities
Url: https://www.quiterss.org
Source: https://quiterss.org/files/%{version}/QuiteRSS-%{version}-src.tar.gz
-# PATCH-FIX-UPSTREAM quiterss-list_qmfiles.patch -- don't use wildcard when installing .qm files
-Patch1: quiterss-list_qmfiles.patch
BuildRequires: fdupes
BuildRequires: gcc-c++
BuildRequires: hicolor-icon-theme
@@ -49,8 +47,7 @@
%lang_package
%prep
-%setup -q
-%patch1 -p1
+%setup -q -c
%build
%qmake5 PREFIX=%{_prefix} QMAKE_LRELEASE="lrelease-qt5"
++++++ QuiteRSS-0.18.6-src.tar.gz -> QuiteRSS-0.18.7-src.tar.gz ++++++
++++ 856284 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package python-html5-parser for openSUSE:Factory checked in at 2017-08-24 18:56:09
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-html5-parser (Old)
and /work/SRC/openSUSE:Factory/.python-html5-parser.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-html5-parser"
Thu Aug 24 18:56:09 2017 rev:2 rq:518433 version:0.4.4
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-html5-parser/python-html5-parser.changes 2017-08-16 16:11:40.918494795 +0200
+++ /work/SRC/openSUSE:Factory/.python-html5-parser.new/python-html5-parser.changes 2017-08-24 18:56:34.110194242 +0200
@@ -1,0 +2,5 @@
+Mon Aug 14 14:52:38 UTC 2017 - opensuse(a)dstoecker.de
+
+- update to 0.4.4
+
+-------------------------------------------------------------------
Old:
----
v0.4.3.tar.gz
New:
----
v0.4.4.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-html5-parser.spec ++++++
--- /var/tmp/diff_new_pack.bZL50p/_old 2017-08-24 18:56:35.058060776 +0200
+++ /var/tmp/diff_new_pack.bZL50p/_new 2017-08-24 18:56:35.078057960 +0200
@@ -1,4 +1,4 @@
- #
+#
# spec file for package python-html5-parser
#
# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
@@ -19,20 +19,20 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-html5-parser
-Version: 0.4.3
+Version: 0.4.4
Release: 0
Summary: Fast C based HTML 5 parsing for python
License: Apache-2.0
Group: Development/Languages/Python
Url: https://github.com/kovidgoyal/html5-parser
Source: https://github.com/kovidgoyal/html5-parser/archive/v%{version}.tar.gz
+BuildRequires: %{python_module beautifulsoup4}
BuildRequires: %{python_module devel}
BuildRequires: %{python_module lxml >= 3.8.0}
BuildRequires: %{python_module setuptools}
-BuildRequires: %{python_module beautifulsoup4}
BuildRequires: fdupes
-BuildRequires: pkgconfig(libxml-2.0)
BuildRequires: python-rpm-macros
+BuildRequires: pkgconfig(libxml-2.0)
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%python_subpackages
++++++ v0.4.3.tar.gz -> v0.4.4.tar.gz ++++++
++++ 3169 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package btfs for openSUSE:Factory checked in at 2017-08-24 18:56:03
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/btfs (Old)
and /work/SRC/openSUSE:Factory/.btfs.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "btfs"
Thu Aug 24 18:56:03 2017 rev:2 rq:518425 version:2.16
Changes:
--------
--- /work/SRC/openSUSE:Factory/btfs/btfs.changes 2017-08-18 15:02:50.111407307 +0200
+++ /work/SRC/openSUSE:Factory/.btfs.new/btfs.changes 2017-08-24 18:56:31.886507354 +0200
@@ -1,0 +2,8 @@
+Wed Aug 23 17:09:41 UTC 2017 - 9(a)cirno.systems
+
+- 2.16
+ * Implement listxattr and getxattr
+ * Return IS_BTFS xattr on all files and directories
+ * Add btfsstat program
+
+-------------------------------------------------------------------
Old:
----
v2.15.tar.gz
New:
----
v2.16.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ btfs.spec ++++++
--- /var/tmp/diff_new_pack.oAP4NL/_old 2017-08-24 18:56:32.586408802 +0200
+++ /var/tmp/diff_new_pack.oAP4NL/_new 2017-08-24 18:56:32.586408802 +0200
@@ -17,7 +17,7 @@
Name: btfs
-Version: 2.15
+Version: 2.16
Release: 0
Summary: A BitTorrent file system based on FUSE
License: GPL-3.0
@@ -27,11 +27,11 @@
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: gcc
+BuildRequires: libboost_system-devel
BuildRequires: pkgconfig
BuildRequires: pkgconfig(fuse)
BuildRequires: pkgconfig(libcurl)
BuildRequires: pkgconfig(libtorrent-rasterbar) > 0.16
-BuildRequires: libboost_system-devel
%description
With BTFS, you can mount any .torrent file or magnet link and then use it as
@@ -56,5 +56,6 @@
%{_mandir}/man1/%{name}.1%{ext_man}
%{_bindir}/btfs
%{_bindir}/btplay
+%{_bindir}/btfsstat
%changelog
++++++ v2.15.tar.gz -> v2.16.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/btfs-2.15/.gitignore new/btfs-2.16/.gitignore
--- old/btfs-2.15/.gitignore 2017-08-04 09:12:07.000000000 +0200
+++ new/btfs-2.16/.gitignore 2017-08-23 18:12:29.000000000 +0200
@@ -1,5 +1,6 @@
*.o
btfs
+btfsstat
# generated files
Makefile
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/btfs-2.15/.travis.yml new/btfs-2.16/.travis.yml
--- old/btfs-2.15/.travis.yml 2017-08-04 09:12:07.000000000 +0200
+++ new/btfs-2.16/.travis.yml 2017-08-23 18:12:29.000000000 +0200
@@ -2,22 +2,22 @@
matrix:
include:
- os: linux
- env: LIBTORRENT_BRANCH=master BUILDENV="CXX=g++-7 CC=gcc-7 CPP=cpp-7 CXXFLAGS=-fpermissive"
+ env: LIBTORRENT_BRANCH=master TOOLCHAIN="CXX=g++-7 CC=gcc-7 CPP=cpp-7"
- os: linux
- env: LIBTORRENT_BRANCH=RC_1_1 BUILDENV="CXX=g++-7 CC=gcc-7 CPP=cpp-7 CXXFLAGS=-fpermissive"
+ env: LIBTORRENT_BRANCH=RC_1_1 TOOLCHAIN="CXX=g++-7 CC=gcc-7 CPP=cpp-7"
- os: linux
- env: LIBTORRENT_BRANCH=RC_1_0 BUILDENV="CXX=g++-7 CC=gcc-7 CPP=cpp-7 CXXFLAGS=-fpermissive"
+ env: LIBTORRENT_BRANCH=RC_1_0 TOOLCHAIN="CXX=g++-7 CC=gcc-7 CPP=cpp-7"
- os: osx
- env: LIBTORRENT_BRANCH=master BUILDENV="CXXFLAGS=-std=c++11"
+ env: LIBTORRENT_BRANCH=master
- os: osx
- env: LIBTORRENT_BRANCH=RC_1_1 BUILDENV="CXXFLAGS=-std=c++11"
+ env: LIBTORRENT_BRANCH=RC_1_1
- os: osx
- env: LIBTORRENT_BRANCH=RC_1_0 BUILDENV="CXXFLAGS=-std=c++11"
+ env: LIBTORRENT_BRANCH=RC_1_0
allow_failures:
- os: linux
- env: LIBTORRENT_BRANCH=master BUILDENV="CXX=g++-7 CC=gcc-7 CPP=cpp-7 CXXFLAGS=-fpermissive"
+ env: LIBTORRENT_BRANCH=master TOOLCHAIN="CXX=g++-7 CC=gcc-7 CPP=cpp-7"
- os: osx
- env: LIBTORRENT_BRANCH=master BUILDENV="CXXFLAGS=-std=c++11"
+ env: LIBTORRENT_BRANCH=master
env:
global:
- MAKEFLAGS=-j2
@@ -41,8 +41,8 @@
brew install curl;
fi
install:
- - env $BUILDENV ./scripts/build-libtorrent $LIBTORRENT_BRANCH /tmp
+ - env $TOOLCHAIN CXXFLAGS="-fpermissive -w -std=c++11" ./scripts/build-libtorrent $LIBTORRENT_BRANCH /tmp
before_script:
- autoreconf -i
script:
- - env $BUILDENV ./configure && make && make test
+ - env $TOOLCHAIN ./configure && make && make test
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/btfs-2.15/configure.ac new/btfs-2.16/configure.ac
--- old/btfs-2.15/configure.ac 2017-08-04 09:12:07.000000000 +0200
+++ new/btfs-2.16/configure.ac 2017-08-23 18:12:29.000000000 +0200
@@ -1,5 +1,5 @@
AC_PREREQ([2.69])
-AC_INIT(btfs, 2.15, johan.gunnarsson(a)gmail.com, btfs, https://github.com/johang/btfs)
+AC_INIT(btfs, 2.16, johan.gunnarsson(a)gmail.com, btfs, https://github.com/johang/btfs)
AC_CONFIG_SRCDIR([src/btfs.cc])
AM_INIT_AUTOMAKE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/btfs-2.15/src/Makefile.am new/btfs-2.16/src/Makefile.am
--- old/btfs-2.15/src/Makefile.am 2017-08-04 09:12:07.000000000 +0200
+++ new/btfs-2.16/src/Makefile.am 2017-08-23 18:12:29.000000000 +0200
@@ -1,5 +1,14 @@
-bin_PROGRAMS = btfs
+EXTRACXXFLAGS = -std=c++11 \
+ -Wall \
+ -Wextra \
+ -Wconversion \
+ -Wsign-compare \
+ -Wsign-conversion \
+ -Wno-unused-parameter
+bin_PROGRAMS = btfs btfsstat
btfs_SOURCES = btfs.cc btfs.h
-btfs_CPPFLAGS = -Wall -Wextra -Wconversion -Wsign-compare -Wsign-conversion -Wno-unused-parameter $(FUSE_CFLAGS) $(LIBTORRENT_CFLAGS) $(LIBCURL_CFLAGS)
-btfs_CXXFLAGS = -std=c++11
+btfs_CXXFLAGS = $(EXTRACXXFLAGS) $(FUSE_CFLAGS) $(LIBTORRENT_CFLAGS) $(LIBCURL_CFLAGS)
btfs_LDADD = $(FUSE_LIBS) $(LIBTORRENT_LIBS) $(LIBCURL_LIBS)
+btfsstat_SOURCES = btfsstat.cc btfsstat.h
+btfsstat_CXXFLAGS = $(EXTRACXXFLAGS)
+btfsstat_LDADD =
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/btfs-2.15/src/btfs.cc new/btfs-2.16/src/btfs.cc
--- old/btfs-2.15/src/btfs.cc 2017-08-04 09:12:07.000000000 +0200
+++ new/btfs-2.16/src/btfs.cc 2017-08-23 18:12:29.000000000 +0200
@@ -34,6 +34,7 @@
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wsign-conversion"
#pragma GCC diagnostic ignored "-Wconversion"
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
#include <libtorrent/torrent_info.hpp>
#include <libtorrent/session.hpp>
#include <libtorrent/alert.hpp>
@@ -391,6 +392,11 @@
}
static bool
+is_root(const char *path) {
+ return strcmp(path, "/") == 0;
+}
+
+static bool
is_dir(const char *path) {
return dirs.find(path) != dirs.end();
}
@@ -402,7 +408,7 @@
static int
btfs_getattr(const char *path, struct stat *stbuf) {
- if (!is_dir(path) && !is_file(path) && strcmp(path, "/") != 0)
+ if (!is_dir(path) && !is_file(path) && !is_root(path))
return -ENOENT;
pthread_mutex_lock(&lock);
@@ -413,7 +419,7 @@
stbuf->st_gid = getgid();
stbuf->st_mtime = time_of_mount;
- if (strcmp(path, "/") == 0 || is_dir(path)) {
+ if (is_root(path) || is_dir(path)) {
stbuf->st_mode = S_IFDIR | 0755;
} else {
auto ti = handle.torrent_file();
@@ -447,7 +453,7 @@
static int
btfs_readdir(const char *path, void *buf, fuse_fill_dir_t filler,
off_t offset, struct fuse_file_info *fi) {
- if (!is_dir(path) && !is_file(path) && strcmp(path, "/") != 0)
+ if (!is_dir(path) && !is_file(path) && !is_root(path))
return -ENOENT;
if (is_file(path))
@@ -659,6 +665,75 @@
pthread_mutex_unlock(&lock);
}
+static int
+btfs_listxattr(const char *path, char *data, size_t len) {
+ const char *xattrs = NULL;
+ int xattrslen = 0;
+
+ if (is_root(path)) {
+ xattrs = XATTR_IS_BTFS "\0" XATTR_IS_BTFS_ROOT;
+ xattrslen = sizeof (XATTR_IS_BTFS "\0" XATTR_IS_BTFS_ROOT);
+ } else if (is_dir(path)) {
+ xattrs = XATTR_IS_BTFS;
+ xattrslen = sizeof (XATTR_IS_BTFS);
+ } else if (is_file(path)) {
+ xattrs = XATTR_IS_BTFS "\0" XATTR_FILE_INDEX;
+ xattrslen = sizeof (XATTR_IS_BTFS "\0" XATTR_FILE_INDEX);
+ } else {
+ return -ENOENT;
+ }
+
+ // The minimum required length
+ if (len == 0)
+ return xattrslen;
+
+ if (len < (size_t) xattrslen)
+ return -ERANGE;
+
+ memcpy(data, xattrs, (size_t) xattrslen);
+
+ return xattrslen;
+}
+
+#ifdef __APPLE__
+static int
+btfs_getxattr(const char *path, const char *key, char *value, size_t len,
+ uint32_t position) {
+#else
+static int
+btfs_getxattr(const char *path, const char *key, char *value, size_t len) {
+ uint32_t position = 0;
+#endif
+ char xattr[16];
+ int xattrlen = 0;
+
+ std::string k(key);
+
+ if (is_file(path) && k == XATTR_FILE_INDEX) {
+ xattrlen = snprintf(xattr, sizeof (xattr), "%d", files[path]);
+ } else if (is_root(path) && k == XATTR_IS_BTFS_ROOT) {
+ xattrlen = 0;
+ } else if (k == XATTR_IS_BTFS) {
+ xattrlen = 0;
+ } else {
+ return -ENODATA;
+ }
+
+ // The minimum required length
+ if (len == 0)
+ return xattrlen;
+
+ if (position >= (uint32_t) xattrlen)
+ return 0;
+
+ if (len < (size_t) xattrlen - position)
+ return -ERANGE;
+
+ memcpy(value, xattr + position, (size_t) xattrlen - position);
+
+ return xattrlen - (int) position;
+}
+
static bool
populate_target(std::string& target, char *arg) {
std::string templ;
@@ -860,6 +935,8 @@
btfs_ops.open = btfs_open;
btfs_ops.read = btfs_read;
btfs_ops.statfs = btfs_statfs;
+ btfs_ops.listxattr = btfs_listxattr;
+ btfs_ops.getxattr = btfs_getxattr;
btfs_ops.init = btfs_init;
btfs_ops.destroy = btfs_destroy;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/btfs-2.15/src/btfs.h new/btfs-2.16/src/btfs.h
--- old/btfs-2.15/src/btfs.h 2017-08-04 09:12:07.000000000 +0200
+++ new/btfs-2.16/src/btfs.h 2017-08-23 18:12:29.000000000 +0200
@@ -20,8 +20,15 @@
#ifndef BTFS_H
#define BTFS_H
+#include <vector>
+#include <list>
+#include <fstream>
+
+#include "libtorrent/config.hpp"
#include <libtorrent/peer_request.hpp>
+#include "btfsstat.h"
+
namespace btfs
{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/btfs-2.15/src/btfsstat.cc new/btfs-2.16/src/btfsstat.cc
--- old/btfs-2.15/src/btfsstat.cc 1970-01-01 01:00:00.000000000 +0100
+++ new/btfs-2.16/src/btfsstat.cc 2017-08-23 18:12:29.000000000 +0200
@@ -0,0 +1,118 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <errno.h>
+#include <string.h>
+#include <limits.h>
+#include <dirent.h>
+#include <math.h>
+#include <libgen.h>
+
+#include <sys/types.h>
+#include <sys/xattr.h>
+#include <sys/stat.h>
+
+#include <list>
+#include <string>
+#include <iostream>
+
+#include "btfsstat.h"
+
+#ifndef ENOATTR
+#define ENOATTR ENODATA
+#endif
+
+using namespace btfs;
+
+static bool
+string_compare(const std::string& a, const std::string& b) {
+ return a.compare(b) == 0;
+}
+
+static std::list<std::string>
+list(std::string path) {
+ std::list<std::string> files;
+
+ DIR *dp = opendir(path.c_str());
+
+ if (!dp)
+ return files;
+
+ for (struct dirent *ep = readdir(dp); ep; ep = readdir(dp)) {
+ std::string f(ep->d_name);
+
+ if (f != "." && f != "..")
+ files.push_back(f);
+ }
+
+ closedir(dp);
+
+ files.sort(string_compare);
+
+ return files;
+}
+
+static void
+scan(std::string indent, std::string d, std::string f) {
+ struct stat s;
+ memset(&s, 0, sizeof (s));
+
+ std::string p = d + "/" + f;
+
+ if (lstat(p.c_str(), &s) < 0)
+ return;
+
+ if (S_ISDIR(s.st_mode)) {
+ printf("%s%s/\n", indent.c_str(), f.c_str());
+
+ std::list<std::string> l = list(p);
+
+ for (auto i = l.begin(); i != l.end(); ++i) {
+ scan(indent + " ", p, *i);
+ }
+ } else if (S_ISREG(s.st_mode)) {
+ // Download progress for this file (in percent)
+ long progress = lround((100.0 * 512.0 * (double) s.st_blocks) /
+ (double) s.st_size);
+
+ printf("%s%s (%3ld%%)\n", indent.c_str(), f.c_str(), progress);
+ }
+}
+
+int
+main(int argc, char *argv[]) {
+ if (argc < 2) {
+ printf("Usage: %s MOUNT_POINTS...\n", argv[0]);
+ return 1;
+ }
+
+ for (int i = 1; i < argc; i++) {
+#ifdef __APPLE__
+ if (getxattr(argv[i], XATTR_IS_BTFS, NULL, 0, 0, 0) < 0) {
+#else
+ if (getxattr(argv[i], XATTR_IS_BTFS, NULL, 0) < 0) {
+#endif
+ printf("%s: %s is not a btfs mount: %s\n", argv[0], argv[i],
+ strerror(errno));
+ return 2;
+ }
+
+ char *root = realpath(argv[i], NULL);
+
+ if (!root) {
+ perror("failed to canonicalize path");
+ return 3;
+ }
+
+ char *dir = strdup(root);
+ char *base = strdup(root);
+
+ scan("", dirname(root), basename(root));
+
+ free(base);
+ free(dir);
+
+ free(root);
+ }
+
+ return 0;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/btfs-2.15/src/btfsstat.h new/btfs-2.16/src/btfsstat.h
--- old/btfs-2.15/src/btfsstat.h 1970-01-01 01:00:00.000000000 +0100
+++ new/btfs-2.16/src/btfsstat.h 2017-08-23 18:12:29.000000000 +0200
@@ -0,0 +1,12 @@
+#ifndef __BTFSSTAT_H__
+#define __BTFSSTAT_H__
+
+#define XATTR_FILE_INDEX "user.btfs.file_index"
+#define XATTR_IS_BTFS_ROOT "user.btfs.is_btfs_root"
+#define XATTR_IS_BTFS "user.btfs.is_btfs"
+
+namespace btfs
+{
+}
+
+#endif
1
0
Hello community,
here is the log from the commit of package engauge-digitizer for openSUSE:Factory checked in at 2017-08-24 18:56:01
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/engauge-digitizer (Old)
and /work/SRC/openSUSE:Factory/.engauge-digitizer.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "engauge-digitizer"
Thu Aug 24 18:56:01 2017 rev:16 rq:518419 version:10.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/engauge-digitizer/engauge-digitizer.changes 2017-07-27 11:12:45.885059626 +0200
+++ /work/SRC/openSUSE:Factory/.engauge-digitizer.new/engauge-digitizer.changes 2017-08-24 18:56:28.375001799 +0200
@@ -1,0 +2,7 @@
+Wed Aug 23 15:36:29 UTC 2017 - badshah400(a)gmail.com
+
+- Update to version 10.2:
+ + More zoom levels for increased flexibility in zooming
+ (gh#markummitchell/engauge-digitizer#237).
+
+-------------------------------------------------------------------
Old:
----
v10.1.tar.gz
New:
----
v10.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ engauge-digitizer.spec ++++++
--- /var/tmp/diff_new_pack.WdBQqZ/_old 2017-08-24 18:56:30.974635752 +0200
+++ /var/tmp/diff_new_pack.WdBQqZ/_new 2017-08-24 18:56:31.006631246 +0200
@@ -17,7 +17,7 @@
Name: engauge-digitizer
-Version: 10.1
+Version: 10.2
Release: 0
Summary: Ditigize old graphs into numbers again
License: GPL-2.0+
++++++ v10.1.tar.gz -> v10.2.tar.gz ++++++
/work/SRC/openSUSE:Factory/engauge-digitizer/v10.1.tar.gz /work/SRC/openSUSE:Factory/.engauge-digitizer.new/v10.2.tar.gz differ: char 28, line 1
1
0
Hello community,
here is the log from the commit of package rabbitmq-server for openSUSE:Factory checked in at 2017-08-24 18:55:58
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rabbitmq-server (Old)
and /work/SRC/openSUSE:Factory/.rabbitmq-server.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rabbitmq-server"
Thu Aug 24 18:55:58 2017 rev:31 rq:518408 version:3.6.11
Changes:
--------
--- /work/SRC/openSUSE:Factory/rabbitmq-server/rabbitmq-server.changes 2017-04-11 09:45:26.086779054 +0200
+++ /work/SRC/openSUSE:Factory/.rabbitmq-server.new/rabbitmq-server.changes 2017-08-24 18:56:21.907912411 +0200
@@ -1,0 +2,87 @@
+Wed Aug 23 06:07:28 UTC 2017 - tbechtold(a)suse.com
+
+- update to 3.6.11:
+ * packaging: package-rpm-suse is an alias for package-rpm-opensuse
+ * Makefile: Move plugins list to `plugins.mk`
+ * Include rabbitmq_web_mqtt into the distribution
+ * Log rabbitmqctl's output on failure
+ * Makefile: Set default `broker_version_requirements`
+ * packaging/windows: Allow to override `PRODUCTVERSION`
+ * debian/control: Revert the use of ${misc:Depends}
+ * packaging: Add scripts for format RabbitMQ version to match package constarints
+ * Commit Debian and RPM changelogs
+ * debian/control: Use ${misc:Depends} instead of hard-coding dependencies
+ * Fix HA OCF script
+ * Makefile: Store the plugins list in the source archive
+ * plugins.mk: The list is overriden by the server-release Concourse pipeline
+ * Makefile: Use PROJECT_DESCRIPTION in git-revisions.txt
+ * packaging/RPMS: Simplify the Makefile wrapping dpkg-buildpackage(1)
+ * Makefile: Sync exclusion list with rabbitmq-erlang-client
+ * OCF RA: accept 1 as valid exit code from "rabbitmqctl status"
+ * Ignore .envrc files
+ * upgrade/Makefile: Remove trailing space
+ * standalone/src/rabbit_release.erl: Copy `escript` directory to the archive
+ * packaging/standalone: Remove the source `rabbit.rel` file
+ * Commit .deb and .rpm change logs
+ * OCF RA: Don't hardcode primitive name in rabbitmq-server-ha.ocf
+ * Makefile: Use $(PROJECT_VERSION) instead of $(VERSION)
+ * debian/control: Add version restriction on erlang-dev and esl-erlang
+ * Commit 3.6.9 package change logs
+ * packaging/standalone: Fix path to the source `rabbit.rel` file
+ * Configure shortcuts to run as admin.
+ * Debian package: No need to pass $(VERSION) around in debian/rules
+ * Makefile: Use a recursively expanded var for `RABBITMQ_VERSION`
+ * Add Travis tests for Pacemaker OCF RA cluster
+ * Makefile: Load rabbitmq-dist.mk before rabbitmq-run.mk
+ * packaging/debs/Debian/Makefile: Display Erlang version *after* installing it
+ * packaging/debs/Debian/scripts/udpate-changelog.sh: Show syntax
+ * packaging/standalone: Do not use NUL-separated filenames in manifest
+ * packaging/standalone: Copy `start_clean.boot` to bin driectory
+ * packaging: rpms: Add systemd support for openSUSE
+ * packaging/debs/Debian/Makefile: Install build dependencies
+ * packaging/RPMS: Fix SAVE_CHANGELOG handling
+ * Makefile: Call $(MAKE), not plain `make`
+ * packaging/*/rabbitmq-server.service: Wait for RabbitMQ to stop in ExecStop
+ * packaging/debs: Use make conditionals instead of Bourne shell ones
+ * packaging/debs: Derive GNUPGHOME from KEYSDIR
+ * Add chmod g+s to /etc/rabbitmq
+ * packaging/standalone: Remove temporary `expand` directory
+ * packaging/windows: Try to compute a valid default `PRODUCTVERSION`
+ * Enlist OCF_RESKEY_limit_nofile_default on comment
+ * Re-do #21
+ * Makefile: Exclude `/rabbit{,mq_cli}/escript/` from the source archive
+ * debian/control: Try with erlang-nox 1:16.b.3-3
+ * packaging/standalone: Use an intermediate file to list files to archive
+ * Makefile: Use an intermediate file to list files to put in the source archive
+ * Makefile: Use echo instead of printf
+ * debian/control: Depend on erlang-src
+ * Change to 2750
+ * Trigger a Travis build
+ * packaging: Log the version of Erlang used to compile packages
+ * Update erlang.mk
+ * packaging/debs/apt-repository/distributions: Add `arm64` architecture
+ * Require root or rabbitmq user for rabbitmq-plugins.
+ * Makefile: Remove more unneeded files from the source archive
+ * Update rabbitmq-components.mk
+ * Placeholder, remove later.
+ * packaging/windows: Bump copyright of the installer to 2017
+ * Manually backport #20, #21, #24, #25 by @vuntz and @aplanas to stable
+ * packaging/debs: Simplify the Makefile wrapping dpkg-buildpackage(1)
+ * plugins.mk: Sort list alphabetically
+ * Add write permissions to erl
+ * OCF RA: Add new limit_nofile parameter to rabbitmq-server OCF RA
+ * packaging/debs/Debian/Makefile: Use cp(1) instead of rsync(1)
+ * scripts/rabbitmq-script-wrapper: Run rabbitmq-plugin as root only
+ * Remove.
+ * Add `standalone-linux-x86_64` and `standalone-freebsd-x86_64` package targets
+ * Makefile: Remove all targets entering the `upgrade` subdir
+ * OCF RA: Use rabbitmqctl_action wrapper for stop action
+ * README.md: Document how to build the source archive and packages
+ * README.md: Document how Windows' PRODUCTVERSION is computed by default
+ * Add chmod g+s to rpm spec
+- Drop pull-request-20.patch . Applied upstream.
+- Drop pull-request-21.patch . Applied upstream.
+- Drop pull-request-24.patch . Applied upstream.
+- Drop pull-request-25.patch . Applied upstream.
+
+-------------------------------------------------------------------
Old:
----
pull-request-20.patch
pull-request-21.patch
pull-request-24.patch
pull-request-25.patch
rabbitmq-server-3.6.6.tar.xz
New:
----
rabbitmq-server-3.6.11.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ rabbitmq-server.spec ++++++
--- /var/tmp/diff_new_pack.97IVWH/_old 2017-08-24 18:56:23.343710240 +0200
+++ /var/tmp/diff_new_pack.97IVWH/_new 2017-08-24 18:56:23.347709677 +0200
@@ -28,7 +28,7 @@
%define _make_args DESTDIR="%{buildroot}" PREFIX="%{_prefix}" RMQ_ROOTDIR=%{_rabbit_libdir} RMQ_ERLAPP_DIR=%{_rabbit_erllibdir} MAN_INSTALL_PATH="%{_mandir}" DOC_INSTALL_DIR=%{buildroot}/%{_docdir} VERSION=%{version} V=1
Name: rabbitmq-server
-Version: 3.6.6
+Version: 3.6.11
Release: 0
Summary: The RabbitMQ Server
License: MPL-1.1
@@ -45,14 +45,6 @@
Source7: rabbitmq-server.tmpfiles.d.conf
Source8: README.SUSE
Source9: rabbitmq.config.example
-# PATCH-FIX-UPSTREAM pull-request-20.patch https://github.com/rabbitmq/rabbitmq-server-release/pull/20 -- minor fixes to rabbitmq-server.ocf
-Patch0: pull-request-20.patch
-# PATCH-FIX-UPSTREAM pull-request-21.patch https://github.com/rabbitmq/rabbitmq-server-release/pull/21 -- ulimit improvements for ocf files
-Patch1: pull-request-21.patch
-# PATCH-FIX-UPSTREAM pull-request-24.patch https://github.com/rabbitmq/rabbitmq-server-release/pull/24 -- allow specifying vhost to use in rabbitmq-server-ha.ocf
-Patch2: pull-request-24.patch
-# PATCH-FIX-UPSTREAM pull-request-25.patch https://github.com/rabbitmq/rabbitmq-server-release/pull/25 -- fix rabbitmq-server-ha.ocf to not hardcode resource name
-Patch3: pull-request-25.patch
BuildRequires: erlang
BuildRequires: erlang-src
BuildRequires: fdupes
@@ -118,10 +110,6 @@
%prep
%setup -q
cp %{SOURCE8} .
-%patch0 -p1
-%patch1 -p1
-%patch2 -p1
-%patch3 -p1
%build
make all %{_make_args} %{?_smp_mflags}
++++++ rabbitmq-server-3.6.6.tar.xz -> rabbitmq-server-3.6.11.tar.xz ++++++
++++ 163749 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package raspberrypi-firmware for openSUSE:Factory checked in at 2017-08-24 18:55:54
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/raspberrypi-firmware (Old)
and /work/SRC/openSUSE:Factory/.raspberrypi-firmware.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "raspberrypi-firmware"
Thu Aug 24 18:55:54 2017 rev:25 rq:518401 version:2017.08.22
Changes:
--------
--- /work/SRC/openSUSE:Factory/raspberrypi-firmware/raspberrypi-firmware-config-rpi.changes 2017-05-09 18:01:48.900211221 +0200
+++ /work/SRC/openSUSE:Factory/.raspberrypi-firmware.new/raspberrypi-firmware-config-rpi.changes 2017-08-24 18:56:19.308278458 +0200
@@ -1,0 +2,5 @@
+Wed Aug 23 14:01:08 UTC 2017 - guillaume(a)opensuse.org
+
+- Update to 8fe001e (2017-08-22)
+
+-------------------------------------------------------------------
raspberrypi-firmware-config-rpi2.changes: same change
raspberrypi-firmware-config-rpi3.changes: same change
raspberrypi-firmware.changes: same change
Old:
----
raspberrypi-firmware-2017.04.04.tar.bz2
New:
----
raspberrypi-firmware-2017.08.22.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ raspberrypi-firmware-config-rpi.spec ++++++
--- /var/tmp/diff_new_pack.rQd9G8/_old 2017-08-24 18:56:20.364129786 +0200
+++ /var/tmp/diff_new_pack.rQd9G8/_new 2017-08-24 18:56:20.372128660 +0200
@@ -17,7 +17,7 @@
Name: raspberrypi-firmware-config-rpi
-Version: 2017.04.04
+Version: 2017.08.22
Release: 0
Summary: Configuration for the Raspberry Pi firmware loader
License: MIT
raspberrypi-firmware-config-rpi2.spec: same change
raspberrypi-firmware-config-rpi3.spec: same change
++++++ raspberrypi-firmware.spec ++++++
--- /var/tmp/diff_new_pack.rQd9G8/_old 2017-08-24 18:56:20.468115145 +0200
+++ /var/tmp/diff_new_pack.rQd9G8/_new 2017-08-24 18:56:20.472114582 +0200
@@ -17,7 +17,7 @@
Name: raspberrypi-firmware
-Version: 2017.04.04
+Version: 2017.08.22
Release: 0
Summary: Binary bootloader and firmware files for Raspberry Pi
License: SUSE-Firmware
++++++ raspberrypi-firmware-2017.04.04.tar.bz2 -> raspberrypi-firmware-2017.08.22.tar.bz2 ++++++
/work/SRC/openSUSE:Factory/raspberrypi-firmware/raspberrypi-firmware-2017.04.04.tar.bz2 /work/SRC/openSUSE:Factory/.raspberrypi-firmware.new/raspberrypi-firmware-2017.08.22.tar.bz2 differ: char 11, line 1
++++++ raspberrypi-firmware-config.spec.in ++++++
--- /var/tmp/diff_new_pack.rQd9G8/_old 2017-08-24 18:56:20.648089803 +0200
+++ /var/tmp/diff_new_pack.rQd9G8/_new 2017-08-24 18:56:20.652089240 +0200
@@ -17,7 +17,7 @@
Name: __NAME__
-Version: 2017.04.04
+Version: 2017.08.22
Release: 0
Summary: Configuration for the Raspberry Pi firmware loader
License: MIT
1
0
Hello community,
here is the log from the commit of package mpv for openSUSE:Factory checked in at 2017-08-24 18:55:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/mpv (Old)
and /work/SRC/openSUSE:Factory/.mpv.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mpv"
Thu Aug 24 18:55:46 2017 rev:35 rq:518388 version:unknown
Changes:
--------
--- /work/SRC/openSUSE:Factory/mpv/mpv.changes 2017-08-23 11:54:51.177386777 +0200
+++ /work/SRC/openSUSE:Factory/.mpv.new/mpv.changes 2017-08-24 18:56:16.172719967 +0200
@@ -1,0 +2,6 @@
+Wed Aug 23 08:48:13 UTC 2017 - alarrosa(a)suse.com
+
+- Let mpv own /etc/mpv/scripts as a ghost dir so other packages
+ can create it and install scripts there.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ mpv.spec ++++++
--- /var/tmp/diff_new_pack.3FIZJC/_old 2017-08-24 18:56:17.084591568 +0200
+++ /var/tmp/diff_new_pack.3FIZJC/_new 2017-08-24 18:56:17.088591005 +0200
@@ -268,6 +268,7 @@
%doc %{_defaultdocdir}/%{name}/mpv.conf
%doc %{_defaultdocdir}/%{name}/restore-old-bindings.conf
%dir %{_sysconfdir}/%{name}/
+%ghost %dir %{_sysconfdir}/%{name}/scripts/
%config %{_sysconfdir}/%{name}/encoding-profiles.conf
%config %{_sysconfdir}/%{name}/input.conf
%config %{_sysconfdir}/%{name}/mpv.conf
1
0
Hello community,
here is the log from the commit of package enigmail for openSUSE:Factory checked in at 2017-08-24 18:55:43
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/enigmail (Old)
and /work/SRC/openSUSE:Factory/.enigmail.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "enigmail"
Thu Aug 24 18:55:43 2017 rev:17 rq:518370 version:1.9.8.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/enigmail/enigmail.changes 2017-07-10 11:07:49.748526521 +0200
+++ /work/SRC/openSUSE:Factory/.enigmail.new/enigmail.changes 2017-08-24 18:56:12.933176117 +0200
@@ -1,0 +2,8 @@
+Tue Aug 22 10:46:32 UTC 2017 - astieger(a)suse.com
+
+- enigmail 1.9.8.2:
+ * fixed wrong translation that break keygen dialog
+ * make getting time format more robust
+ * Add support for new type of broken exchange messages
+
+-------------------------------------------------------------------
Old:
----
enigmail-1.9.8.1.tar.gz
enigmail-1.9.8.1.tar.gz.asc
New:
----
enigmail-1.9.8.2.tar.gz
enigmail-1.9.8.2.tar.gz.asc
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ enigmail.spec ++++++
--- /var/tmp/diff_new_pack.cswjDT/_old 2017-08-24 18:56:13.965030825 +0200
+++ /var/tmp/diff_new_pack.cswjDT/_new 2017-08-24 18:56:13.965030825 +0200
@@ -18,7 +18,7 @@
Name: enigmail
-Version: 1.9.8.1
+Version: 1.9.8.2
Release: 0
Summary: OpenPGP addon for Thunderbird and SeaMonkey
License: MPL-2.0
++++++ enigmail-1.9.8.1.tar.gz -> enigmail-1.9.8.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/enigmail/Makefile new/enigmail/Makefile
--- old/enigmail/Makefile 2017-07-08 10:16:24.000000000 +0200
+++ new/enigmail/Makefile 2017-08-21 13:15:03.000000000 +0200
@@ -3,7 +3,7 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
XPI_MODULE = enigmail
-XPI_MODULE_VERS = 1.9.8.1
+XPI_MODULE_VERS = 1.9.8.2
DEPTH = .
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/enigmail/configure new/enigmail/configure
--- old/enigmail/configure 2017-07-08 10:16:24.000000000 +0200
+++ new/enigmail/configure 2017-08-21 13:15:03.000000000 +0200
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for enigmail 1.9.4.
+# Generated by GNU Autoconf 2.69 for enigmail 1.9.8.2.
#
# Report bugs to <https://www.enigmail.net>.
#
@@ -579,8 +579,8 @@
# Identity of this package.
PACKAGE_NAME='enigmail'
PACKAGE_TARNAME='enigmail'
-PACKAGE_VERSION='1.9.4'
-PACKAGE_STRING='enigmail 1.9.4'
+PACKAGE_VERSION='1.9.8.2'
+PACKAGE_STRING='enigmail 1.9.8.2'
PACKAGE_BUGREPORT='https://www.enigmail.net'
PACKAGE_URL=''
@@ -1195,7 +1195,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 enigmail 1.9.4 to adapt to many kinds of systems.
+\`configure' configures enigmail 1.9.8.2 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1261,7 +1261,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of enigmail 1.9.4:";;
+ short | recursive ) echo "Configuration of enigmail 1.9.8.2:";;
esac
cat <<\_ACEOF
@@ -1343,7 +1343,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-enigmail configure 1.9.4
+enigmail configure 1.9.8.2
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1360,7 +1360,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by enigmail $as_me 1.9.4, which was
+It was created by enigmail $as_me 1.9.8.2, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2595,7 +2595,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by enigmail $as_me 1.9.4, which was
+This file was extended by enigmail $as_me 1.9.8.2, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -2648,7 +2648,7 @@
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-enigmail config.status 1.9.4
+enigmail config.status 1.9.8.2
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/enigmail/configure.ac new/enigmail/configure.ac
--- old/enigmail/configure.ac 2017-07-08 10:16:24.000000000 +0200
+++ new/enigmail/configure.ac 2017-08-21 13:15:03.000000000 +0200
@@ -2,7 +2,7 @@
AC_PREREQ(2.61)
min_automake_version="1.10"
-AC_INIT([enigmail],[1.9.4], [https://www.enigmail.net]
+AC_INIT([enigmail],[1.9.8.2], [https://www.enigmail.net]
AC_PATH_PROG(PYTHON, "python2")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/enigmail/lang/it/enigmail.dtd new/enigmail/lang/it/enigmail.dtd
--- old/enigmail/lang/it/enigmail.dtd 2017-07-08 10:16:24.000000000 +0200
+++ new/enigmail/lang/it/enigmail.dtd 2017-08-21 13:15:03.000000000 +0200
@@ -9,7 +9,7 @@
<!ENTITY enigmail.cancelKey.label "Specifica i server delle chiavi">
<!ENTITY enigmail.cancelKey.tooltip "Annulla creazione chiave">
<!ENTITY enigmail.keyGen.expiry.title "Scadenza della chiave">
-<!ENTITY enigmail.keyGen.expire.label "<a class='enigmailStrong'>NOTA: la creazione della chiave può richiedere anche diversi minuti.</a> Non uscire dall'applicazione prima del termine dell'operazione. Navigare su internet o svolgere attività che sfruttino intensamente il disco durante la creazione della chiave potrà facilitare la generazione di numeri casuali e accelerare il processo stesso. Sarai avvertito quando la creazione della chiave sarà stata completata.">
+<!ENTITY enigmail.keyGen.expire.label "La chiave scade tra">
<!ENTITY enigmail.keyGen.days.label "giorni">
<!ENTITY enigmail.keyGen.months.label "mesi">
<!ENTITY enigmail.keyGen.years.label "anni">
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/enigmail/package/fixExchangeMsg.jsm new/enigmail/package/fixExchangeMsg.jsm
--- old/enigmail/package/fixExchangeMsg.jsm 2017-07-08 10:16:24.000000000 +0200
+++ new/enigmail/package/fixExchangeMsg.jsm 2017-08-21 13:15:03.000000000 +0200
@@ -230,8 +230,8 @@
let versionIdent = match.index;
- if (bodyData.substring(skipStart, versionIdent).search(/^content-type:[ \t]*text\/plain/mi) < 0) {
- EnigmailLog.DEBUG("fixExchangeMsg.jsm: getCorrectedExchangeBodyData: first MIME part is not content-type text/plain\n");
+ if (bodyData.substring(skipStart, versionIdent).search(/^content-type:[ \t]*text\/(plain|html)/mi) < 0) {
+ EnigmailLog.DEBUG("fixExchangeMsg.jsm: getCorrectedExchangeBodyData: first MIME part is not content-type text/plain or text/html\n");
return null;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/enigmail/package/install.rdf new/enigmail/package/install.rdf
--- old/enigmail/package/install.rdf 2017-07-08 10:16:24.000000000 +0200
+++ new/enigmail/package/install.rdf 2017-08-21 13:15:03.000000000 +0200
@@ -5,7 +5,7 @@
<Description about="urn:mozilla:install-manifest">
<em:id>{847b3a00-7ab1-11d4-8f02-006008948af5}</em:id>
- <em:version>1.9.8.1</em:version>
+ <em:version>1.9.8.2</em:version>
<em:type>2</em:type> <!-- type = extension -->
<em:unpack>true</em:unpack>
@@ -16,7 +16,7 @@
<Description>
<em:id>{3550f703-e582-4d05-9a08-453d09bdfdc6}</em:id>
<em:minVersion>52.0</em:minVersion>
- <em:maxVersion>56.0</em:maxVersion>
+ <em:maxVersion>55.0</em:maxVersion>
</Description>
</em:targetApplication>
<em:targetApplication>
@@ -24,7 +24,7 @@
<Description>
<em:id>{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}</em:id>
<em:minVersion>2.46</em:minVersion>
- <em:maxVersion>2.53</em:maxVersion>
+ <em:maxVersion>2.52</em:maxVersion>
</Description>
</em:targetApplication>
<!-- em:targetApplication>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/enigmail/package/mimeDecrypt.jsm new/enigmail/package/mimeDecrypt.jsm
--- old/enigmail/package/mimeDecrypt.jsm 2017-07-08 10:16:24.000000000 +0200
+++ new/enigmail/package/mimeDecrypt.jsm 2017-08-21 13:15:03.000000000 +0200
@@ -303,9 +303,9 @@
this.closePipe = true;
}
+
EnigmailLog.DEBUG("mimeDecrypt.jsm: waiting for proc to finish\n");
- while (this.exitCode === null)
- Services.tm.currentThread.processNextEvent(true);
+ this.proc.wait();
this.returnStatus = {};
EnigmailDecryption.decryptMessageEnd(this.statusStr,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/enigmail/package/time.jsm new/enigmail/package/time.jsm
--- old/enigmail/package/time.jsm 2017-07-08 10:16:24.000000000 +0200
+++ new/enigmail/package/time.jsm 2017-08-21 13:15:03.000000000 +0200
@@ -45,7 +45,15 @@
options.minute = DATE_2DIGIT;
}
- return new Intl.DateTimeFormat(appLocale.getCategory("NSILOCALE_TIME"), options).format(dat);
+ let useLocale = appLocale.getCategory("NSILOCALE_TIME").substr(0, 5);
+ useLocale = useLocale.replace(/_/g, "-");
+
+ try {
+ return new Intl.DateTimeFormat(useLocale, options).format(dat);
+ }
+ catch (ex) {
+ return new Intl.DateTimeFormat("en-US", options).format(dat);
+ }
}
else {
return "";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/enigmail/ui/content/enigmailMessengerOverlay.js new/enigmail/ui/content/enigmailMessengerOverlay.js
--- old/enigmail/ui/content/enigmailMessengerOverlay.js 2017-07-08 10:16:24.000000000 +0200
+++ new/enigmail/ui/content/enigmailMessengerOverlay.js 2017-08-21 13:15:03.000000000 +0200
@@ -700,7 +700,7 @@
mimeMsg.parts[0].parts && mimeMsg.parts[0].parts.length && mimeMsg.parts[0].parts.length == 3 &&
mimeMsg.parts[0].headers["content-type"][0].indexOf("multipart/mixed") >= 0 &&
mimeMsg.parts[0].parts[0].headers["content-type"][0].search(/multipart\/encrypted/i) < 0 &&
- mimeMsg.parts[0].parts[0].headers["content-type"][0].indexOf("text/plain") >= 0 &&
+ mimeMsg.parts[0].parts[0].headers["content-type"][0].search(/text\/(plain|html)/i) >= 0 &&
mimeMsg.parts[0].parts[1].headers["content-type"][0].indexOf("application/pgp-encrypted") >= 0) {
if (mimeMsg.parts[0].parts[1].headers["content-type"][0].search(/multipart\/encrypted/i) < 0 &&
mimeMsg.parts[0].parts[1].headers["content-type"][0].search(/PGP\/?MIME Versions? Identification/i) >= 0 &&
1
0
Hello community,
here is the log from the commit of package haproxy for openSUSE:Factory checked in at 2017-08-24 18:55:41
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/haproxy (Old)
and /work/SRC/openSUSE:Factory/.haproxy.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "haproxy"
Thu Aug 24 18:55:41 2017 rev:51 rq:518364 version:1.7.9
Changes:
--------
--- /work/SRC/openSUSE:Factory/haproxy/haproxy.changes 2017-08-10 14:11:41.279960693 +0200
+++ /work/SRC/openSUSE:Factory/.haproxy.new/haproxy.changes 2017-08-24 18:56:08.485802338 +0200
@@ -1,0 +2,21 @@
+Wed Aug 23 06:52:05 UTC 2017 - kgronlund(a)suse.com
+
+- Update to version 1.7.9:
+ * BUG/MINOR: peers: peer synchronization issue (with several peers sections).
+ * BUG/MINOR: lua: In error case, the safe mode is not removed
+ * BUG/MINOR: lua: executes the function destroying the Lua session in safe mode
+ * BUG/MAJOR: lua/socket: resources not detroyed when the socket is aborted
+ * BUG/MEDIUM: lua: bad memory access
+ * DOC: update the list of OpenSSL versions in the README
+ * DOC: Updated 51Degrees git URL to point to a stable version.
+ * BUG/MINOR: http: Set the response error state in http_sync_res_state
+ * MINOR: http: Reorder/rewrite checks in http_resync_states
+ * MINOR: http: Switch requests/responses in TUNNEL mode only by checking txn flags
+ * BUG/MEDIUM: http: Switch HTTP responses in TUNNEL mode when body length is undefined
+ * BUG/MAJOR: http: Fix possible infinity loop in http_sync_(req|res)_state
+ * BUG/MINOR: lua: Fix Server.get_addr() port values
+ * BUG/MINOR: lua: Correctly use INET6_ADDRSTRLEN in Server.get_addr()
+ * BUG/MINOR: lua: always detach the tcp/http tasks before freeing them
+ * BUG/MINOR: lua: Fix bitwise logic for hlua_server_check_* functions.
+
+-------------------------------------------------------------------
Old:
----
haproxy-1.7.8.tar.gz
New:
----
haproxy-1.7.9.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ haproxy.spec ++++++
--- /var/tmp/diff_new_pack.VexKgf/_old 2017-08-24 18:56:09.205700972 +0200
+++ /var/tmp/diff_new_pack.VexKgf/_new 2017-08-24 18:56:09.209700409 +0200
@@ -41,7 +41,7 @@
%bcond_without apparmor
Name: haproxy
-Version: 1.7.8
+Version: 1.7.9
Release: 0
#
#
++++++ _service ++++++
--- /var/tmp/diff_new_pack.VexKgf/_old 2017-08-24 18:56:09.265692525 +0200
+++ /var/tmp/diff_new_pack.VexKgf/_new 2017-08-24 18:56:09.269691961 +0200
@@ -3,8 +3,8 @@
<param name="url">http://git.haproxy.org/git/haproxy-1.7.git</param>
<param name="scm">git</param>
<param name="filename">haproxy</param>
- <param name="versionformat">1.7.8</param>
- <param name="revision">v1.7.8</param>
+ <param name="versionformat">1.7.9</param>
+ <param name="revision">v1.7.9</param>
<param name="changesgenerate">enable</param>
</service>
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.VexKgf/_old 2017-08-24 18:56:09.305686893 +0200
+++ /var/tmp/diff_new_pack.VexKgf/_new 2017-08-24 18:56:09.305686893 +0200
@@ -3,4 +3,4 @@
<param name="url">http://git.haproxy.org/git/haproxy-1.6.git</param>
<param name="changesrevision">864bf78c3b6898eb12ece5f0a44032090f26f57f</param></service><service name="tar_scm">
<param name="url">http://git.haproxy.org/git/haproxy-1.7.git</param>
- <param name="changesrevision">298376c4a77bae10aa6043cf1f8558001a004064</param></service></servicedata>
\ No newline at end of file
+ <param name="changesrevision">640d526f8cdad00f7f5043b51f6a34f3f6ebb49f</param></service></servicedata>
\ No newline at end of file
++++++ haproxy-1.7.8.tar.gz -> haproxy-1.7.9.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/haproxy-1.7.8/CHANGELOG new/haproxy-1.7.9/CHANGELOG
--- old/haproxy-1.7.8/CHANGELOG 2017-07-07 11:49:34.000000000 +0200
+++ new/haproxy-1.7.9/CHANGELOG 2017-08-18 08:33:20.000000000 +0200
@@ -1,6 +1,27 @@
ChangeLog :
===========
+2017/08/18 : 1.7.9
+ - BUG/MINOR: peers: peer synchronization issue (with several peers sections).
+ - BUG/MINOR: lua: In error case, the safe mode is not removed
+ - BUG/MINOR: lua: executes the function destroying the Lua session in safe mode
+ - BUG/MAJOR: lua/socket: resources not detroyed when the socket is aborted
+ - BUG/MEDIUM: lua: bad memory access
+ - DOC: update CONTRIBUTING regarding optional parts and message format
+ - DOC: update the list of OpenSSL versions in the README
+ - MINOR: tools: add a portable timegm() alternative
+ - BUILD: lua: replace timegm() with my_timegm() to fix build on Solaris 10
+ - DOC: Updated 51Degrees git URL to point to a stable version.
+ - BUG/MINOR: http: Set the response error state in http_sync_res_state
+ - MINOR: http: Reorder/rewrite checks in http_resync_states
+ - MINOR: http: Switch requests/responses in TUNNEL mode only by checking txn flags
+ - BUG/MEDIUM: http: Switch HTTP responses in TUNNEL mode when body length is undefined
+ - BUG/MAJOR: http: Fix possible infinity loop in http_sync_(req|res)_state
+ - BUG/MINOR: lua: Fix Server.get_addr() port values
+ - BUG/MINOR: lua: Correctly use INET6_ADDRSTRLEN in Server.get_addr()
+ - BUG/MINOR: lua: always detach the tcp/http tasks before freeing them
+ - BUG/MINOR: lua: Fix bitwise logic for hlua_server_check_* functions.
+
2017/07/07 : 1.7.8
- BUG/MINOR: stream: flag TASK_WOKEN_RES not set if task in runqueue
- BUG/MAJOR: cli: fix custom io_release was crushed by NULL.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/haproxy-1.7.8/CONTRIBUTING new/haproxy-1.7.9/CONTRIBUTING
--- old/haproxy-1.7.8/CONTRIBUTING 2017-07-07 11:49:34.000000000 +0200
+++ new/haproxy-1.7.9/CONTRIBUTING 2017-08-18 08:33:20.000000000 +0200
@@ -69,6 +69,16 @@
Since most of these restrictions are just a matter of coding style, it is
normally not a problem to comply.
+When modifying some optional subsystem (SSL, Lua, compression, device detection
+engines), please make sure the code continues to build (and to work) when these
+features are disabled. Similarly, when modifying the SSL stack, please always
+ensure that supported OpenSSL versions continue to build and to work, especially
+if you modify support for alternate libraries. Clean support for the legacy
+OpenSSL libraries is mandatory, support for its derivatives is a bonus and may
+occasionally break eventhough a great care is taken. In other words, if you
+provide a patch for OpenSSL you don't need to test its derivatives, but if you
+provide a patch for a derivative you also need to test with OpenSSL.
+
If your work is very confidential and you can't publicly discuss it, you can
also mail willy(a)haproxy.org directly about it, but your mail may be waiting
several days in the queue before you get a response, if you get a response at
@@ -441,13 +451,22 @@
way the subject is built. Please see the section below for more information
regarding this formatting.
- As a rule of thumb, your patch must never be made only of a subject line,
+ As a rule of thumb, your patch MUST NEVER be made only of a subject line,
it *must* contain a description. Even one or two lines, or indicating
whether a backport is desired or not. It turns out that single-line commits
are so rare in the Git world that they require special manual (hence
painful) handling when they are backported, and at least for this reason
it's important to keep this in mind.
+ Each patch fixing a bug MUST be tagged with "BUG", a severity level, an
+ indication of the affected subsystem and a brief description of the nature
+ of the issue in the subject line, and a detailed analysis in the message
+ body. The explanation of the user-visible impact and the need for
+ backporting to stable branches or not are MANDATORY. Bug fixes with no
+ indication will simply be rejected as they are very likely to cause more
+ harm when nobody is able to tell whether or not the patch needs to be
+ backported or can be reverted in case of regression.
+
12) Discuss on the mailing list
When submitting changes, please always CC the mailing list address so that
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/haproxy-1.7.8/README new/haproxy-1.7.9/README
--- old/haproxy-1.7.8/README 2017-07-07 11:49:34.000000000 +0200
+++ new/haproxy-1.7.9/README 2017-08-18 08:33:20.000000000 +0200
@@ -3,7 +3,7 @@
----------------------
version 1.7
willy tarreau
- 2017/07/07
+ 2017/08/18
1) How to build it
@@ -113,8 +113,12 @@
Your are strongly encouraged to always use an up-to-date version of OpenSSL, as
found on https://www.openssl.org/ as vulnerabilities are occasionally found and
you don't want them on your systems. HAProxy is known to build correctly on all
-currently supported branches (0.9.8, 1.0.0, 1.0.1 and 1.0.2 at the time of
-writing). Branch 1.0.2 is recommended for the richest features.
+currently supported branches (0.9.8, 1.0.0, 1.0.1, 1.0.2 and 1.1.0 at the time
+of writing). Branch 1.0.2 is currently recommended for the best combination of
+features and stability. Asynchronous engines require OpenSSL 1.1.0 though. It's
+worth mentionning that some OpenSSL derivatives are also reported to work but
+may occasionally break. Patches to fix them are welcome but please read the
+CONTRIBUTING file first.
To link OpenSSL statically against haproxy, build OpenSSL with the no-shared
keyword and install it to a local directory, so your system is not affected :
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/haproxy-1.7.8/VERDATE new/haproxy-1.7.9/VERDATE
--- old/haproxy-1.7.8/VERDATE 2017-07-07 11:49:34.000000000 +0200
+++ new/haproxy-1.7.9/VERDATE 2017-08-18 08:33:20.000000000 +0200
@@ -1,2 +1,2 @@
$Format:%ci$
-2017/07/07
+2017/08/18
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/haproxy-1.7.8/VERSION new/haproxy-1.7.9/VERSION
--- old/haproxy-1.7.8/VERSION 2017-07-07 11:49:34.000000000 +0200
+++ new/haproxy-1.7.9/VERSION 2017-08-18 08:33:20.000000000 +0200
@@ -1 +1 @@
-1.7.8
+1.7.9
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/haproxy-1.7.8/doc/51Degrees-device-detection.txt new/haproxy-1.7.9/doc/51Degrees-device-detection.txt
--- old/haproxy-1.7.8/doc/51Degrees-device-detection.txt 2017-07-07 11:49:34.000000000 +0200
+++ new/haproxy-1.7.9/doc/51Degrees-device-detection.txt 2017-08-18 08:33:20.000000000 +0200
@@ -14,7 +14,7 @@
In order to enable 51Degrees download the 51Degrees source code from the
official github repository :
- git clone https://github.com/51Degrees/Device-Detection
+ git clone https://git.51Degrees.com/Device-Detection.git -b v3.2.10
then run 'make' with USE_51DEGREES and 51DEGREES_SRC set. Both 51DEGREES_INC
and 51DEGREES_LIB may additionally be used to force specific different paths
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/haproxy-1.7.8/doc/configuration.txt new/haproxy-1.7.9/doc/configuration.txt
--- old/haproxy-1.7.8/doc/configuration.txt 2017-07-07 11:49:34.000000000 +0200
+++ new/haproxy-1.7.9/doc/configuration.txt 2017-08-18 08:33:20.000000000 +0200
@@ -4,7 +4,7 @@
----------------------
version 1.7
willy tarreau
- 2017/07/07
+ 2017/08/18
This document covers the configuration language as implemented in the version
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/haproxy-1.7.8/examples/haproxy.spec new/haproxy-1.7.9/examples/haproxy.spec
--- old/haproxy-1.7.8/examples/haproxy.spec 2017-07-07 11:49:34.000000000 +0200
+++ new/haproxy-1.7.9/examples/haproxy.spec 2017-08-18 08:33:20.000000000 +0200
@@ -1,6 +1,6 @@
Summary: HA-Proxy is a TCP/HTTP reverse proxy for high availability environments
Name: haproxy
-Version: 1.7.8
+Version: 1.7.9
Release: 1
License: GPL
Group: System Environment/Daemons
@@ -74,6 +74,9 @@
%attr(0755,root,root) %config %{_sysconfdir}/rc.d/init.d/%{name}
%changelog
+* Fri Aug 18 2017 William Lallemand <wlallemand(a)haproxy.org>
+- updated to 1.7.9
+
* Fri Jul 7 2017 William Lallemand <wlallemand(a)haproxy.org>
- updated to 1.7.8
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/haproxy-1.7.8/include/common/standard.h new/haproxy-1.7.9/include/common/standard.h
--- old/haproxy-1.7.8/include/common/standard.h 2017-07-07 11:49:34.000000000 +0200
+++ new/haproxy-1.7.9/include/common/standard.h 2017-08-18 08:33:20.000000000 +0200
@@ -624,6 +624,27 @@
gmtime_r(&now, tm);
}
+/* Counts a number of elapsed days since 01/01/0000 based solely on elapsed
+ * years and assuming the regular rule for leap years applies. It's fake but
+ * serves as a temporary origin. It's worth remembering that it's the first
+ * year of each period that is leap and not the last one, so for instance year
+ * 1 sees 366 days since year 0 was leap. For this reason we have to apply
+ * modular arithmetics which is why we offset the year by 399 before
+ * subtracting the excess at the end. No overflow here before ~11.7 million
+ * years.
+ */
+static inline unsigned int days_since_zero(unsigned int y)
+{
+ return y * 365 + (y + 399) / 4 - (y + 399) / 100 + (y + 399) / 400
+ - 399 / 4 + 399 / 100;
+}
+
+/* Returns the number of seconds since 01/01/1970 0:0:0 GMT for GMT date <tm>.
+ * It is meant as a portable replacement for timegm() for use with valid inputs.
+ * Returns undefined results for invalid dates (eg: months out of range 0..11).
+ */
+extern time_t my_timegm(const struct tm *tm);
+
/* This function parses a time value optionally followed by a unit suffix among
* "d", "h", "m", "s", "ms" or "us". It converts the value into the unit
* expected by the caller. The computation does its best to avoid overflows.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/haproxy-1.7.8/include/types/applet.h new/haproxy-1.7.9/include/types/applet.h
--- old/haproxy-1.7.8/include/types/applet.h 2017-07-07 11:49:34.000000000 +0200
+++ new/haproxy-1.7.9/include/types/applet.h 2017-08-18 08:33:20.000000000 +0200
@@ -122,6 +122,7 @@
struct hlua_socket *socket;
struct list wake_on_read;
struct list wake_on_write;
+ int die;
} hlua;
struct {
struct hlua hlua;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/haproxy-1.7.8/include/types/peers.h new/haproxy-1.7.9/include/types/peers.h
--- old/haproxy-1.7.8/include/types/peers.h 2017-07-07 11:49:34.000000000 +0200
+++ new/haproxy-1.7.9/include/types/peers.h 2017-08-18 08:33:20.000000000 +0200
@@ -91,7 +91,7 @@
};
-extern struct peers *peers;
+extern struct peers *cfg_peers;
#endif /* _TYPES_PEERS_H */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/haproxy-1.7.8/src/cfgparse.c new/haproxy-1.7.9/src/cfgparse.c
--- old/haproxy-1.7.8/src/cfgparse.c 2017-07-07 11:49:34.000000000 +0200
+++ new/haproxy-1.7.9/src/cfgparse.c 2017-08-18 08:33:20.000000000 +0200
@@ -2124,7 +2124,7 @@
goto out;
}
- for (curpeers = peers; curpeers != NULL; curpeers = curpeers->next) {
+ for (curpeers = cfg_peers; curpeers != NULL; curpeers = curpeers->next) {
/*
* If there are two proxies with the same name only following
* combinations are allowed:
@@ -2142,8 +2142,8 @@
goto out;
}
- curpeers->next = peers;
- peers = curpeers;
+ curpeers->next = cfg_peers;
+ cfg_peers = curpeers;
curpeers->conf.file = strdup(file);
curpeers->conf.line = linenum;
curpeers->last_change = now.tv_sec;
@@ -2223,7 +2223,7 @@
if (strcmp(newpeer->id, localpeer) == 0) {
/* Current is local peer, it define a frontend */
newpeer->local = 1;
- peers->local = newpeer;
+ cfg_peers->local = newpeer;
if (!curpeers->peers_fe) {
if ((curpeers->peers_fe = calloc(1, sizeof(struct proxy))) == NULL) {
@@ -8189,9 +8189,9 @@
}
if (curproxy->table.peers.name) {
- struct peers *curpeers = peers;
+ struct peers *curpeers;
- for (curpeers = peers; curpeers; curpeers = curpeers->next) {
+ for (curpeers = cfg_peers; curpeers; curpeers = curpeers->next) {
if (strcmp(curpeers->id, curproxy->table.peers.name) == 0) {
free((void *)curproxy->table.peers.name);
curproxy->table.peers.p = curpeers;
@@ -9279,15 +9279,15 @@
if (curproxy->table.peers.p)
curproxy->table.peers.p->peers_fe->bind_proc |= curproxy->bind_proc;
- if (peers) {
- struct peers *curpeers = peers, **last;
+ if (cfg_peers) {
+ struct peers *curpeers = cfg_peers, **last;
struct peer *p, *pb;
/* Remove all peers sections which don't have a valid listener,
* which are not used by any table, or which are bound to more
* than one process.
*/
- last = &peers;
+ last = &cfg_peers;
while (*last) {
curpeers = *last;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/haproxy-1.7.8/src/haproxy.c new/haproxy-1.7.9/src/haproxy.c
--- old/haproxy-1.7.8/src/haproxy.c 2017-07-07 11:49:34.000000000 +0200
+++ new/haproxy-1.7.9/src/haproxy.c 2017-08-18 08:33:20.000000000 +0200
@@ -988,7 +988,7 @@
struct peers *pr;
struct proxy *px;
- for (pr = peers; pr; pr = pr->next)
+ for (pr = cfg_peers; pr; pr = pr->next)
if (pr->peers_fe)
break;
@@ -1217,11 +1217,11 @@
if (global.stats_fe)
global.maxsock += global.stats_fe->maxconn;
- if (peers) {
+ if (cfg_peers) {
/* peers also need to bypass global maxconn */
- struct peers *p = peers;
+ struct peers *p = cfg_peers;
- for (p = peers; p; p = p->next)
+ for (p = cfg_peers; p; p = p->next)
if (p->peers_fe)
global.maxsock += p->peers_fe->maxconn;
}
@@ -2067,7 +2067,7 @@
}
/* we might have to unbind some peers sections from some processes */
- for (curpeers = peers; curpeers; curpeers = curpeers->next) {
+ for (curpeers = cfg_peers; curpeers; curpeers = curpeers->next) {
if (!curpeers->peers_fe)
continue;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/haproxy-1.7.8/src/hlua.c new/haproxy-1.7.9/src/hlua.c
--- old/haproxy-1.7.8/src/hlua.c 2017-07-07 11:49:34.000000000 +0200
+++ new/haproxy-1.7.9/src/hlua.c 2017-08-18 08:33:20.000000000 +0200
@@ -854,6 +854,7 @@
lua->T = lua_newthread(gL.T);
if (!lua->T) {
lua->Tref = LUA_REFNIL;
+ RESET_SAFE_LJMP(gL.T);
return 0;
}
hlua_sethlua(lua);
@@ -875,9 +876,15 @@
/* Purge all the pending signals. */
hlua_com_purge(lua);
+ if (!SET_SAFE_LJMP(lua->T))
+ return;
luaL_unref(lua->T, LUA_REGISTRYINDEX, lua->Mref);
- luaL_unref(gL.T, LUA_REGISTRYINDEX, lua->Tref);
+ RESET_SAFE_LJMP(lua->T);
+ if (!SET_SAFE_LJMP(gL.T))
+ return;
+ luaL_unref(gL.T, LUA_REGISTRYINDEX, lua->Tref);
+ RESET_SAFE_LJMP(gL.T);
/* Forces a garbage collecting process. If the Lua program is finished
* without error, we run the GC on the thread pointer. Its freed all
* the unused memory.
@@ -888,9 +895,10 @@
* the garbage collection.
*/
if (lua->flags & HLUA_MUST_GC) {
- lua_gc(lua->T, LUA_GCCOLLECT, 0);
- if (lua_status(lua->T) != LUA_OK)
- lua_gc(gL.T, LUA_GCCOLLECT, 0);
+ if (!SET_SAFE_LJMP(gL.T))
+ return;
+ lua_gc(gL.T, LUA_GCCOLLECT, 0);
+ RESET_SAFE_LJMP(gL.T);
}
lua->T = NULL;
@@ -1530,6 +1538,15 @@
struct stream_interface *si = appctx->owner;
struct connection *c = objt_conn(si_opposite(si)->end);
+ if (appctx->ctx.hlua.die) {
+ si_shutw(si);
+ si_shutr(si);
+ si_ic(si)->flags |= CF_READ_NULL;
+ hlua_com_wake(&appctx->ctx.hlua.wake_on_read);
+ hlua_com_wake(&appctx->ctx.hlua.wake_on_write);
+ stream_shutdown(si_strm(si), SF_ERR_KILLED);
+ }
+
/* If the connection object is not avalaible, close all the
* streams and wakeup everithing waiting for.
*/
@@ -1605,9 +1622,10 @@
/* Remove all reference between the Lua stack and the coroutine stream. */
appctx = objt_appctx(socket->s->si[0].end);
- stream_shutdown(socket->s, SF_ERR_KILLED);
socket->s = NULL;
appctx->ctx.hlua.socket = NULL;
+ appctx->ctx.hlua.die = 1;
+ appctx_wakeup(appctx);
return 0;
}
@@ -1627,10 +1645,11 @@
return 0;
/* Close the stream and remove the associated stop task. */
- stream_shutdown(socket->s, SF_ERR_KILLED);
appctx = objt_appctx(socket->s->si[0].end);
appctx->ctx.hlua.socket = NULL;
socket->s = NULL;
+ appctx->ctx.hlua.die = 1;
+ appctx_wakeup(appctx);
return 0;
}
@@ -2302,6 +2321,7 @@
appctx->ctx.hlua.socket = socket;
appctx->ctx.hlua.connected = 0;
+ appctx->ctx.hlua.die = 0;
LIST_INIT(&appctx->ctx.hlua.wake_on_write);
LIST_INIT(&appctx->ctx.hlua.wake_on_read);
@@ -5928,6 +5948,7 @@
static void hlua_applet_tcp_release(struct appctx *ctx)
{
+ task_delete(ctx->ctx.hlua_apptcp.task);
task_free(ctx->ctx.hlua_apptcp.task);
ctx->ctx.hlua_apptcp.task = NULL;
hlua_ctx_destroy(&ctx->ctx.hlua_apptcp.hlua);
@@ -6206,6 +6227,7 @@
static void hlua_applet_http_release(struct appctx *ctx)
{
+ task_delete(ctx->ctx.hlua_apphttp.task);
task_free(ctx->ctx.hlua_apphttp.task);
ctx->ctx.hlua_apphttp.task = NULL;
hlua_ctx_destroy(&ctx->ctx.hlua_apphttp.hlua);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/haproxy-1.7.8/src/hlua_fcn.c new/haproxy-1.7.9/src/hlua_fcn.c
--- old/haproxy-1.7.8/src/hlua_fcn.c 2017-07-07 11:49:34.000000000 +0200
+++ new/haproxy-1.7.9/src/hlua_fcn.c 2017-08-18 08:33:20.000000000 +0200
@@ -287,7 +287,7 @@
* the timezone from the broken-down time, it must be fixed
* after the conversion.
*/
- time = timegm(&tm);
+ time = my_timegm(&tm);
if (time == -1) {
lua_pushnil(L);
return 1;
@@ -545,17 +545,15 @@
addr, INET_ADDRSTRLEN);
luaL_addstring(&b, addr);
luaL_addstring(&b, ":");
- snprintf(addr, INET_ADDRSTRLEN, "%d",
- ntohs(((struct sockaddr_in *)&srv->addr)->sin_port));
+ snprintf(addr, INET_ADDRSTRLEN, "%d", srv->svc_port);
luaL_addstring(&b, addr);
break;
case AF_INET6:
inet_ntop(AF_INET6, &((struct sockaddr_in6 *)&srv->addr)->sin6_addr,
- addr, INET_ADDRSTRLEN);
+ addr, INET6_ADDRSTRLEN);
luaL_addstring(&b, addr);
luaL_addstring(&b, ":");
- snprintf(addr, INET_ADDRSTRLEN, "%d",
- ntohs(((struct sockaddr_in6 *)&srv->addr)->sin6_port));
+ snprintf(addr, INET_ADDRSTRLEN, "%d", srv->svc_port);
luaL_addstring(&b, addr);
break;
case AF_UNIX:
@@ -664,7 +662,7 @@
sv = hlua_check_server(L, 1);
if (sv->check.state & CHK_ST_CONFIGURED) {
- sv->check.state &= ~CHK_ST_ENABLED;
+ sv->check.state |= CHK_ST_ENABLED;
}
return 0;
}
@@ -675,7 +673,7 @@
sv = hlua_check_server(L, 1);
if (sv->check.state & CHK_ST_CONFIGURED) {
- sv->check.state |= CHK_ST_ENABLED;
+ sv->check.state &= ~CHK_ST_ENABLED;
}
return 0;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/haproxy-1.7.8/src/peers.c new/haproxy-1.7.9/src/peers.c
--- old/haproxy-1.7.8/src/peers.c 2017-07-07 11:49:34.000000000 +0200
+++ new/haproxy-1.7.9/src/peers.c 2017-08-18 08:33:20.000000000 +0200
@@ -171,7 +171,7 @@
#define PEER_MINOR_VER 1
#define PEER_DWNGRD_MINOR_VER 0
-struct peers *peers = NULL;
+struct peers *cfg_peers = NULL;
static void peer_session_forceshutdown(struct appctx *appctx);
/* This function encode an uint64 to 'dynamic' length format.
@@ -727,19 +727,19 @@
/* if current peer is local */
if (curpeer->local) {
/* if current host need resyncfrom local and no process assined */
- if ((peers->flags & PEERS_RESYNC_STATEMASK) == PEERS_RESYNC_FROMLOCAL &&
- !(peers->flags & PEERS_F_RESYNC_ASSIGN)) {
+ if ((curpeers->flags & PEERS_RESYNC_STATEMASK) == PEERS_RESYNC_FROMLOCAL &&
+ !(curpeers->flags & PEERS_F_RESYNC_ASSIGN)) {
/* assign local peer for a lesson, consider lesson already requested */
curpeer->flags |= PEER_F_LEARN_ASSIGN;
- peers->flags |= (PEERS_F_RESYNC_ASSIGN|PEERS_F_RESYNC_PROCESS);
+ curpeers->flags |= (PEERS_F_RESYNC_ASSIGN|PEERS_F_RESYNC_PROCESS);
}
}
- else if ((peers->flags & PEERS_RESYNC_STATEMASK) == PEERS_RESYNC_FROMREMOTE &&
- !(peers->flags & PEERS_F_RESYNC_ASSIGN)) {
+ else if ((curpeers->flags & PEERS_RESYNC_STATEMASK) == PEERS_RESYNC_FROMREMOTE &&
+ !(curpeers->flags & PEERS_F_RESYNC_ASSIGN)) {
/* assign peer for a lesson */
curpeer->flags |= PEER_F_LEARN_ASSIGN;
- peers->flags |= PEERS_F_RESYNC_ASSIGN;
+ curpeers->flags |= PEERS_F_RESYNC_ASSIGN;
}
@@ -807,7 +807,7 @@
curpeer->statuscode = atoi(trash.str);
/* Awake main task */
- task_wakeup(peers->sync_task, TASK_WOKEN_MSG);
+ task_wakeup(curpeers->sync_task, TASK_WOKEN_MSG);
/* If status code is success */
if (curpeer->statuscode == PEER_SESS_SC_SUCCESSCODE) {
@@ -830,14 +830,14 @@
curpeer->flags |= PEER_F_TEACH_PROCESS;
}
- else if ((peers->flags & PEERS_RESYNC_STATEMASK) == PEERS_RESYNC_FROMREMOTE &&
- !(peers->flags & PEERS_F_RESYNC_ASSIGN)) {
+ else if ((curpeers->flags & PEERS_RESYNC_STATEMASK) == PEERS_RESYNC_FROMREMOTE &&
+ !(curpeers->flags & PEERS_F_RESYNC_ASSIGN)) {
/* If peer is remote and resync from remote is needed,
and no peer currently assigned */
/* assign peer for a lesson */
curpeer->flags |= PEER_F_LEARN_ASSIGN;
- peers->flags |= PEERS_F_RESYNC_ASSIGN;
+ curpeers->flags |= PEERS_F_RESYNC_ASSIGN;
}
}
@@ -950,8 +950,8 @@
if (curpeer->flags & PEER_F_LEARN_ASSIGN) {
curpeer->flags &= ~PEER_F_LEARN_ASSIGN;
- peers->flags &= ~(PEERS_F_RESYNC_ASSIGN|PEERS_F_RESYNC_PROCESS);
- peers->flags |= (PEERS_F_RESYNC_LOCAL|PEERS_F_RESYNC_REMOTE);
+ curpeers->flags &= ~(PEERS_F_RESYNC_ASSIGN|PEERS_F_RESYNC_PROCESS);
+ curpeers->flags |= (PEERS_F_RESYNC_LOCAL|PEERS_F_RESYNC_REMOTE);
}
curpeer->confirm++;
}
@@ -959,11 +959,11 @@
if (curpeer->flags & PEER_F_LEARN_ASSIGN) {
curpeer->flags &= ~PEER_F_LEARN_ASSIGN;
- peers->flags &= ~(PEERS_F_RESYNC_ASSIGN|PEERS_F_RESYNC_PROCESS);
+ curpeers->flags &= ~(PEERS_F_RESYNC_ASSIGN|PEERS_F_RESYNC_PROCESS);
curpeer->flags |= PEER_F_LEARN_NOTUP2DATE;
- peers->resync_timeout = tick_add(now_ms, MS_TO_TICKS(5000));
- task_wakeup(peers->sync_task, TASK_WOKEN_MSG);
+ curpeers->resync_timeout = tick_add(now_ms, MS_TO_TICKS(5000));
+ task_wakeup(curpeers->sync_task, TASK_WOKEN_MSG);
}
curpeer->confirm++;
}
@@ -1334,8 +1334,8 @@
/* Need to request a resync */
if ((curpeer->flags & PEER_F_LEARN_ASSIGN) &&
- (peers->flags & PEERS_F_RESYNC_ASSIGN) &&
- !(peers->flags & PEERS_F_RESYNC_PROCESS)) {
+ (curpeers->flags & PEERS_F_RESYNC_ASSIGN) &&
+ !(curpeers->flags & PEERS_F_RESYNC_PROCESS)) {
unsigned char msg[2];
/* Current peer was elected to request a resync */
@@ -1351,7 +1351,7 @@
appctx->st0 = PEER_SESS_ST_END;
goto switchstate;
}
- peers->flags |= PEERS_F_RESYNC_PROCESS;
+ curpeers->flags |= PEERS_F_RESYNC_PROCESS;
}
/* Nothing to read, now we start to write */
@@ -1624,7 +1624,7 @@
/* Current peer was elected to request a resync */
msg[0] = PEER_MSG_CLASS_CONTROL;
- msg[1] = ((peers->flags & PEERS_RESYNC_STATEMASK) == PEERS_RESYNC_FINISHED) ? PEER_MSG_CTRL_RESYNCFINISHED : PEER_MSG_CTRL_RESYNCPARTIAL;
+ msg[1] = ((curpeers->flags & PEERS_RESYNC_STATEMASK) == PEERS_RESYNC_FINISHED) ? PEER_MSG_CTRL_RESYNCFINISHED : PEER_MSG_CTRL_RESYNCPARTIAL;
/* process final lesson message */
repl = bi_putblk(si_ic(si), (char *)msg, sizeof(msg));
if (repl <= 0) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/haproxy-1.7.8/src/proto_http.c new/haproxy-1.7.9/src/proto_http.c
--- old/haproxy-1.7.8/src/proto_http.c 2017-07-07 11:49:34.000000000 +0200
+++ new/haproxy-1.7.9/src/proto_http.c 2017-08-18 08:33:20.000000000 +0200
@@ -5294,7 +5294,7 @@
unsigned int old_flags = chn->flags;
unsigned int old_state = txn->req.msg_state;
- if (unlikely(txn->req.msg_state < HTTP_MSG_BODY))
+ if (unlikely(txn->req.msg_state < HTTP_MSG_DONE))
return 0;
if (txn->req.msg_state == HTTP_MSG_DONE) {
@@ -5338,13 +5338,6 @@
goto wait_other_side;
}
- if (txn->rsp.msg_state == HTTP_MSG_TUNNEL) {
- /* if any side switches to tunnel mode, the other one does too */
- channel_auto_read(chn);
- txn->req.msg_state = HTTP_MSG_TUNNEL;
- goto wait_other_side;
- }
-
/* When we get here, it means that both the request and the
* response have finished receiving. Depending on the connection
* mode, we'll have to wait for the last bytes to leave in either
@@ -5361,7 +5354,16 @@
* let's enforce it now that we're not expecting any new
* data to come. The caller knows the stream is complete
* once both states are CLOSED.
+ *
+ * However, there is an exception if the response
+ * length is undefined. In this case, we need to wait
+ * the close from the server. The response will be
+ * switched in TUNNEL mode until the end.
*/
+ if (!(txn->rsp.flags & HTTP_MSGF_XFER_LEN) &&
+ txn->rsp.msg_state != HTTP_MSG_CLOSED)
+ goto check_channel_flags;
+
if (!(chn->flags & (CF_SHUTW|CF_SHUTW_NOW))) {
channel_shutr_now(chn);
channel_shutw_now(chn);
@@ -5377,20 +5379,7 @@
}
}
- if (chn->flags & (CF_SHUTW|CF_SHUTW_NOW)) {
- /* if we've just closed an output, let's switch */
- s->si[1].flags |= SI_FL_NOLINGER; /* we want to close ASAP */
-
- if (!channel_is_empty(chn)) {
- txn->req.msg_state = HTTP_MSG_CLOSING;
- goto http_msg_closing;
- }
- else {
- txn->req.msg_state = HTTP_MSG_CLOSED;
- goto http_msg_closed;
- }
- }
- goto wait_other_side;
+ goto check_channel_flags;
}
if (txn->req.msg_state == HTTP_MSG_CLOSING) {
@@ -5405,8 +5394,8 @@
else if (chn->flags & CF_SHUTW) {
txn->req.err_state = txn->req.msg_state;
txn->req.msg_state = HTTP_MSG_ERROR;
- goto wait_other_side;
}
+ goto wait_other_side;
}
if (txn->req.msg_state == HTTP_MSG_CLOSED) {
@@ -5419,6 +5408,16 @@
goto wait_other_side;
}
+ check_channel_flags:
+ /* Here, we are in HTTP_MSG_DONE or HTTP_MSG_TUNNEL */
+ if (chn->flags & (CF_SHUTW|CF_SHUTW_NOW)) {
+ /* if we've just closed an output, let's switch */
+ s->si[1].flags |= SI_FL_NOLINGER; /* we want to close ASAP */
+ txn->req.msg_state = HTTP_MSG_CLOSING;
+ goto http_msg_closing;
+ }
+
+
wait_other_side:
return txn->req.msg_state != old_state || chn->flags != old_flags;
}
@@ -5438,7 +5437,7 @@
unsigned int old_flags = chn->flags;
unsigned int old_state = txn->rsp.msg_state;
- if (unlikely(txn->rsp.msg_state < HTTP_MSG_BODY))
+ if (unlikely(txn->rsp.msg_state < HTTP_MSG_DONE))
return 0;
if (txn->rsp.msg_state == HTTP_MSG_DONE) {
@@ -5461,14 +5460,6 @@
goto wait_other_side;
}
- if (txn->req.msg_state == HTTP_MSG_TUNNEL) {
- /* if any side switches to tunnel mode, the other one does too */
- channel_auto_read(chn);
- txn->rsp.msg_state = HTTP_MSG_TUNNEL;
- chn->flags |= CF_NEVER_WAIT;
- goto wait_other_side;
- }
-
/* When we get here, it means that both the request and the
* response have finished receiving. Depending on the connection
* mode, we'll have to wait for the last bytes to leave in either
@@ -5489,8 +5480,16 @@
* let's enforce it now that we're not expecting any new
* data to come. The caller knows the stream is complete
* once both states are CLOSED.
+ *
+ * However, there is an exception if the response length
+ * is undefined. In this case, we switch in TUNNEL mode.
*/
- if (!(chn->flags & (CF_SHUTW|CF_SHUTW_NOW))) {
+ if (!(txn->rsp.flags & HTTP_MSGF_XFER_LEN)) {
+ channel_auto_read(chn);
+ txn->rsp.msg_state = HTTP_MSG_TUNNEL;
+ chn->flags |= CF_NEVER_WAIT;
+ }
+ else if (!(chn->flags & (CF_SHUTW|CF_SHUTW_NOW))) {
channel_shutr_now(chn);
channel_shutw_now(chn);
}
@@ -5506,18 +5505,7 @@
txn->rsp.msg_state = HTTP_MSG_TUNNEL;
}
- if (chn->flags & (CF_SHUTW|CF_SHUTW_NOW)) {
- /* if we've just closed an output, let's switch */
- if (!channel_is_empty(chn)) {
- txn->rsp.msg_state = HTTP_MSG_CLOSING;
- goto http_msg_closing;
- }
- else {
- txn->rsp.msg_state = HTTP_MSG_CLOSED;
- goto http_msg_closed;
- }
- }
- goto wait_other_side;
+ goto check_channel_flags;
}
if (txn->rsp.msg_state == HTTP_MSG_CLOSING) {
@@ -5530,13 +5518,13 @@
goto http_msg_closed;
}
else if (chn->flags & CF_SHUTW) {
- txn->req.err_state = txn->req.msg_state;
+ txn->rsp.err_state = txn->rsp.msg_state;
txn->rsp.msg_state = HTTP_MSG_ERROR;
s->be->be_counters.cli_aborts++;
if (objt_server(s->target))
objt_server(s->target)->counters.cli_aborts++;
- goto wait_other_side;
}
+ goto wait_other_side;
}
if (txn->rsp.msg_state == HTTP_MSG_CLOSED) {
@@ -5548,6 +5536,14 @@
goto wait_other_side;
}
+ check_channel_flags:
+ /* Here, we are in HTTP_MSG_DONE or HTTP_MSG_TUNNEL */
+ if (chn->flags & (CF_SHUTW|CF_SHUTW_NOW)) {
+ /* if we've just closed an output, let's switch */
+ txn->rsp.msg_state = HTTP_MSG_CLOSING;
+ goto http_msg_closing;
+ }
+
wait_other_side:
/* We force the response to leave immediately if we're waiting for the
* other side, since there is no pending shutdown to push it out.
@@ -5577,34 +5573,27 @@
/* OK, both state machines agree on a compatible state.
* There are a few cases we're interested in :
- * - HTTP_MSG_TUNNEL on either means we have to disable both analysers
* - HTTP_MSG_CLOSED on both sides means we've reached the end in both
* directions, so let's simply disable both analysers.
- * - HTTP_MSG_CLOSED on the response only means we must abort the
- * request.
- * - HTTP_MSG_CLOSED on the request and HTTP_MSG_DONE on the response
- * with server-close mode means we've completed one request and we
- * must re-initialize the server connection.
+ * - HTTP_MSG_CLOSED on the response only or HTTP_MSG_ERROR on either
+ * means we must abort the request.
+ * - HTTP_MSG_TUNNEL on either means we have to disable analyser on
+ * corresponding channel.
+ * - HTTP_MSG_DONE or HTTP_MSG_CLOSED on the request and HTTP_MSG_DONE
+ * on the response with server-close mode means we've completed one
+ * request and we must re-initialize the server connection.
*/
-
- if (txn->req.msg_state == HTTP_MSG_TUNNEL ||
- txn->rsp.msg_state == HTTP_MSG_TUNNEL ||
- (txn->req.msg_state == HTTP_MSG_CLOSED &&
- txn->rsp.msg_state == HTTP_MSG_CLOSED)) {
+ if (txn->req.msg_state == HTTP_MSG_CLOSED &&
+ txn->rsp.msg_state == HTTP_MSG_CLOSED) {
s->req.analysers &= AN_REQ_FLT_END;
channel_auto_close(&s->req);
channel_auto_read(&s->req);
s->res.analysers &= AN_RES_FLT_END;
channel_auto_close(&s->res);
channel_auto_read(&s->res);
- if (txn->req.msg_state == HTTP_MSG_TUNNEL && HAS_REQ_DATA_FILTERS(s))
- s->req.analysers |= AN_REQ_FLT_XFER_DATA;
- if (txn->rsp.msg_state == HTTP_MSG_TUNNEL && HAS_RSP_DATA_FILTERS(s))
- s->res.analysers |= AN_RES_FLT_XFER_DATA;
- }
- else if ((txn->req.msg_state >= HTTP_MSG_DONE &&
- (txn->rsp.msg_state == HTTP_MSG_CLOSED || (s->res.flags & CF_SHUTW))) ||
- txn->rsp.msg_state == HTTP_MSG_ERROR ||
+ }
+ else if (txn->rsp.msg_state == HTTP_MSG_CLOSED ||
+ txn->rsp.msg_state == HTTP_MSG_ERROR ||
txn->req.msg_state == HTTP_MSG_ERROR) {
s->res.analysers &= AN_RES_FLT_END;
channel_auto_close(&s->res);
@@ -5615,6 +5604,23 @@
channel_auto_read(&s->req);
channel_truncate(&s->req);
}
+ else if (txn->req.msg_state == HTTP_MSG_TUNNEL ||
+ txn->rsp.msg_state == HTTP_MSG_TUNNEL) {
+ if (txn->req.msg_state == HTTP_MSG_TUNNEL) {
+ s->req.analysers &= AN_REQ_FLT_END;
+ if (HAS_REQ_DATA_FILTERS(s))
+ s->req.analysers |= AN_REQ_FLT_XFER_DATA;
+ }
+ if (txn->rsp.msg_state == HTTP_MSG_TUNNEL) {
+ s->res.analysers &= AN_RES_FLT_END;
+ if (HAS_RSP_DATA_FILTERS(s))
+ s->res.analysers |= AN_RES_FLT_XFER_DATA;
+ }
+ channel_auto_close(&s->req);
+ channel_auto_read(&s->req);
+ channel_auto_close(&s->res);
+ channel_auto_read(&s->res);
+ }
else if ((txn->req.msg_state == HTTP_MSG_DONE ||
txn->req.msg_state == HTTP_MSG_CLOSED) &&
txn->rsp.msg_state == HTTP_MSG_DONE &&
@@ -6963,14 +6969,6 @@
if ((msg->flags & HTTP_MSGF_TE_CHNK) || (msg->flags & HTTP_MSGF_COMPRESSING))
res->flags |= CF_EXPECT_MORE;
- /* If there is neither content-length, nor transfer-encoding header
- * _AND_ there is no data filtering, we can safely forward all data
- * indefinitely. */
- if (!(msg->flags & HTTP_MSGF_XFER_LEN) && !HAS_DATA_FILTERS(s, res)) {
- buffer_flush(res->buf);
- channel_forward_forever(res);
- }
-
/* the stream handler will take care of timeouts and errors */
return 0;
@@ -7047,9 +7045,13 @@
goto missing_data_or_waiting;
}
- /* The server still sending data that should be filtered */
- if (!(msg->flags & HTTP_MSGF_XFER_LEN) && !(chn->flags & CF_SHUTR))
- goto missing_data_or_waiting;
+ /* This check can only be true for a response. HTTP_MSGF_XFER_LEN is
+ * always set for a request. */
+ if (!(msg->flags & HTTP_MSGF_XFER_LEN)) {
+ /* The server still sending data that should be filtered */
+ if (!(chn->flags & CF_SHUTR) && HAS_DATA_FILTERS(s, chn))
+ goto missing_data_or_waiting;
+ }
msg->msg_state = HTTP_MSG_ENDING;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/haproxy-1.7.8/src/proxy.c new/haproxy-1.7.9/src/proxy.c
--- old/haproxy-1.7.8/src/proxy.c 2017-07-07 11:49:34.000000000 +0200
+++ new/haproxy-1.7.9/src/proxy.c 2017-08-18 08:33:20.000000000 +0200
@@ -1007,7 +1007,7 @@
p = p->next;
}
- prs = peers;
+ prs = cfg_peers;
while (prs) {
if (prs->peers_fe)
stop_proxy(prs->peers_fe);
@@ -1142,7 +1142,7 @@
p = p->next;
}
- prs = peers;
+ prs = cfg_peers;
while (prs) {
if (prs->peers_fe)
err |= !pause_proxy(prs->peers_fe);
@@ -1176,7 +1176,7 @@
p = p->next;
}
- prs = peers;
+ prs = cfg_peers;
while (prs) {
if (prs->peers_fe)
err |= !resume_proxy(prs->peers_fe);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/haproxy-1.7.8/src/standard.c new/haproxy-1.7.9/src/standard.c
--- old/haproxy-1.7.8/src/standard.c 2017-07-07 11:49:34.000000000 +0200
+++ new/haproxy-1.7.9/src/standard.c 2017-08-18 08:33:20.000000000 +0200
@@ -2841,6 +2841,60 @@
return dst;
}
+/* Returns the number of seconds since 01/01/1970 0:0:0 GMT for GMT date <tm>.
+ * It is meant as a portable replacement for timegm() for use with valid inputs.
+ * Returns undefined results for invalid dates (eg: months out of range 0..11).
+ */
+time_t my_timegm(const struct tm *tm)
+{
+ /* Each month has 28, 29, 30 or 31 days, or 28+N. The date in the year
+ * is thus (current month - 1)*28 + cumulated_N[month] to count the
+ * sum of the extra N days for elapsed months. The sum of all these N
+ * days doesn't exceed 30 for a complete year (366-12*28) so it fits
+ * in a 5-bit word. This means that with 60 bits we can represent a
+ * matrix of all these values at once, which is fast and efficient to
+ * access. The extra February day for leap years is not counted here.
+ *
+ * Jan : none = 0 (0)
+ * Feb : Jan = 3 (3)
+ * Mar : Jan..Feb = 3 (3 + 0)
+ * Apr : Jan..Mar = 6 (3 + 0 + 3)
+ * May : Jan..Apr = 8 (3 + 0 + 3 + 2)
+ * Jun : Jan..May = 11 (3 + 0 + 3 + 2 + 3)
+ * Jul : Jan..Jun = 13 (3 + 0 + 3 + 2 + 3 + 2)
+ * Aug : Jan..Jul = 16 (3 + 0 + 3 + 2 + 3 + 2 + 3)
+ * Sep : Jan..Aug = 19 (3 + 0 + 3 + 2 + 3 + 2 + 3 + 3)
+ * Oct : Jan..Sep = 21 (3 + 0 + 3 + 2 + 3 + 2 + 3 + 3 + 2)
+ * Nov : Jan..Oct = 24 (3 + 0 + 3 + 2 + 3 + 2 + 3 + 3 + 2 + 3)
+ * Dec : Jan..Nov = 26 (3 + 0 + 3 + 2 + 3 + 2 + 3 + 3 + 2 + 3 + 2)
+ */
+ uint64_t extra =
+ ( 0ULL << 0*5) + ( 3ULL << 1*5) + ( 3ULL << 2*5) + /* Jan, Feb, Mar, */
+ ( 6ULL << 3*5) + ( 8ULL << 4*5) + (11ULL << 5*5) + /* Apr, May, Jun, */
+ (13ULL << 6*5) + (16ULL << 7*5) + (19ULL << 8*5) + /* Jul, Aug, Sep, */
+ (21ULL << 9*5) + (24ULL << 10*5) + (26ULL << 11*5); /* Oct, Nov, Dec, */
+
+ unsigned int y = tm->tm_year + 1900;
+ unsigned int m = tm->tm_mon;
+ unsigned long days = 0;
+
+ /* days since 1/1/1970 for full years */
+ days += days_since_zero(y) - days_since_zero(1970);
+
+ /* days for full months in the current year */
+ days += 28 * m + ((extra >> (m * 5)) & 0x1f);
+
+ /* count + 1 after March for leap years. A leap year is a year multiple
+ * of 4, unless it's multiple of 100 without being multiple of 400. 2000
+ * is leap, 1900 isn't, 1904 is.
+ */
+ if ((m > 1) && !(y & 3) && ((y % 100) || !(y % 400)))
+ days++;
+
+ days += tm->tm_mday - 1;
+ return days * 86400ULL + tm->tm_hour * 3600 + tm->tm_min * 60 + tm->tm_sec;
+}
+
/* This function check a char. It returns true and updates
* <date> and <len> pointer to the new position if the
* character is found.
1
0
Hello community,
here is the log from the commit of package krita for openSUSE:Factory checked in at 2017-08-24 18:55:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/krita (Old)
and /work/SRC/openSUSE:Factory/.krita.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "krita"
Thu Aug 24 18:55:39 2017 rev:13 rq:518353 version:3.2.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/krita/krita.changes 2017-07-26 13:06:17.037725716 +0200
+++ /work/SRC/openSUSE:Factory/.krita.new/krita.changes 2017-08-24 18:55:58.319233862 +0200
@@ -1,0 +2,20 @@
+Mon Aug 21 10:00:04 UTC 2017 - wbauer(a)tmo.at
+
+- Use the %kf5_find_lang macro to get the file list for the lang
+ package
+
+-------------------------------------------------------------------
+Thu Aug 17 12:17:56 UTC 2017 - wbauer(a)tmo.at
+
+- Update to version 3.2.0:
+ * New G'Mic-qt plugin integration
+ * Smart patch tool
+ * Finger painting on touch screens
+ * New brush presets
+ * A lot of bug fixes
+ * See also https://krita.org/en/release-notes-for-krita-3-2/
+- Drop Drop-QForeachContainer-include.patch, merged upstream
+- Remove build-compare workaround from the specfile, the
+ corresponding source file doesn't exist anymore
+
+-------------------------------------------------------------------
Old:
----
Drop-QForeachContainer-include.patch
krita-3.1.4.tar.gz
New:
----
krita-3.2.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ krita.spec ++++++
--- /var/tmp/diff_new_pack.KRd5Hf/_old 2017-08-24 18:56:06.550074902 +0200
+++ /var/tmp/diff_new_pack.KRd5Hf/_new 2017-08-24 18:56:06.550074902 +0200
@@ -19,7 +19,7 @@
%bcond_without lang
Name: krita
-Version: 3.1.4
+Version: 3.2.0
Release: 0
Summary: Digital Painting Application
License: GPL-2.0+ and LGPL-2.1+
@@ -27,8 +27,6 @@
Url: http://www.krita.org/
Source0: http://download.kde.org/stable/krita/%{version}/krita-%{version}.tar.gz
Source99: %{name}.changes
-# PATCH-FIX-UPSTREAM Drop-QForeachContainer-include.patch -- fixes build with Qt 5.9
-Patch: Drop-QForeachContainer-include.patch
BuildRequires: Mesa-devel
BuildRequires: OpenColorIO-devel
BuildRequires: OpenEXR-devel
@@ -128,16 +126,9 @@
%prep
%setup -q -n krita-%{version}
-%patch -p1
-
-# Remove build time references so build-compare can do its work
-FAKE_BUILDDATE=$(LC_ALL=C date -u -r %{SOURCE99} '+%%b %%e %%Y')
-FAKE_TIME=$(LC_ALL=C date -u -r %{SOURCE99} '+%%H:%%M')
-sed -i "s/__DATE__/\"$FAKE_BUILDDATE\"/" plugins/extensions/gmic/3rdparty/gmic/CImg.h
-sed -i "s/__TIME__/\"$FAKE_TIME\"/" plugins/extensions/gmic/3rdparty/gmic/CImg.h
%build
-# install translations to %{_kf5_localedir} so they don't clash with the krita translations in calligra-l10n (KDE4 based)
+# install translations to %%{_kf5_localedir} so they don't clash with the krita translations in calligra-l10n (KDE4 based)
# can probably be changed back to the standard location when calligra is KF5 based...
%cmake_kf5 -d build -- -DCMAKE_INSTALL_LOCALEDIR=%{_kf5_localedir}
%make_jobs
@@ -145,6 +136,9 @@
%install
%kf5_makeinstall -C build
%suse_update_desktop_file -r org.kde.krita Qt KDE Graphics RasterGraphics
+%if %{with lang}
+%kf5_find_lang %{name}
+%endif
chmod -x %{buildroot}/%{_kf5_applicationsdir}/*.desktop
# Otherwise the devel package conflicts with calligra-krita, where it is *not* a devel file...
@@ -157,7 +151,6 @@
%defattr(-,root,root,-)
%doc COPYING* AUTHORS HACKING README*
%{_kf5_bindir}/krita
-%{_kf5_bindir}/gmicparser
%{_kf5_applicationsdir}/*.desktop
%{_kf5_sharedir}/krita/
%{_kf5_appstreamdir}/
@@ -183,9 +176,7 @@
%{_kf5_libdir}/libkrita*.so
%if %{with lang}
-%files lang
-%defattr(-,root,root,-)
-%{_kf5_localedir}
+%files lang -f %{name}.lang
%endif
%changelog
++++++ krita-3.1.4.tar.gz -> krita-3.2.0.tar.gz ++++++
/work/SRC/openSUSE:Factory/krita/krita-3.1.4.tar.gz /work/SRC/openSUSE:Factory/.krita.new/krita-3.2.0.tar.gz differ: char 5, line 1
1
0