--- Begin Message ---
Package: release.debian.org
User: release.debian.org@packages.debian.org
Usertags: unblock
Dear release team,
Please consider unblocking redis 3:3.2.8-2 for stretch:
* It includes updates designated "upgrade urgency HIGH" by upstream.
* It fixes a (minor) cross-scripting attacking.
* It fixes some internal Debian packaging/systemd brokenness.
The relevant debian/changelog entries are:
redis (3:3.2.8-2) unstable; urgency=medium
* Avoid conflict between RuntimeDirectory and tmpfiles.d(5) both attempting
to create /run/redis with differing permissions.
This prevents an installation error on Jessie where /run/redis was first
being created by the tmpfiles.d(5) mechanism and then subsequently via the
RuntimeDirectory directive. Due to a bug in Jessie's systemd, this caused a
package installation error as systemd was too strict about permissions if
the target already exists: <https://github.com/systemd/systemd/pull/896>
The redis-{server,sentinel} daemon would actually start successfully a few
milliseconds later due to the Restart=always directive.
We work around this this by dropping the tmpfiles.d(5) handling and moving
entirely to RuntimeDirectory{,Mode}; we are not using any special handling
requiring tmpfiles.d(5) and we appear to need RuntimeDirectory anyway for
#846350. (Closes: #856116)
-- Chris Lamb <lamby@debian.org> Sat, 11 Mar 2017 12:53:14 +0000
redis (3:3.2.8-1) unstable; urgency=medium
* New upstream release.
-- Chris Lamb <lamby@debian.org> Mon, 13 Feb 2017 10:15:53 +1300
redis (3:3.2.7-1) unstable; urgency=medium
* New upstream release.
-- Chris Lamb <lamby@debian.org> Wed, 01 Feb 2017 09:27:05 +1300
redis (3:3.2.6-6) unstable; urgency=medium
* Use --cpu-list 0 (not --cpu-list 1) to ensure compilation on single-CPU
machines. (Closes: #852347)
-- Chris Lamb <lamby@debian.org> Tue, 24 Jan 2017 11:59:02 +1300
redis (3:3.2.6-5) unstable; urgency=medium
* Re-add taskset calls to try and avoid FTBFS due to parallelism in upstream
test suite.
-- Chris Lamb <lamby@debian.org> Mon, 23 Jan 2017 13:24:39 +1300
redis (3:3.2.6-4) unstable; urgency=medium
* Expand the documentation in redis-server.service and redis-sentinel
regarding the default hardening options.
-- Chris Lamb <lamby@debian.org> Sat, 21 Jan 2017 11:21:33 +1100
redis (3:3.2.6-3) unstable; urgency=medium
* Don't ship a "duplicate" redis-server binary in redis-tools as
/usr/bin/redis-check-rdb (it checks argv to change its behaviour) by
replacing it with a symlink. Found by <https://dedup.debian.net/>.
-- Chris Lamb <lamby@debian.org> Wed, 11 Jan 2017 17:04:33 +0000
redis (3:3.2.6-2) unstable; urgency=medium
* Rename RunTimeDirectory -> RuntimeDirectory in .service files.
(Closes: #850534)
* Refresh all patches with pq import -> pq export.
* Tidy all patches, updating descriptions and use Pq-Topic to organise.
-- Chris Lamb <lamby@debian.org> Sat, 07 Jan 2017 18:06:14 +0000
The full diffoscope diff is attached; note there very little actual change
to the code.
Regards,
--
,''`.
: :' : Chris Lamb
`. `'` lamby@debian.org / chris-lamb.co.uk
`-
--- /tmp/what-changed.redis.k9cqt5gv.a
+++ /tmp/what-changed.redis.77r9sp72.b
â??â??â?? file list
â?? @@ -7,38 +7,39 @@
â?? redis/.pc/0001-fix-ftbfs-on-kfreebsd.patch
â?? redis/.pc/0001-fix-ftbfs-on-kfreebsd.patch/deps
â?? redis/.pc/0001-fix-ftbfs-on-kfreebsd.patch/deps/hiredis
â?? redis/.pc/0001-fix-ftbfs-on-kfreebsd.patch/deps/hiredis/net.c
â?? redis/.pc/0002-fix-ftbfs-on-kfreebsd.patch
â?? redis/.pc/0002-fix-ftbfs-on-kfreebsd.patch/src
â?? redis/.pc/0002-fix-ftbfs-on-kfreebsd.patch/src/fmacros.h
â?? -redis/.pc/0003-use-system-jemalloc.patch
â?? -redis/.pc/0003-use-system-jemalloc.patch/src
â?? -redis/.pc/0003-use-system-jemalloc.patch/src/Makefile
â?? -redis/.pc/0003-use-system-jemalloc.patch/src/debug.c
â?? -redis/.pc/0003-use-system-jemalloc.patch/src/zmalloc.c
â?? -redis/.pc/0003-use-system-jemalloc.patch/src/zmalloc.h
â?? -redis/.pc/0004-dpkg-buildflags.patch
â?? -redis/.pc/0004-dpkg-buildflags.patch/deps
â?? -redis/.pc/0004-dpkg-buildflags.patch/deps/hiredis
â?? -redis/.pc/0004-dpkg-buildflags.patch/deps/hiredis/Makefile
â?? -redis/.pc/0004-dpkg-buildflags.patch/deps/linenoise
â?? -redis/.pc/0004-dpkg-buildflags.patch/deps/linenoise/Makefile
â?? -redis/.pc/0004-dpkg-buildflags.patch/src
â?? -redis/.pc/0004-dpkg-buildflags.patch/src/Makefile
â?? redis/.pc/0005-SOURCE_DATE_EPOCH.patch
â?? redis/.pc/0005-SOURCE_DATE_EPOCH.patch/src
â?? redis/.pc/0005-SOURCE_DATE_EPOCH.patch/src/mkreleasehdr.sh
â?? -redis/.pc/0006-Skip-logging-tests-as-not-all-architectures-support-.patch
â?? -redis/.pc/0006-Skip-logging-tests-as-not-all-architectures-support-.patch/tests
â?? -redis/.pc/0006-Skip-logging-tests-as-not-all-architectures-support-.patch/tests/test_helper.tcl
â?? -redis/.pc/0008-Drop-tests-with-timing-issues.patch
â?? -redis/.pc/0008-Drop-tests-with-timing-issues.patch/tests
â?? -redis/.pc/0008-Drop-tests-with-timing-issues.patch/tests/test_helper.tcl
â?? redis/.pc/applied-patches
â?? +redis/.pc/debian-packaging
â?? +redis/.pc/debian-packaging/0003-use-system-jemalloc.patch
â?? +redis/.pc/debian-packaging/0003-use-system-jemalloc.patch/src
â?? +redis/.pc/debian-packaging/0003-use-system-jemalloc.patch/src/Makefile
â?? +redis/.pc/debian-packaging/0003-use-system-jemalloc.patch/src/debug.c
â?? +redis/.pc/debian-packaging/0003-use-system-jemalloc.patch/src/zmalloc.c
â?? +redis/.pc/debian-packaging/0003-use-system-jemalloc.patch/src/zmalloc.h
â?? +redis/.pc/debian-packaging/0004-dpkg-buildflags.patch
â?? +redis/.pc/debian-packaging/0004-dpkg-buildflags.patch/deps
â?? +redis/.pc/debian-packaging/0004-dpkg-buildflags.patch/deps/hiredis
â?? +redis/.pc/debian-packaging/0004-dpkg-buildflags.patch/deps/hiredis/Makefile
â?? +redis/.pc/debian-packaging/0004-dpkg-buildflags.patch/deps/linenoise
â?? +redis/.pc/debian-packaging/0004-dpkg-buildflags.patch/deps/linenoise/Makefile
â?? +redis/.pc/debian-packaging/0004-dpkg-buildflags.patch/src
â?? +redis/.pc/debian-packaging/0004-dpkg-buildflags.patch/src/Makefile
â?? +redis/.pc/debian-packaging/0006-Skip-logging-tests-as-not-all-architectures-support-.patch
â?? +redis/.pc/debian-packaging/0006-Skip-logging-tests-as-not-all-architectures-support-.patch/tests
â?? +redis/.pc/debian-packaging/0006-Skip-logging-tests-as-not-all-architectures-support-.patch/tests/test_helper.tcl
â?? +redis/.pc/debian-packaging/0008-Drop-tests-with-timing-issues.patch
â?? +redis/.pc/debian-packaging/0008-Drop-tests-with-timing-issues.patch/tests
â?? +redis/.pc/debian-packaging/0008-Drop-tests-with-timing-issues.patch/tests/test_helper.tcl
â?? redis/00-RELEASENOTES
â?? redis/BUGS
â?? redis/CONTRIBUTING
â?? redis/COPYING
â?? redis/INSTALL
â?? redis/MANIFESTO
â?? redis/Makefile
â?? @@ -53,44 +54,44 @@
â?? redis/debian/compat
â?? redis/debian/control
â?? redis/debian/copyright
â?? redis/debian/gbp.conf
â?? redis/debian/patches
â?? redis/debian/patches/0001-fix-ftbfs-on-kfreebsd.patch
â?? redis/debian/patches/0002-fix-ftbfs-on-kfreebsd.patch
â?? -redis/debian/patches/0003-use-system-jemalloc.patch
â?? -redis/debian/patches/0004-dpkg-buildflags.patch
â?? redis/debian/patches/0005-SOURCE_DATE_EPOCH.patch
â?? -redis/debian/patches/0006-Skip-logging-tests-as-not-all-architectures-support-.patch
â?? -redis/debian/patches/0008-Drop-tests-with-timing-issues.patch
â?? +redis/debian/patches/debian-packaging
â?? +redis/debian/patches/debian-packaging/0003-use-system-jemalloc.patch
â?? +redis/debian/patches/debian-packaging/0004-dpkg-buildflags.patch
â?? +redis/debian/patches/debian-packaging/0006-Skip-logging-tests-as-not-all-architectures-support-.patch
â?? +redis/debian/patches/debian-packaging/0008-Drop-tests-with-timing-issues.patch
â?? redis/debian/patches/series
â?? redis/debian/redis-benchmark.1
â?? redis/debian/redis-cli.1
â?? redis/debian/redis-sentinel.default
â?? redis/debian/redis-sentinel.init
â?? redis/debian/redis-sentinel.install
â?? redis/debian/redis-sentinel.links
â?? redis/debian/redis-sentinel.logrotate
â?? redis/debian/redis-sentinel.postinst
â?? redis/debian/redis-sentinel.postrm
â?? redis/debian/redis-sentinel.service
â?? -redis/debian/redis-sentinel.tmpfile
â?? redis/debian/redis-server.1
â?? redis/debian/redis-server.default
â?? redis/debian/redis-server.docs
â?? redis/debian/redis-server.init
â?? redis/debian/redis-server.install
â?? redis/debian/redis-server.logrotate
â?? redis/debian/redis-server.manpages
â?? redis/debian/redis-server.postinst
â?? redis/debian/redis-server.postrm
â?? redis/debian/redis-server.service
â?? -redis/debian/redis-server.tmpfile
â?? redis/debian/redis-tools.examples
â?? redis/debian/redis-tools.install
â?? +redis/debian/redis-tools.links
â?? redis/debian/redis-tools.manpages
â?? redis/debian/redis.conf
â?? redis/debian/rules
â?? redis/debian/sentinel.conf
â?? redis/debian/source
â?? redis/debian/source/format
â?? redis/debian/source/options
â?? @@ -696,10 +697,10 @@
â?? redis/utils/releasetools
â?? redis/utils/releasetools/01_create_tarball.sh
â?? redis/utils/releasetools/02_upload_tarball.sh
â?? redis/utils/releasetools/03_test_release.sh
â?? redis/utils/releasetools/04_release_hash.sh
â?? redis/utils/speed-regression.tcl
â?? redis/utils/whatisdoing.sh
â?? -redis_3.2.6-1.debian.tar.xz
â?? -redis_3.2.6-1.dsc
â?? -redis_3.2.6.orig.tar.gz
â?? +redis_3.2.8-2.debian.tar.xz
â?? +redis_3.2.8-2.dsc
â?? +redis_3.2.8.orig.tar.gz
â??â??â?? redis
â??â??â?? file list
â?? â?? @@ -6,38 +6,39 @@
â?? â?? .pc/0001-fix-ftbfs-on-kfreebsd.patch
â?? â?? .pc/0001-fix-ftbfs-on-kfreebsd.patch/deps
â?? â?? .pc/0001-fix-ftbfs-on-kfreebsd.patch/deps/hiredis
â?? â?? .pc/0001-fix-ftbfs-on-kfreebsd.patch/deps/hiredis/net.c
â?? â?? .pc/0002-fix-ftbfs-on-kfreebsd.patch
â?? â?? .pc/0002-fix-ftbfs-on-kfreebsd.patch/src
â?? â?? .pc/0002-fix-ftbfs-on-kfreebsd.patch/src/fmacros.h
â?? â?? -.pc/0003-use-system-jemalloc.patch
â?? â?? -.pc/0003-use-system-jemalloc.patch/src
â?? â?? -.pc/0003-use-system-jemalloc.patch/src/Makefile
â?? â?? -.pc/0003-use-system-jemalloc.patch/src/debug.c
â?? â?? -.pc/0003-use-system-jemalloc.patch/src/zmalloc.c
â?? â?? -.pc/0003-use-system-jemalloc.patch/src/zmalloc.h
â?? â?? -.pc/0004-dpkg-buildflags.patch
â?? â?? -.pc/0004-dpkg-buildflags.patch/deps
â?? â?? -.pc/0004-dpkg-buildflags.patch/deps/hiredis
â?? â?? -.pc/0004-dpkg-buildflags.patch/deps/hiredis/Makefile
â?? â?? -.pc/0004-dpkg-buildflags.patch/deps/linenoise
â?? â?? -.pc/0004-dpkg-buildflags.patch/deps/linenoise/Makefile
â?? â?? -.pc/0004-dpkg-buildflags.patch/src
â?? â?? -.pc/0004-dpkg-buildflags.patch/src/Makefile
â?? â?? .pc/0005-SOURCE_DATE_EPOCH.patch
â?? â?? .pc/0005-SOURCE_DATE_EPOCH.patch/src
â?? â?? .pc/0005-SOURCE_DATE_EPOCH.patch/src/mkreleasehdr.sh
â?? â?? -.pc/0006-Skip-logging-tests-as-not-all-architectures-support-.patch
â?? â?? -.pc/0006-Skip-logging-tests-as-not-all-architectures-support-.patch/tests
â?? â?? -.pc/0006-Skip-logging-tests-as-not-all-architectures-support-.patch/tests/test_helper.tcl
â?? â?? -.pc/0008-Drop-tests-with-timing-issues.patch
â?? â?? -.pc/0008-Drop-tests-with-timing-issues.patch/tests
â?? â?? -.pc/0008-Drop-tests-with-timing-issues.patch/tests/test_helper.tcl
â?? â?? .pc/applied-patches
â?? â?? +.pc/debian-packaging
â?? â?? +.pc/debian-packaging/0003-use-system-jemalloc.patch
â?? â?? +.pc/debian-packaging/0003-use-system-jemalloc.patch/src
â?? â?? +.pc/debian-packaging/0003-use-system-jemalloc.patch/src/Makefile
â?? â?? +.pc/debian-packaging/0003-use-system-jemalloc.patch/src/debug.c
â?? â?? +.pc/debian-packaging/0003-use-system-jemalloc.patch/src/zmalloc.c
â?? â?? +.pc/debian-packaging/0003-use-system-jemalloc.patch/src/zmalloc.h
â?? â?? +.pc/debian-packaging/0004-dpkg-buildflags.patch
â?? â?? +.pc/debian-packaging/0004-dpkg-buildflags.patch/deps
â?? â?? +.pc/debian-packaging/0004-dpkg-buildflags.patch/deps/hiredis
â?? â?? +.pc/debian-packaging/0004-dpkg-buildflags.patch/deps/hiredis/Makefile
â?? â?? +.pc/debian-packaging/0004-dpkg-buildflags.patch/deps/linenoise
â?? â?? +.pc/debian-packaging/0004-dpkg-buildflags.patch/deps/linenoise/Makefile
â?? â?? +.pc/debian-packaging/0004-dpkg-buildflags.patch/src
â?? â?? +.pc/debian-packaging/0004-dpkg-buildflags.patch/src/Makefile
â?? â?? +.pc/debian-packaging/0006-Skip-logging-tests-as-not-all-architectures-support-.patch
â?? â?? +.pc/debian-packaging/0006-Skip-logging-tests-as-not-all-architectures-support-.patch/tests
â?? â?? +.pc/debian-packaging/0006-Skip-logging-tests-as-not-all-architectures-support-.patch/tests/test_helper.tcl
â?? â?? +.pc/debian-packaging/0008-Drop-tests-with-timing-issues.patch
â?? â?? +.pc/debian-packaging/0008-Drop-tests-with-timing-issues.patch/tests
â?? â?? +.pc/debian-packaging/0008-Drop-tests-with-timing-issues.patch/tests/test_helper.tcl
â?? â?? 00-RELEASENOTES
â?? â?? BUGS
â?? â?? CONTRIBUTING
â?? â?? COPYING
â?? â?? INSTALL
â?? â?? MANIFESTO
â?? â?? Makefile
â?? â?? @@ -52,44 +53,44 @@
â?? â?? debian/compat
â?? â?? debian/control
â?? â?? debian/copyright
â?? â?? debian/gbp.conf
â?? â?? debian/patches
â?? â?? debian/patches/0001-fix-ftbfs-on-kfreebsd.patch
â?? â?? debian/patches/0002-fix-ftbfs-on-kfreebsd.patch
â?? â?? -debian/patches/0003-use-system-jemalloc.patch
â?? â?? -debian/patches/0004-dpkg-buildflags.patch
â?? â?? debian/patches/0005-SOURCE_DATE_EPOCH.patch
â?? â?? -debian/patches/0006-Skip-logging-tests-as-not-all-architectures-support-.patch
â?? â?? -debian/patches/0008-Drop-tests-with-timing-issues.patch
â?? â?? +debian/patches/debian-packaging
â?? â?? +debian/patches/debian-packaging/0003-use-system-jemalloc.patch
â?? â?? +debian/patches/debian-packaging/0004-dpkg-buildflags.patch
â?? â?? +debian/patches/debian-packaging/0006-Skip-logging-tests-as-not-all-architectures-support-.patch
â?? â?? +debian/patches/debian-packaging/0008-Drop-tests-with-timing-issues.patch
â?? â?? debian/patches/series
â?? â?? debian/redis-benchmark.1
â?? â?? debian/redis-cli.1
â?? â?? debian/redis-sentinel.default
â?? â?? debian/redis-sentinel.init
â?? â?? debian/redis-sentinel.install
â?? â?? debian/redis-sentinel.links
â?? â?? debian/redis-sentinel.logrotate
â?? â?? debian/redis-sentinel.postinst
â?? â?? debian/redis-sentinel.postrm
â?? â?? debian/redis-sentinel.service
â?? â?? -debian/redis-sentinel.tmpfile
â?? â?? debian/redis-server.1
â?? â?? debian/redis-server.default
â?? â?? debian/redis-server.docs
â?? â?? debian/redis-server.init
â?? â?? debian/redis-server.install
â?? â?? debian/redis-server.logrotate
â?? â?? debian/redis-server.manpages
â?? â?? debian/redis-server.postinst
â?? â?? debian/redis-server.postrm
â?? â?? debian/redis-server.service
â?? â?? -debian/redis-server.tmpfile
â?? â?? debian/redis-tools.examples
â?? â?? debian/redis-tools.install
â?? â?? +debian/redis-tools.links
â?? â?? debian/redis-tools.manpages
â?? â?? debian/redis.conf
â?? â?? debian/rules
â?? â?? debian/sentinel.conf
â?? â?? debian/source
â?? â?? debian/source/format
â?? â?? debian/source/options
â??â??â?? .pc
â??â??â?? file list
â?? â?? â?? @@ -4,31 +4,32 @@
â?? â?? â?? 0001-fix-ftbfs-on-kfreebsd.patch
â?? â?? â?? 0001-fix-ftbfs-on-kfreebsd.patch/deps
â?? â?? â?? 0001-fix-ftbfs-on-kfreebsd.patch/deps/hiredis
â?? â?? â?? 0001-fix-ftbfs-on-kfreebsd.patch/deps/hiredis/net.c
â?? â?? â?? 0002-fix-ftbfs-on-kfreebsd.patch
â?? â?? â?? 0002-fix-ftbfs-on-kfreebsd.patch/src
â?? â?? â?? 0002-fix-ftbfs-on-kfreebsd.patch/src/fmacros.h
â?? â?? â?? -0003-use-system-jemalloc.patch
â?? â?? â?? -0003-use-system-jemalloc.patch/src
â?? â?? â?? -0003-use-system-jemalloc.patch/src/Makefile
â?? â?? â?? -0003-use-system-jemalloc.patch/src/debug.c
â?? â?? â?? -0003-use-system-jemalloc.patch/src/zmalloc.c
â?? â?? â?? -0003-use-system-jemalloc.patch/src/zmalloc.h
â?? â?? â?? -0004-dpkg-buildflags.patch
â?? â?? â?? -0004-dpkg-buildflags.patch/deps
â?? â?? â?? -0004-dpkg-buildflags.patch/deps/hiredis
â?? â?? â?? -0004-dpkg-buildflags.patch/deps/hiredis/Makefile
â?? â?? â?? -0004-dpkg-buildflags.patch/deps/linenoise
â?? â?? â?? -0004-dpkg-buildflags.patch/deps/linenoise/Makefile
â?? â?? â?? -0004-dpkg-buildflags.patch/src
â?? â?? â?? -0004-dpkg-buildflags.patch/src/Makefile
â?? â?? â?? 0005-SOURCE_DATE_EPOCH.patch
â?? â?? â?? 0005-SOURCE_DATE_EPOCH.patch/src
â?? â?? â?? 0005-SOURCE_DATE_EPOCH.patch/src/mkreleasehdr.sh
â?? â?? â?? -0006-Skip-logging-tests-as-not-all-architectures-support-.patch
â?? â?? â?? -0006-Skip-logging-tests-as-not-all-architectures-support-.patch/tests
â?? â?? â?? -0006-Skip-logging-tests-as-not-all-architectures-support-.patch/tests/test_helper.tcl
â?? â?? â?? -0008-Drop-tests-with-timing-issues.patch
â?? â?? â?? -0008-Drop-tests-with-timing-issues.patch/tests
â?? â?? â?? -0008-Drop-tests-with-timing-issues.patch/tests/test_helper.tcl
â?? â?? â?? -applied-patches
â?? â?? â?? +applied-patches
â?? â?? â?? +debian-packaging
â?? â?? â?? +debian-packaging/0003-use-system-jemalloc.patch
â?? â?? â?? +debian-packaging/0003-use-system-jemalloc.patch/src
â?? â?? â?? +debian-packaging/0003-use-system-jemalloc.patch/src/Makefile
â?? â?? â?? +debian-packaging/0003-use-system-jemalloc.patch/src/debug.c
â?? â?? â?? +debian-packaging/0003-use-system-jemalloc.patch/src/zmalloc.c
â?? â?? â?? +debian-packaging/0003-use-system-jemalloc.patch/src/zmalloc.h
â?? â?? â?? +debian-packaging/0004-dpkg-buildflags.patch
â?? â?? â?? +debian-packaging/0004-dpkg-buildflags.patch/deps
â?? â?? â?? +debian-packaging/0004-dpkg-buildflags.patch/deps/hiredis
â?? â?? â?? +debian-packaging/0004-dpkg-buildflags.patch/deps/hiredis/Makefile
â?? â?? â?? +debian-packaging/0004-dpkg-buildflags.patch/deps/linenoise
â?? â?? â?? +debian-packaging/0004-dpkg-buildflags.patch/deps/linenoise/Makefile
â?? â?? â?? +debian-packaging/0004-dpkg-buildflags.patch/src
â?? â?? â?? +debian-packaging/0004-dpkg-buildflags.patch/src/Makefile
â?? â?? â?? +debian-packaging/0006-Skip-logging-tests-as-not-all-architectures-support-.patch
â?? â?? â?? +debian-packaging/0006-Skip-logging-tests-as-not-all-architectures-support-.patch/tests
â?? â?? â?? +debian-packaging/0006-Skip-logging-tests-as-not-all-architectures-support-.patch/tests/test_helper.tcl
â?? â?? â?? +debian-packaging/0008-Drop-tests-with-timing-issues.patch
â?? â?? â?? +debian-packaging/0008-Drop-tests-with-timing-issues.patch/tests
â?? â?? â?? +debian-packaging/0008-Drop-tests-with-timing-issues.patch/tests/test_helper.tcl
â??â??â?? stat {}
â?? â?? â?? @@ -1,8 +1,8 @@
â?? â?? â??
â?? â?? â?? Size: 4096 Blocks: 8 IO Block: 4096 directory
â?? â?? â?? -Links: 9
â?? â?? â?? +Links: 6
â?? â?? â?? Access: (0755/drwxr-xr-x) Uid: ( 1000/ lamby) Gid: ( 1000/ lamby)
â?? â?? â??
â?? â?? â?? Modify: 1970-01-01 00:00:01.000000000 +0000
â?? â?? â??
â?? â?? â?? Birth: -
â??â??â?? applied-patches
â?? â?? â?? @@ -1,7 +1,7 @@
â?? â?? â?? 0001-fix-ftbfs-on-kfreebsd.patch
â?? â?? â?? 0002-fix-ftbfs-on-kfreebsd.patch
â?? â?? â?? -0003-use-system-jemalloc.patch
â?? â?? â?? -0004-dpkg-buildflags.patch
â?? â?? â?? +debian-packaging/0003-use-system-jemalloc.patch
â?? â?? â?? +debian-packaging/0004-dpkg-buildflags.patch
â?? â?? â?? 0005-SOURCE_DATE_EPOCH.patch
â?? â?? â?? -0006-Skip-logging-tests-as-not-all-architectures-support-.patch
â?? â?? â?? -0008-Drop-tests-with-timing-issues.patch
â?? â?? â?? +debian-packaging/0006-Skip-logging-tests-as-not-all-architectures-support-.patch
â?? â?? â?? +debian-packaging/0008-Drop-tests-with-timing-issues.patch
â??â??â?? stat {}
â?? â?? â?? â?? @@ -1,8 +1,8 @@
â?? â?? â?? â??
â?? â?? â?? â?? - Size: 258 Blocks: 8 IO Block: 4096 regular file
â?? â?? â?? â?? + Size: 326 Blocks: 8 IO Block: 4096 regular file
â?? â?? â?? â?? Links: 1
â?? â?? â?? â?? Access: (0644/-rw-r--r--) Uid: ( 1000/ lamby) Gid: ( 1000/ lamby)
â?? â?? â?? â??
â?? â?? â?? â?? Modify: 1970-01-01 00:00:01.000000000 +0000
â?? â?? â?? â??
â?? â?? â?? â?? Birth: -
â??â??â?? stat {}
â?? â?? â?? @@ -1,8 +1,8 @@
â?? â?? â??
â?? â?? â?? Size: 4096 Blocks: 8 IO Block: 4096 directory
â?? â?? â?? -Links: 9
â?? â?? â?? +Links: 6
â?? â?? â?? Access: (0755/drwxr-xr-x) Uid: ( 1000/ lamby) Gid: ( 1000/ lamby)
â?? â?? â??
â?? â?? â?? Modify: 1970-01-01 00:00:01.000000000 +0000
â?? â?? â??
â?? â?? â?? Birth: -
â??â??â?? 00-RELEASENOTES
â?? â?? @@ -7,14 +7,138 @@
â?? â?? LOW: No need to upgrade unless there are new features you want to use.
â?? â?? MODERATE: Program an upgrade of the server, but it's not urgent.
â?? â?? HIGH: There is a critical bug that may affect a subset of users. Upgrade!
â?? â?? CRITICAL: There is a critical bug affecting MOST USERS. Upgrade ASAP.
â?? â?? --------------------------------------------------------------------------------
â?? â??
â?? â?? ================================================================================
â?? â?? +Redis 3.2.8 Released Sun Feb 12 16:11:18 CET 2017
â?? â?? +================================================================================
â?? â?? +
â?? â?? +Upgrade urgency CRITICAL: This release reverts back the Jemalloc upgrade
â?? â?? + that is believed to potentially cause a server
â?? â?? + deadlock. A MIGRATE crash is also fixed.
â?? â?? +
â?? â?? +Two important bug fixes, the first of one is critical:
â?? â?? +
â?? â?? +1. Apparently Jemalloc 4.4.0 may contain a deadlock under particular
â?? â?? + conditions. See https://github.com/antirez/redis/issues/3799.
â?? â?? + We reverted back to the previously used Jemalloc versions and plan
â?? â?? + to upgrade Jemalloc again after having more info about the
â?? â?? + cause of the bug.
â?? â?? +
â?? â?? +2. MIGRATE could crash the server after a socket error. See for reference:
â?? â?? + https://github.com/antirez/redis/issues/3796.
â?? â?? +
â?? â?? +List of commits:
â?? â?? +
â?? â?? +antirez in commit 7178cac:
â?? â?? + Revert "Jemalloc updated to 4.4.0."
â?? â?? + 150 files changed, 6330 insertions(+), 17245 deletions(-)
â?? â?? +
â?? â?? +antirez in commit 33fad43:
â?? â?? + Fix MIGRATE closing of cached socket on error.
â?? â?? + 1 file changed, 23 insertions(+), 6 deletions(-)
â?? â?? +
â?? â?? +================================================================================
â?? â?? +Redis 3.2.7 Released Tue Jan 31 16:21:41 CET 2017
â?? â?? +================================================================================
â?? â?? +
â?? â?? +Upgrade urgency HIGH: This release fixes important security and correctness
â?? â?? + issues. It is especially important to upgrade for Redis
â?? â?? + Cluster users and for users running Redis in their laptop
â?? â?? + since a cross-scripting attack is fixed in this release.
â?? â?? +
â?? â?? +Main bugs fixes and improvements in this release:
â?? â?? +
â?? â?? +1. MIGRATE could incorrectly move keys between Redis Cluster nodes by turning
â?? â?? + keys with an expire set into persisting keys. This bug was introduced with
â?? â?? + the multiple-keys migration recently. It is now fixed. Only applies to
â?? â?? + Redis Cluster users that use the resharding features of Redis Cluster.
â?? â?? +
â?? â?? +2. As Redis 4.0 beta and the unstable branch already did (for some months at
â?? â?? + this point), Redis 3.2.7 also aliases the Host: and POST commands to QUIT
â?? â?? + avoiding to process the remaining pipeline if there are pending commands.
â?? â?? + This is a security protection against a "Cross Scripting" attack, that
â?? â?? + usually involves trying to feed Redis with HTTP in order to execute commands.
â?? â?? + Example: a developer is running a local copy of Redis for development
â?? â?? + purposes. She also runs a web browser in the same computer. The web browser
â?? â?? + could send an HTTP request to http://127.0.0.1:6379 in order to access the
â?? â?? + Redis instance, since a specially crafted HTTP requesta may also be partially
â?? â?? + valid Redis protocol. However if POST and Host: break the connection, this
â?? â?? + problem should be avoided. IMPORTANT: It is important to realize that it
â?? â?? + is not impossible that another way will be found to talk with a localhost
â?? â?? + Redis using a Cross Protocol attack not involving sending POST or Host: so
â?? â?? + this is only a layer of protection but not a definitive fix for this class
â?? â?? + of issues.
â?? â?? +
â?? â?? +3. A ziplist bug that could cause data corruption, could crash the server and
â?? â?? + MAY ALSO HAVE SECURITY IMPLICATIONS was fixed. The bug looks complex to
â?? â?? + exploit, but attacks always get worse, never better (cit). The bug is very
â?? â?? + very hard to catch in practice, it required manual analysis of the ziplist
â?? â?? + code in order to be found. However it is also possible that rarely it
â?? â?? + happened in the wild. Upgrading is required if you use LINSERT and other
â?? â?? + in-the-middle list manipulation commands.
â?? â?? +
â?? â?? +4. We upgraded to Jemalloc 4.4.0 since the version we used to ship with Redis
â?? â?? + was an early 4.0 release of Jemalloc. This version may have several
â?? â?? + improvements including the ability to better reclaim/use the memory of
â?? â?? + system.
â?? â?? +
â?? â?? +The following is the list of commits:
â?? â?? +
â?? â?? +antirez in commit 3876d98:
â?? â?? + Ziplist: insertion bug under particular conditions fixed.
â?? â?? + 1 file changed, 9 insertions(+), 1 deletion(-)
â?? â?? +
â?? â?? +antirez in commit 153f2f0:
â?? â?? + Jemalloc updated to 4.4.0.
â?? â?? + 150 files changed, 17271 insertions(+), 6356 deletions(-)
â?? â?? +
â?? â?? +miter in commit ca532c9:
â?? â?? + Change switch statment to if statment
â?? â?? + 1 file changed, 2 insertions(+), 4 deletions(-)
â?? â?? +
â?? â?? +oranagra in commit a735035:
â?? â?? + fix rare assertion in DEBUG DIGEST
â?? â?? + 1 file changed, 1 insertion(+), 1 deletion(-)
â?? â?? +
â?? â?? +Itamar Haber in commit b917e3f:
â?? â?? + Verify pairs are provided after subcommands
â?? â?? + 1 file changed, 1 insertion(+), 1 deletion(-)
â?? â?? +
â?? â?? +antirez in commit 1177cf6:
â?? â?? + Avoid geo.c warning in initialization.
â?? â?? + 1 file changed, 1 insertion(+), 1 deletion(-)
â?? â?? +
â?? â?? +antirez in commit 874804d:
â?? â?? + Security: Cross Protocol Scripting protection.
â?? â?? + 3 files changed, 27 insertions(+), 2 deletions(-)
â?? â?? +
â?? â?? +antirez in commit 273cd7f:
â?? â?? + Ziplist: remove static from functions, they prevent good crash reports.
â?? â?? + 1 file changed, 14 insertions(+), 14 deletions(-)
â?? â?? +
â?? â?? +Jan-Erik Rediger in commit 389b9f5:
â?? â?? + Initialize help only in repl mode
â?? â?? + 1 file changed, 5 insertions(+), 5 deletions(-)
â?? â?? +
â?? â?? +Yossi Gottlieb in commit 1370a88:
â?? â?? + Fix redis-cli rare crash.
â?? â?? + 1 file changed, 4 insertions(+)
â?? â?? +
â?? â?? +antirez in commit 68aab8e:
â?? â?? + MIGRATE: Remove upfront ttl initialization.
â?? â?? + 1 file changed, 3 insertions(+), 4 deletions(-)
â?? â?? +
â?? â?? +Jan-Erik Rediger in commit 788e892:
â?? â?? + Reset the ttl for additional keys
â?? â?? + 1 file changed, 1 insertion(+)
â?? â?? +
â?? â?? +================================================================================
â?? â?? Redis 3.2.6 Released Tue Dec 06 09:33:29 CET 2016
â?? â?? ================================================================================
â?? â??
â?? â?? Upgrade urgency MODERATE: GEORADIUS, BITFIELD and Redis Cluster minor fixes.
â?? â??
â?? â?? This release mainly fixes three bugs:
â??â??â?? stat {}
â?? â?? â?? @@ -1,8 +1,8 @@
â?? â?? â??
â?? â?? â?? - Size: 80406 Blocks: 160 IO Block: 4096 regular file
â?? â?? â?? + Size: 85775 Blocks: 168 IO Block: 4096 regular file
â?? â?? â?? Links: 1
â?? â?? â?? Access: (0644/-rw-r--r--) Uid: ( 1000/ lamby) Gid: ( 1000/ lamby)
â?? â?? â??
â?? â?? â?? Modify: 1970-01-01 00:00:01.000000000 +0000
â?? â?? â??
â?? â?? â?? Birth: -
â??â??â?? debian
â??â??â?? file list
â?? â?? â?? @@ -7,44 +7,44 @@
â?? â?? â?? compat
â?? â?? â?? control
â?? â?? â?? copyright
â?? â?? â?? gbp.conf
â?? â?? â?? patches
â?? â?? â?? patches/0001-fix-ftbfs-on-kfreebsd.patch
â?? â?? â?? patches/0002-fix-ftbfs-on-kfreebsd.patch
â?? â?? â?? -patches/0003-use-system-jemalloc.patch
â?? â?? â?? -patches/0004-dpkg-buildflags.patch
â?? â?? â?? patches/0005-SOURCE_DATE_EPOCH.patch
â?? â?? â?? -patches/0006-Skip-logging-tests-as-not-all-architectures-support-.patch
â?? â?? â?? -patches/0008-Drop-tests-with-timing-issues.patch
â?? â?? â?? +patches/debian-packaging
â?? â?? â?? +patches/debian-packaging/0003-use-system-jemalloc.patch
â?? â?? â?? +patches/debian-packaging/0004-dpkg-buildflags.patch
â?? â?? â?? +patches/debian-packaging/0006-Skip-logging-tests-as-not-all-architectures-support-.patch
â?? â?? â?? +patches/debian-packaging/0008-Drop-tests-with-timing-issues.patch
â?? â?? â?? patches/series
â?? â?? â?? redis-benchmark.1
â?? â?? â?? redis-cli.1
â?? â?? â?? redis-sentinel.default
â?? â?? â?? redis-sentinel.init
â?? â?? â?? redis-sentinel.install
â?? â?? â?? redis-sentinel.links
â?? â?? â?? redis-sentinel.logrotate
â?? â?? â?? redis-sentinel.postinst
â?? â?? â?? redis-sentinel.postrm
â?? â?? â?? redis-sentinel.service
â?? â?? â?? -redis-sentinel.tmpfile
â?? â?? â?? redis-server.1
â?? â?? â?? redis-server.default
â?? â?? â?? redis-server.docs
â?? â?? â?? redis-server.init
â?? â?? â?? redis-server.install
â?? â?? â?? redis-server.logrotate
â?? â?? â?? redis-server.manpages
â?? â?? â?? redis-server.postinst
â?? â?? â?? redis-server.postrm
â?? â?? â?? redis-server.service
â?? â?? â?? -redis-server.tmpfile
â?? â?? â?? redis-tools.examples
â?? â?? â?? redis-tools.install
â?? â?? â?? +redis-tools.links
â?? â?? â?? redis-tools.manpages
â?? â?? â?? redis.conf
â?? â?? â?? rules
â?? â?? â?? sentinel.conf
â?? â?? â?? source
â?? â?? â?? source/format
â?? â?? â?? source/options
â??â??â?? changelog
â?? â?? â?? @@ -1,7 +1,78 @@
â?? â?? â?? +redis (3:3.2.8-2) unstable; urgency=medium
â?? â?? â?? +
â?? â?? â?? + * Avoid conflict between RuntimeDirectory and tmpfiles.d(5) both attempting
â?? â?? â?? + to create /run/redis with differing permissions.
â?? â?? â?? +
â?? â?? â?? + This prevents an installation error on Jessie where /run/redis was first
â?? â?? â?? + being created by the tmpfiles.d(5) mechanism and then subsequently via the
â?? â?? â?? + RuntimeDirectory directive. Due to a bug in Jessie's systemd, this caused a
â?? â?? â?? + package installation error as systemd was too strict about permissions if
â?? â?? â?? + the target already exists: <https://github.com/systemd/systemd/pull/896>
â?? â?? â?? +
â?? â?? â?? + The redis-{server,sentinel} daemon would actually start successfully a few
â?? â?? â?? + milliseconds later due to the Restart=always directive.
â?? â?? â?? +
â?? â?? â?? + We work around this this by dropping the tmpfiles.d(5) handling and moving
â?? â?? â?? + entirely to RuntimeDirectory{,Mode}; we are not using any special handling
â?? â?? â?? + requiring tmpfiles.d(5) and we appear to need RuntimeDirectory anyway for
â?? â?? â?? + #846350. (Closes: #856116)
â?? â?? â?? +
â?? â?? â?? + -- Chris Lamb <lamby@debian.org> Sat, 11 Mar 2017 12:53:14 +0000
â?? â?? â?? +
â?? â?? â?? +redis (3:3.2.8-1) unstable; urgency=medium
â?? â?? â?? +
â?? â?? â?? + * New upstream release.
â?? â?? â?? +
â?? â?? â?? + -- Chris Lamb <lamby@debian.org> Mon, 13 Feb 2017 10:15:53 +1300
â?? â?? â?? +
â?? â?? â?? +redis (3:3.2.7-1) unstable; urgency=medium
â?? â?? â?? +
â?? â?? â?? + * New upstream release.
â?? â?? â?? +
â?? â?? â?? + -- Chris Lamb <lamby@debian.org> Wed, 01 Feb 2017 09:27:05 +1300
â?? â?? â?? +
â?? â?? â?? +redis (3:3.2.6-6) unstable; urgency=medium
â?? â?? â?? +
â?? â?? â?? + * Use --cpu-list 0 (not --cpu-list 1) to ensure compilation on single-CPU
â?? â?? â?? + machines. (Closes: #852347)
â?? â?? â?? +
â?? â?? â?? + -- Chris Lamb <lamby@debian.org> Tue, 24 Jan 2017 11:59:02 +1300
â?? â?? â?? +
â?? â?? â?? +redis (3:3.2.6-5) unstable; urgency=medium
â?? â?? â?? +
â?? â?? â?? + * Re-add taskset calls to try and avoid FTBFS due to parallelism in upstream
â?? â?? â?? + test suite.
â?? â?? â?? +
â?? â?? â?? + -- Chris Lamb <lamby@debian.org> Mon, 23 Jan 2017 13:24:39 +1300
â?? â?? â?? +
â?? â?? â?? +redis (3:3.2.6-4) unstable; urgency=medium
â?? â?? â?? +
â?? â?? â?? + * Expand the documentation in redis-server.service and redis-sentinel
â?? â?? â?? + regarding the default hardening options.
â?? â?? â?? +
â?? â?? â?? + -- Chris Lamb <lamby@debian.org> Sat, 21 Jan 2017 11:21:33 +1100
â?? â?? â?? +
â?? â?? â?? +redis (3:3.2.6-3) unstable; urgency=medium
â?? â?? â?? +
â?? â?? â?? + * Don't ship a "duplicate" redis-server binary in redis-tools as
â?? â?? â?? + /usr/bin/redis-check-rdb (it checks argv to change its behaviour) by
â?? â?? â?? + replacing it with a symlink. Found by <https://dedup.debian.net/>.
â?? â?? â?? +
â?? â?? â?? + -- Chris Lamb <lamby@debian.org> Wed, 11 Jan 2017 17:04:33 +0000
â?? â?? â?? +
â?? â?? â?? +redis (3:3.2.6-2) unstable; urgency=medium
â?? â?? â?? +
â?? â?? â?? + * Rename RunTimeDirectory -> RuntimeDirectory in .service files.
â?? â?? â?? + (Closes: #850534)
â?? â?? â?? + * Refresh all patches with pq import -> pq export.
â?? â?? â?? + * Tidy all patches, updating descriptions and use Pq-Topic to organise.
â?? â?? â?? +
â?? â?? â?? + -- Chris Lamb <lamby@debian.org> Sat, 07 Jan 2017 18:06:14 +0000
â?? â?? â?? +
â?? â?? â?? redis (3:3.2.6-1) unstable; urgency=medium
â?? â?? â??
â?? â?? â?? * New upstream release.
â?? â?? â?? * Add debian/gbp.conf to reflect new repository layout.
â?? â?? â??
â?? â?? â?? -- Chris Lamb <lamby@debian.org> Tue, 06 Dec 2016 09:23:20 +0000
â??â??â?? stat {}
â?? â?? â?? â?? @@ -1,8 +1,8 @@
â?? â?? â?? â??
â?? â?? â?? â?? - Size: 35243 Blocks: 72 IO Block: 4096 regular file
â?? â?? â?? â?? + Size: 37877 Blocks: 80 IO Block: 4096 regular file
â?? â?? â?? â?? Links: 1
â?? â?? â?? â?? Access: (0644/-rw-r--r--) Uid: ( 1000/ lamby) Gid: ( 1000/ lamby)
â?? â?? â?? â??
â?? â?? â?? â?? Modify: 1970-01-01 00:00:01.000000000 +0000
â?? â?? â?? â??
â?? â?? â?? â?? Birth: -
â??â??â?? patches
â??â??â?? file list
â?? â?? â?? â?? @@ -1,8 +1,9 @@
â?? â?? â?? â?? 0001-fix-ftbfs-on-kfreebsd.patch
â?? â?? â?? â?? 0002-fix-ftbfs-on-kfreebsd.patch
â?? â?? â?? â?? -0003-use-system-jemalloc.patch
â?? â?? â?? â?? -0004-dpkg-buildflags.patch
â?? â?? â?? â?? 0005-SOURCE_DATE_EPOCH.patch
â?? â?? â?? â?? -0006-Skip-logging-tests-as-not-all-architectures-support-.patch
â?? â?? â?? â?? -0008-Drop-tests-with-timing-issues.patch
â?? â?? â?? â?? +debian-packaging
â?? â?? â?? â?? +debian-packaging/0003-use-system-jemalloc.patch
â?? â?? â?? â?? +debian-packaging/0004-dpkg-buildflags.patch
â?? â?? â?? â?? +debian-packaging/0006-Skip-logging-tests-as-not-all-architectures-support-.patch
â?? â?? â?? â?? +debian-packaging/0008-Drop-tests-with-timing-issues.patch
â?? â?? â?? â?? series
â??â??â?? stat {}
â?? â?? â?? â?? @@ -1,8 +1,8 @@
â?? â?? â?? â??
â?? â?? â?? â?? Size: 4096 Blocks: 8 IO Block: 4096 directory
â?? â?? â?? â?? -Links: 2
â?? â?? â?? â?? +Links: 3
â?? â?? â?? â?? Access: (0755/drwxr-xr-x) Uid: ( 1000/ lamby) Gid: ( 1000/ lamby)
â?? â?? â?? â??
â?? â?? â?? â?? Modify: 1970-01-01 00:00:01.000000000 +0000
â?? â?? â?? â??
â?? â?? â?? â?? Birth: -
â??â??â?? 0001-fix-ftbfs-on-kfreebsd.patch
â?? â?? â?? â?? @@ -1,21 +1,21 @@
â?? â?? â?? â?? From: Chris Lamb <lamby@debian.org>
â?? â?? â?? â?? Date: Fri, 30 Oct 2015 10:53:42 +0000
â?? â?? â?? â?? -Subject: fix-ftbfs-on-kfreebsd
â?? â?? â?? â?? +Subject: Fix FTBFS on kfreebsd
â?? â?? â?? â??
â?? â?? â?? â?? -# Description: Fix FTBFS on kfreebsd
â?? â?? â?? â?? -# Bug: https://github.com/redis/hiredis/pull/254
â?? â?? â?? â?? -# Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=754634
â?? â?? â?? â?? -# Author: Chris Lamb <lamby@debian.org>
â?? â?? â?? â?? +Filed and fixed upstream as <https://github.com/redis/hiredis/pull/254>, but
â?? â?? â?? â?? +the embedded code copy of hiredis in redis has not been updated.
â?? â?? â?? â?? +
â?? â?? â?? â?? +Debian bug: #754634
â?? â?? â?? â?? ---
â?? â?? â?? â?? deps/hiredis/net.c | 2 +-
â?? â?? â?? â?? 1 file changed, 1 insertion(+), 1 deletion(-)
â?? â?? â?? â??
â?? â?? â?? â?? diff --git a/deps/hiredis/net.c b/deps/hiredis/net.c
â?? â?? â?? â?? -index bdb84ce..ff4e77f 100644
â?? â?? â?? â?? +index bdb84cee..ff4e77f1 100644
â?? â?? â?? â?? --- a/deps/hiredis/net.c
â?? â?? â?? â?? +++ b/deps/hiredis/net.c
â?? â?? â?? â?? @@ -138,7 +138,7 @@ int redisKeepAlive(redisContext *c, int interval) {
â?? â?? â?? â?? return REDIS_ERR;
â?? â?? â?? â?? }
â?? â?? â?? â?? #else
â?? â?? â?? â?? -#ifndef __sun
â??â??â?? stat {}
â?? â?? â?? â?? â?? @@ -1,8 +1,8 @@
â?? â?? â?? â?? â??
â?? â?? â?? â?? â?? - Size: 857 Blocks: 8 IO Block: 4096 regular file
â?? â?? â?? â?? â?? + Size: 826 Blocks: 8 IO Block: 4096 regular file
â?? â?? â?? â?? â?? Links: 1
â?? â?? â?? â?? â?? Access: (0644/-rw-r--r--) Uid: ( 1000/ lamby) Gid: ( 1000/ lamby)
â?? â?? â?? â?? â??
â?? â?? â?? â?? â?? Modify: 1970-01-01 00:00:01.000000000 +0000
â?? â?? â?? â?? â??
â?? â?? â?? â?? â?? Birth: -
â??â??â?? 0002-fix-ftbfs-on-kfreebsd.patch
â?? â?? â?? â?? @@ -1,21 +1,20 @@
â?? â?? â?? â?? -From: Chris Lamb <lamby@debian.org>
â?? â?? â?? â?? +From: Christoph Egger <christoph@debian.org>
â?? â?? â?? â?? Date: Fri, 30 Oct 2015 10:53:42 +0000
â?? â?? â?? â?? -Subject: fix-ftbfs-on-kfreebsd
â?? â?? â?? â?? +Subject: Fix FTBFS on kfreebsd
â?? â?? â?? â??
â?? â?? â?? â?? -# Description: Fix FTBFS on kfreebsd
â?? â?? â?? â?? -# Bug: https://github.com/antirez/redis/pull/67
â?? â?? â?? â?? -# Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=632499
â?? â?? â?? â?? -# Author: Christoph Egger <christoph@debian.org>
â?? â?? â?? â?? +Filed upstream as <https://github.com/antirez/redis/pull/67>.
â?? â?? â?? â?? +
â?? â?? â?? â?? +Debian bug: #632499
â?? â?? â?? â?? ---
â?? â?? â?? â?? src/fmacros.h | 2 +-
â?? â?? â?? â?? 1 file changed, 1 insertion(+), 1 deletion(-)
â?? â?? â?? â??
â?? â?? â?? â?? diff --git a/src/fmacros.h b/src/fmacros.h
â?? â?? â?? â?? -index 6e56c75..d490aec 100644
â?? â?? â?? â?? +index 6e56c759..d490aec2 100644
â?? â?? â?? â?? --- a/src/fmacros.h
â?? â?? â?? â?? +++ b/src/fmacros.h
â?? â?? â?? â?? @@ -41,7 +41,7 @@
â?? â?? â?? â?? #define _ALL_SOURCE
â?? â?? â?? â?? #endif
â?? â?? â?? â??
â?? â?? â?? â?? -#if defined(__linux__) || defined(__OpenBSD__)
â??â??â?? stat {}
â?? â?? â?? â?? â?? @@ -1,8 +1,8 @@
â?? â?? â?? â?? â??
â?? â?? â?? â?? â?? - Size: 753 Blocks: 8 IO Block: 4096 regular file
â?? â?? â?? â?? â?? + Size: 643 Blocks: 8 IO Block: 4096 regular file
â?? â?? â?? â?? â?? Links: 1
â?? â?? â?? â?? â?? Access: (0644/-rw-r--r--) Uid: ( 1000/ lamby) Gid: ( 1000/ lamby)
â?? â?? â?? â?? â??
â?? â?? â?? â?? â?? Modify: 1970-01-01 00:00:01.000000000 +0000
â?? â?? â?? â?? â??
â?? â?? â?? â?? â?? Birth: -
â??â??â?? 0005-SOURCE_DATE_EPOCH.patch
â?? â?? â?? â?? @@ -1,17 +1,18 @@
â?? â?? â?? â?? From: Chris Lamb <lamby@debian.org>
â?? â?? â?? â?? Date: Wed, 6 Jan 2016 11:23:26 +0000
â?? â?? â?? â?? -Subject: SOURCE_DATE_EPOCH
â?? â?? â?? â?? +Subject: Add support for SOURCE_DATE_EPOCH.
â?? â?? â?? â??
â?? â?? â?? â?? +Filed upstream as <https://github.com/antirez/redis/pull/2992>.
â?? â?? â?? â?? ---
â?? â?? â?? â?? src/mkreleasehdr.sh | 3 +++
â?? â?? â?? â?? 1 file changed, 3 insertions(+)
â?? â?? â?? â??
â?? â?? â?? â?? diff --git a/src/mkreleasehdr.sh b/src/mkreleasehdr.sh
â?? â?? â?? â?? -index 1ae9588..e6d558b 100755
â?? â?? â?? â?? +index 1ae95886..e6d558b1 100755
â?? â?? â?? â?? --- a/src/mkreleasehdr.sh
â?? â?? â?? â?? +++ b/src/mkreleasehdr.sh
â?? â?? â?? â?? @@ -2,6 +2,9 @@
â?? â?? â?? â?? GIT_SHA1=`(git show-ref --head --hash=8 2> /dev/null || echo 00000000) | head -n1`
â?? â?? â?? â?? GIT_DIRTY=`git diff --no-ext-diff 2> /dev/null | wc -l`
â?? â?? â?? â?? BUILD_ID=`uname -n`"-"`date +%s`
â?? â?? â?? â?? +if [ -n "$SOURCE_DATE_EPOCH" ]; then
â??â??â?? stat {}
â?? â?? â?? â?? â?? @@ -1,8 +1,8 @@
â?? â?? â?? â?? â??
â?? â?? â?? â?? â?? - Size: 835 Blocks: 8 IO Block: 4096 regular file
â?? â?? â?? â?? â?? + Size: 918 Blocks: 8 IO Block: 4096 regular file
â?? â?? â?? â?? â?? Links: 1
â?? â?? â?? â?? â?? Access: (0644/-rw-r--r--) Uid: ( 1000/ lamby) Gid: ( 1000/ lamby)
â?? â?? â?? â?? â??
â?? â?? â?? â?? â?? Modify: 1970-01-01 00:00:01.000000000 +0000
â?? â?? â?? â?? â??
â?? â?? â?? â?? â?? Birth: -
â??â??â?? series
â?? â?? â?? â?? @@ -1,7 +1,7 @@
â?? â?? â?? â?? 0001-fix-ftbfs-on-kfreebsd.patch
â?? â?? â?? â?? 0002-fix-ftbfs-on-kfreebsd.patch
â?? â?? â?? â?? -0003-use-system-jemalloc.patch
â?? â?? â?? â?? -0004-dpkg-buildflags.patch
â?? â?? â?? â?? +debian-packaging/0003-use-system-jemalloc.patch
â?? â?? â?? â?? +debian-packaging/0004-dpkg-buildflags.patch
â?? â?? â?? â?? 0005-SOURCE_DATE_EPOCH.patch
â?? â?? â?? â?? -0006-Skip-logging-tests-as-not-all-architectures-support-.patch
â?? â?? â?? â?? -0008-Drop-tests-with-timing-issues.patch
â?? â?? â?? â?? +debian-packaging/0006-Skip-logging-tests-as-not-all-architectures-support-.patch
â?? â?? â?? â?? +debian-packaging/0008-Drop-tests-with-timing-issues.patch
â??â??â?? stat {}
â?? â?? â?? â?? â?? @@ -1,8 +1,8 @@
â?? â?? â?? â?? â??
â?? â?? â?? â?? â?? - Size: 258 Blocks: 8 IO Block: 4096 regular file
â?? â?? â?? â?? â?? + Size: 326 Blocks: 8 IO Block: 4096 regular file
â?? â?? â?? â?? â?? Links: 1
â?? â?? â?? â?? â?? Access: (0644/-rw-r--r--) Uid: ( 1000/ lamby) Gid: ( 1000/ lamby)
â?? â?? â?? â?? â??
â?? â?? â?? â?? â?? Modify: 1970-01-01 00:00:01.000000000 +0000
â?? â?? â?? â?? â??
â?? â?? â?? â?? â?? Birth: -
â??â??â?? stat {}
â?? â?? â?? â?? @@ -1,8 +1,8 @@
â?? â?? â?? â??
â?? â?? â?? â?? Size: 4096 Blocks: 8 IO Block: 4096 directory
â?? â?? â?? â?? -Links: 2
â?? â?? â?? â?? +Links: 3
â?? â?? â?? â?? Access: (0755/drwxr-xr-x) Uid: ( 1000/ lamby) Gid: ( 1000/ lamby)
â?? â?? â?? â??
â?? â?? â?? â?? Modify: 1970-01-01 00:00:01.000000000 +0000
â?? â?? â?? â??
â?? â?? â?? â?? Birth: -
â??â??â?? redis-sentinel.service
â?? â?? â?? @@ -7,15 +7,16 @@
â?? â?? â?? Type=forking
â?? â?? â?? ExecStart=/usr/bin/redis-sentinel /etc/redis/sentinel.conf
â?? â?? â?? PIDFile=/var/run/redis/redis-sentinel.pid
â?? â?? â?? TimeoutStopSec=0
â?? â?? â?? Restart=always
â?? â?? â?? User=redis
â?? â?? â?? Group=redis
â?? â?? â?? -RunTimeDirectory=redis
â?? â?? â?? +RuntimeDirectory=redis
â?? â?? â?? +RuntimeDirectoryMode=2755
â?? â?? â??
â?? â?? â?? ExecStartPre=-/bin/run-parts --verbose /etc/redis/redis-sentinel.pre-up.d
â?? â?? â?? ExecStartPost=-/bin/run-parts --verbose /etc/redis/redis-sentinel.post-up.d
â?? â?? â?? ExecStop=-/bin/run-parts --verbose /etc/redis/redis-sentinel.pre-down.d
â?? â?? â?? ExecStop=/bin/kill -s TERM $MAINPID
â?? â?? â?? ExecStopPost=-/bin/run-parts --verbose /etc/redis/redis-sentinel.post-down.d
â?? â?? â??
â?? â?? â?? @@ -26,14 +27,15 @@
â?? â?? â?? ProtectHome=yes
â?? â?? â?? ReadOnlyDirectories=/
â?? â?? â?? ReadWriteDirectories=-/var/lib/redis
â?? â?? â?? ReadWriteDirectories=-/var/log/redis
â?? â?? â?? ReadWriteDirectories=-/var/run/redis
â?? â?? â?? CapabilityBoundingSet=~CAP_SYS_PTRACE
â?? â?? â??
â?? â?? â?? -# redis-sentinel writes its own config file so we allow writing there (NB.
â?? â?? â?? -# ProtectSystem=true over ProtectSystem=full)
â?? â?? â?? +# redis-sentinel writes to its own config file when in cluster mode so we
â?? â?? â?? +# permit writing there by default. If you are *not* using this feature, it is
â?? â?? â?? +# recommended that you replace the following lines with "ProtectSystem=full".
â?? â?? â?? ProtectSystem=true
â?? â?? â?? ReadWriteDirectories=-/etc/redis
â?? â?? â??
â?? â?? â?? [Install]
â?? â?? â?? WantedBy=multi-user.target
â??â??â?? stat {}
â?? â?? â?? â?? @@ -1,8 +1,8 @@
â?? â?? â?? â??
â?? â?? â?? â?? - Size: 1133 Blocks: 8 IO Block: 4096 regular file
â?? â?? â?? â?? + Size: 1268 Blocks: 8 IO Block: 4096 regular file
â?? â?? â?? â?? Links: 1
â?? â?? â?? â?? Access: (0644/-rw-r--r--) Uid: ( 1000/ lamby) Gid: ( 1000/ lamby)
â?? â?? â?? â??
â?? â?? â?? â?? Modify: 1970-01-01 00:00:01.000000000 +0000
â?? â?? â?? â??
â?? â?? â?? â?? Birth: -
â??â??â?? redis-server.service
â?? â?? â?? @@ -7,15 +7,16 @@
â?? â?? â?? Type=forking
â?? â?? â?? ExecStart=/usr/bin/redis-server /etc/redis/redis.conf
â?? â?? â?? PIDFile=/var/run/redis/redis-server.pid
â?? â?? â?? TimeoutStopSec=0
â?? â?? â?? Restart=always
â?? â?? â?? User=redis
â?? â?? â?? Group=redis
â?? â?? â?? -RunTimeDirectory=redis
â?? â?? â?? +RuntimeDirectory=redis
â?? â?? â?? +RuntimeDirectoryMode=2755
â?? â?? â??
â?? â?? â?? ExecStartPre=-/bin/run-parts --verbose /etc/redis/redis-server.pre-up.d
â?? â?? â?? ExecStartPost=-/bin/run-parts --verbose /etc/redis/redis-server.post-up.d
â?? â?? â?? ExecStop=-/bin/run-parts --verbose /etc/redis/redis-server.pre-down.d
â?? â?? â?? ExecStop=/bin/kill -s TERM $MAINPID
â?? â?? â?? ExecStopPost=-/bin/run-parts --verbose /etc/redis/redis-server.post-down.d
â?? â?? â??
â?? â?? â?? @@ -26,15 +27,16 @@
â?? â?? â?? ProtectHome=yes
â?? â?? â?? ReadOnlyDirectories=/
â?? â?? â?? ReadWriteDirectories=-/var/lib/redis
â?? â?? â?? ReadWriteDirectories=-/var/log/redis
â?? â?? â?? ReadWriteDirectories=-/var/run/redis
â?? â?? â?? CapabilityBoundingSet=~CAP_SYS_PTRACE
â?? â?? â??
â?? â?? â?? -# redis-server writes its own config file when in cluster mode so we allow
â?? â?? â?? -# writing there (NB. ProtectSystem=true over ProtectSystem=full)
â?? â?? â?? +# redis-server can write to its own config file when in cluster mode so we
â?? â?? â?? +# permit writing there by default. If you are not using this feature, it is
â?? â?? â?? +# recommended that you replace the following lines with "ProtectSystem=full".
â?? â?? â?? ProtectSystem=true
â?? â?? â?? ReadWriteDirectories=-/etc/redis
â?? â?? â??
â?? â?? â?? [Install]
â?? â?? â?? WantedBy=multi-user.target
â?? â?? â?? Alias=redis.service
â??â??â?? stat {}
â?? â?? â?? â?? @@ -1,8 +1,8 @@
â?? â?? â?? â??
â?? â?? â?? â?? - Size: 1155 Blocks: 8 IO Block: 4096 regular file
â?? â?? â?? â?? + Size: 1270 Blocks: 8 IO Block: 4096 regular file
â?? â?? â?? â?? Links: 1
â?? â?? â?? â?? Access: (0644/-rw-r--r--) Uid: ( 1000/ lamby) Gid: ( 1000/ lamby)
â?? â?? â?? â??
â?? â?? â?? â?? Modify: 1970-01-01 00:00:01.000000000 +0000
â?? â?? â?? â??
â?? â?? â?? â?? Birth: -
â??â??â?? redis-tools.install
â?? â?? â?? @@ -1,5 +1,4 @@
â?? â?? â?? debian/bash_completion.d /usr/share/bash-completion/completions
â?? â?? â?? src/redis-benchmark /usr/bin
â?? â?? â?? src/redis-check-aof /usr/bin
â?? â?? â?? -src/redis-check-rdb /usr/bin
â?? â?? â?? src/redis-cli /usr/bin
â??â??â?? stat {}
â?? â?? â?? â?? @@ -1,8 +1,8 @@
â?? â?? â?? â??
â?? â?? â?? â?? - Size: 176 Blocks: 8 IO Block: 4096 regular file
â?? â?? â?? â?? + Size: 147 Blocks: 8 IO Block: 4096 regular file
â?? â?? â?? â?? Links: 1
â?? â?? â?? â?? Access: (0644/-rw-r--r--) Uid: ( 1000/ lamby) Gid: ( 1000/ lamby)
â?? â?? â?? â??
â?? â?? â?? â?? Modify: 1970-01-01 00:00:01.000000000 +0000
â?? â?? â?? â??
â?? â?? â?? â?? Birth: -
â??â??â?? rules
â?? â?? â?? @@ -24,16 +24,16 @@
â?? â?? â??
â?? â?? â?? override_dh_auto_build:
â?? â?? â?? dh_auto_build --parallel -- V=1
â?? â?? â??
â?? â?? â?? override_dh_auto_test:
â?? â?? â?? ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
â?? â?? â?? # Avoid race conditions in upstream testsuite. (#830500)
â?? â?? â?? - ./runtest
â?? â?? â?? - ./runtest-sentinel
â?? â?? â?? + taskset --cpu-list 0 ./runtest
â?? â?? â?? + taskset --cpu-list 0 ./runtest-sentinel
â?? â?? â?? endif
â?? â?? â??
â?? â?? â?? override_dh_compress:
â?? â?? â?? dh_compress -Xredis-trib.rb
â?? â?? â??
â?? â?? â?? clean:
â?? â?? â?? dh $@
â??â??â?? stat {}
â?? â?? â?? â?? @@ -1,8 +1,8 @@
â?? â?? â?? â??
â?? â?? â?? â?? - Size: 906 Blocks: 8 IO Block: 4096 regular file
â?? â?? â?? â?? + Size: 948 Blocks: 8 IO Block: 4096 regular file
â?? â?? â?? â?? Links: 1
â?? â?? â?? â?? Access: (0755/-rwxr-xr-x) Uid: ( 1000/ lamby) Gid: ( 1000/ lamby)
â?? â?? â?? â??
â?? â?? â?? â?? Modify: 1970-01-01 00:00:01.000000000 +0000
â?? â?? â?? â??
â?? â?? â?? â?? Birth: -
â??â??â?? src
â??â??â?? cluster.c
â?? â?? â?? @@ -4648,30 +4648,29 @@
â?? â?? â?? *
â?? â?? â?? * MIGRATE host port "" dbid timeout [COPY | REPLACE] KEYS key1 key2 ... keyN */
â?? â?? â?? void migrateCommand(client *c) {
â?? â?? â?? migrateCachedSocket *cs;
â?? â?? â?? int copy, replace, j;
â?? â?? â?? long timeout;
â?? â?? â?? long dbid;
â?? â?? â?? - long long ttl, expireat;
â?? â?? â?? robj **ov = NULL; /* Objects to migrate. */
â?? â?? â?? robj **kv = NULL; /* Key names. */
â?? â?? â?? robj **newargv = NULL; /* Used to rewrite the command as DEL ... keys ... */
â?? â?? â?? rio cmd, payload;
â?? â?? â?? int may_retry = 1;
â?? â?? â?? int write_error = 0;
â?? â?? â?? + int argv_rewritten = 0;
â?? â?? â??
â?? â?? â?? /* To support the KEYS option we need the following additional state. */
â?? â?? â?? int first_key = 3; /* Argument index of the first key. */
â?? â?? â?? int num_keys = 1; /* By default only migrate the 'key' argument. */
â?? â?? â??
â?? â?? â?? /* Initialization */
â?? â?? â?? copy = 0;
â?? â?? â?? replace = 0;
â?? â?? â?? - ttl = 0;
â?? â?? â??
â?? â?? â?? /* Parse additional options */
â?? â?? â?? for (j = 6; j < c->argc; j++) {
â?? â?? â?? if (!strcasecmp(c->argv[j]->ptr,"copy")) {
â?? â?? â?? copy = 1;
â?? â?? â?? } else if (!strcasecmp(c->argv[j]->ptr,"replace")) {
â?? â?? â?? replace = 1;
â?? â?? â?? @@ -4739,15 +4738,17 @@
â?? â?? â?? serverAssertWithInfo(c,NULL,rioWriteBulkCount(&cmd,'*',2));
â?? â?? â?? serverAssertWithInfo(c,NULL,rioWriteBulkString(&cmd,"SELECT",6));
â?? â?? â?? serverAssertWithInfo(c,NULL,rioWriteBulkLongLong(&cmd,dbid));
â?? â?? â?? }
â?? â?? â??
â?? â?? â?? /* Create RESTORE payload and generate the protocol to call the command. */
â?? â?? â?? for (j = 0; j < num_keys; j++) {
â?? â?? â?? - expireat = getExpire(c->db,kv[j]);
â?? â?? â?? + long long ttl = 0;
â?? â?? â?? + long long expireat = getExpire(c->db,kv[j]);
â?? â?? â?? +
â?? â?? â?? if (expireat != -1) {
â?? â?? â?? ttl = expireat-mstime();
â?? â?? â?? if (ttl < 1) ttl = 1;
â?? â?? â?? }
â?? â?? â?? serverAssertWithInfo(c,NULL,rioWriteBulkCount(&cmd,'*',replace ? 5 : 4));
â?? â?? â?? if (server.cluster_enabled)
â?? â?? â?? serverAssertWithInfo(c,NULL,
â?? â?? â?? @@ -4837,58 +4838,74 @@
â?? â?? â?? * and we failed to read the first reply (j == 0 test). */
â?? â?? â?? if (!error_from_target && socket_error && j == 0 && may_retry &&
â?? â?? â?? errno != ETIMEDOUT)
â?? â?? â?? {
â?? â?? â?? goto socket_err; /* A retry is guaranteed because of tested conditions.*/
â?? â?? â?? }
â?? â?? â??
â?? â?? â?? + /* On socket errors, close the migration socket now that we still have
â?? â?? â?? + * the original host/port in the ARGV. Later the original command may be
â?? â?? â?? + * rewritten to DEL and will be too later. */
â?? â?? â?? + if (socket_error) migrateCloseSocket(c->argv[1],c->argv[2]);
â?? â?? â?? +
â?? â?? â?? if (!copy) {
â?? â?? â?? - /* Translate MIGRATE as DEL for replication/AOF. */
â?? â?? â?? + /* Translate MIGRATE as DEL for replication/AOF. Note that we do
â?? â?? â?? + * this only for the keys for which we received an acknowledgement
â?? â?? â?? + * from the receiving Redis server, by using the del_idx index. */
â?? â?? â?? if (del_idx > 1) {
â?? â?? â?? newargv[0] = createStringObject("DEL",3);
â?? â?? â?? /* Note that the following call takes ownership of newargv. */
â?? â?? â?? replaceClientCommandVector(c,del_idx,newargv);
â?? â?? â?? + argv_rewritten = 1;
â?? â?? â?? } else {
â?? â?? â?? /* No key transfer acknowledged, no need to rewrite as DEL. */
â?? â?? â?? zfree(newargv);
â?? â?? â?? }
â?? â?? â?? newargv = NULL; /* Make it safe to call zfree() on it in the future. */
â?? â?? â?? }
â?? â?? â??
â?? â?? â?? /* If we are here and a socket error happened, we don't want to retry.
â?? â?? â?? - * Just signal the problem to the client, but only do it if we don't
â?? â?? â?? - * already queued a different error reported by the destination server. */
â?? â?? â?? + * Just signal the problem to the client, but only do it if we did not
â?? â?? â?? + * already queue a different error reported by the destination server. */
â?? â?? â?? if (!error_from_target && socket_error) {
â?? â?? â?? may_retry = 0;
â?? â?? â?? goto socket_err;
â?? â?? â?? }
â?? â?? â??
â?? â?? â?? if (!error_from_target) {
â?? â?? â?? /* Success! Update the last_dbid in migrateCachedSocket, so that we can
â?? â?? â?? - * avoid SELECT the next time if the target DB is the same. Reply +OK. */
â?? â?? â?? + * avoid SELECT the next time if the target DB is the same. Reply +OK.
â?? â?? â?? + *
â?? â?? â?? + * Note: If we reached this point, even if socket_error is true
â?? â?? â?? + * still the SELECT command succeeded (otherwise the code jumps to
â?? â?? â?? + * socket_err label. */
â?? â?? â?? cs->last_dbid = dbid;
â?? â?? â?? addReply(c,shared.ok);
â?? â?? â?? } else {
â?? â?? â?? /* On error we already sent it in the for loop above, and set
â?? â?? â?? * the curretly selected socket to -1 to force SELECT the next time. */
â?? â?? â?? }
â?? â?? â??
â?? â?? â?? sdsfree(cmd.io.buffer.ptr);
â?? â?? â?? zfree(ov); zfree(kv); zfree(newargv);
â?? â?? â?? - if (socket_error) migrateCloseSocket(c->argv[1],c->argv[2]);
â?? â?? â?? return;
â?? â?? â??
â?? â?? â?? /* On socket errors we try to close the cached socket and try again.
â?? â?? â?? * It is very common for the cached socket to get closed, if just reopening
â?? â?? â?? * it works it's a shame to notify the error to the caller. */
â?? â?? â?? socket_err:
â?? â?? â?? /* Cleanup we want to perform in both the retry and no retry case.
â?? â?? â?? * Note: Closing the migrate socket will also force SELECT next time. */
â?? â?? â?? sdsfree(cmd.io.buffer.ptr);
â?? â?? â?? - migrateCloseSocket(c->argv[1],c->argv[2]);
â?? â?? â?? +
â?? â?? â?? + /* If the command was rewritten as DEL and there was a socket error,
â?? â?? â?? + * we already closed the socket earlier. While migrateCloseSocket()
â?? â?? â?? + * is idempotent, the host/port arguments are now gone, so don't do it
â?? â?? â?? + * again. */
â?? â?? â?? + if (!argv_rewritten) migrateCloseSocket(c->argv[1],c->argv[2]);
â?? â?? â?? zfree(newargv);
â?? â?? â?? newargv = NULL; /* This will get reallocated on retry. */
â?? â?? â??
â?? â?? â?? /* Retry only if it's not a timeout and we never attempted a retry
â?? â?? â?? * (or the code jumping here did not set may_retry to zero). */
â?? â?? â?? if (errno != ETIMEDOUT && may_retry) {
â?? â?? â?? may_retry = 0;
â??â??â?? stat {}
â?? â?? â?? â?? @@ -1,8 +1,8 @@
â?? â?? â?? â??
â?? â?? â?? â?? - Size: 206987 Blocks: 408 IO Block: 4096 regular file
â?? â?? â?? â?? + Size: 207856 Blocks: 408 IO Block: 4096 regular file
â?? â?? â?? â?? Links: 1
â?? â?? â?? â?? Access: (0644/-rw-r--r--) Uid: ( 1000/ lamby) Gid: ( 1000/ lamby)
â?? â?? â?? â??
â?? â?? â?? â?? Modify: 1970-01-01 00:00:01.000000000 +0000
â?? â?? â?? â??
â?? â?? â?? â?? Birth: -
â??â??â?? debug.c
â?? â?? â?? @@ -122,15 +122,15 @@
â?? â?? â??
â?? â?? â?? memset(final,0,20); /* Start with a clean result */
â?? â?? â??
â?? â?? â?? for (j = 0; j < server.dbnum; j++) {
â?? â?? â?? redisDb *db = server.db+j;
â?? â?? â??
â?? â?? â?? if (dictSize(db->dict) == 0) continue;
â?? â?? â?? - di = dictGetIterator(db->dict);
â?? â?? â?? + di = dictGetSafeIterator(db->dict);
â?? â?? â??
â?? â?? â?? /* hash the DB id, so the same dataset moved in a different
â?? â?? â?? * DB will lead to a different digest */
â?? â?? â?? aux = htonl(j);
â?? â?? â?? mixDigest(final,&aux,sizeof(aux));
â?? â?? â??
â?? â?? â?? /* Iterate this DB writing every entry */
â??â??â?? stat {}
â?? â?? â?? â?? @@ -1,8 +1,8 @@
â?? â?? â?? â??
â?? â?? â?? â?? - Size: 46049 Blocks: 96 IO Block: 4096 regular file
â?? â?? â?? â?? + Size: 46053 Blocks: 96 IO Block: 4096 regular file
â?? â?? â?? â?? Links: 1
â?? â?? â?? â?? Access: (0644/-rw-r--r--) Uid: ( 1000/ lamby) Gid: ( 1000/ lamby)
â?? â?? â?? â??
â?? â?? â?? â?? Modify: 1970-01-01 00:00:01.000000000 +0000
â?? â?? â?? â??
â?? â?? â?? â?? Birth: -
â??â??â?? geo.c
â?? â?? â?? @@ -348,15 +348,15 @@
â?? â?? â?? continue;
â?? â?? â?? }
â?? â?? â??
â?? â?? â?? /* Debugging info. */
â?? â?? â?? if (debugmsg) {
â?? â?? â?? GeoHashRange long_range, lat_range;
â?? â?? â?? geohashGetCoordRange(&long_range,&lat_range);
â?? â?? â?? - GeoHashArea myarea = {{0}};
â?? â?? â?? + GeoHashArea myarea = {{0,0},{0,0},{0,0}};
â?? â?? â?? geohashDecode(long_range, lat_range, neighbors[i], &myarea);
â?? â?? â??
â?? â?? â?? /* Dump center square. */
â?? â?? â?? D("neighbors[%d]:\n",i);
â?? â?? â?? D("area.longitude.min: %f\n", myarea.longitude.min);
â?? â?? â?? D("area.longitude.max: %f\n", myarea.longitude.max);
â?? â?? â?? D("area.latitude.min: %f\n", myarea.latitude.min);
â??â??â?? stat {}
â?? â?? â?? â?? @@ -1,8 +1,8 @@
â?? â?? â?? â??
â?? â?? â?? â?? - Size: 29757 Blocks: 64 IO Block: 4096 regular file
â?? â?? â?? â?? + Size: 29771 Blocks: 64 IO Block: 4096 regular file
â?? â?? â?? â?? Links: 1
â?? â?? â?? â?? Access: (0644/-rw-r--r--) Uid: ( 1000/ lamby) Gid: ( 1000/ lamby)
â?? â?? â?? â??
â?? â?? â?? â?? Modify: 1970-01-01 00:00:01.000000000 +0000
â?? â?? â?? â??
â?? â?? â?? â?? Birth: -
â??â??â?? networking.c
â?? â?? â?? @@ -1265,16 +1265,18 @@
â?? â?? â?? if (!(c->flags & CLIENT_SLAVE) && clientsArePaused()) break;
â?? â?? â??
â?? â?? â?? /* Immediately abort if the client is in the middle of something. */
â?? â?? â?? if (c->flags & CLIENT_BLOCKED) break;
â?? â?? â??
â?? â?? â?? /* CLIENT_CLOSE_AFTER_REPLY closes the connection once the reply is
â?? â?? â?? * written to the client. Make sure to not let the reply grow after
â?? â?? â?? - * this flag has been set (i.e. don't process more commands). */
â?? â?? â?? - if (c->flags & CLIENT_CLOSE_AFTER_REPLY) break;
â?? â?? â?? + * this flag has been set (i.e. don't process more commands).
â?? â?? â?? + *
â?? â?? â?? + * The same applies for clients we want to terminate ASAP. */
â?? â?? â?? + if (c->flags & (CLIENT_CLOSE_AFTER_REPLY|CLIENT_CLOSE_ASAP)) break;
â?? â?? â??
â?? â?? â?? /* Determine request type when unknown. */
â?? â?? â?? if (!c->reqtype) {
â?? â?? â?? if (c->querybuf[0] == '*') {
â?? â?? â?? c->reqtype = PROTO_REQ_MULTIBULK;
â?? â?? â?? } else {
â?? â?? â?? c->reqtype = PROTO_REQ_INLINE;
â?? â?? â?? @@ -1633,14 +1635,34 @@
â?? â?? â?? pauseClients(duration);
â?? â?? â?? addReply(c,shared.ok);
â?? â?? â?? } else {
â?? â?? â?? addReplyError(c, "Syntax error, try CLIENT (LIST | KILL | GETNAME | SETNAME | PAUSE | REPLY)");
â?? â?? â?? }
â?? â?? â?? }
â?? â?? â??
â?? â?? â?? +/* This callback is bound to POST and "Host:" command names. Those are not
â?? â?? â?? + * really commands, but are used in security attacks in order to talk to
â?? â?? â?? + * Redis instances via HTTP, with a technique called "cross protocol scripting"
â?? â?? â?? + * which exploits the fact that services like Redis will discard invalid
â?? â?? â?? + * HTTP headers and will process what follows.
â?? â?? â?? + *
â?? â?? â?? + * As a protection against this attack, Redis will terminate the connection
â?? â?? â?? + * when a POST or "Host:" header is seen, and will log the event from
â?? â?? â?? + * time to time (to avoid creating a DOS as a result of too many logs). */
â?? â?? â?? +void securityWarningCommand(client *c) {
â?? â?? â?? + static time_t logged_time;
â?? â?? â?? + time_t now = time(NULL);
â?? â?? â?? +
â?? â?? â?? + if (labs(now-logged_time) > 60) {
â?? â?? â?? + serverLog(LL_WARNING,"Possible SECURITY ATTACK detected. It looks like somebody is sending POST or Host: commands to Redis. This is likely due to an attacker attempting to use Cross Protocol Scripting to compromise your Redis instance. Connection aborted.");
â?? â?? â?? + logged_time = now;
â?? â?? â?? + }
â?? â?? â?? + freeClientAsync(c);
â?? â?? â?? +}
â?? â?? â?? +
â?? â?? â?? /* Rewrite the command vector of the client. All the new objects ref count
â?? â?? â?? * is incremented. The old command vector is freed, and the old objects
â?? â?? â?? * ref count is decremented. */
â?? â?? â?? void rewriteClientCommandVector(client *c, int argc, ...) {
â?? â?? â?? va_list ap;
â?? â?? â?? int j;
â?? â?? â?? robj **argv; /* The new argument vector */
â??â??â?? stat {}
â?? â?? â?? â?? @@ -1,8 +1,8 @@
â?? â?? â?? â??
â?? â?? â?? â?? - Size: 70629 Blocks: 144 IO Block: 4096 regular file
â?? â?? â?? â?? + Size: 71766 Blocks: 144 IO Block: 4096 regular file
â?? â?? â?? â?? Links: 1
â?? â?? â?? â?? Access: (0644/-rw-r--r--) Uid: ( 1000/ lamby) Gid: ( 1000/ lamby)
â?? â?? â?? â??
â?? â?? â?? â?? Modify: 1970-01-01 00:00:01.000000000 +0000
â?? â?? â?? â??
â?? â?? â?? â?? Birth: -
â??â??â?? object.c
â?? â?? â?? @@ -237,19 +237,17 @@
â?? â?? â?? void freeStringObject(robj *o) {
â?? â?? â?? if (o->encoding == OBJ_ENCODING_RAW) {
â?? â?? â?? sdsfree(o->ptr);
â?? â?? â?? }
â?? â?? â?? }
â?? â?? â??
â?? â?? â?? void freeListObject(robj *o) {
â?? â?? â?? - switch (o->encoding) {
â?? â?? â?? - case OBJ_ENCODING_QUICKLIST:
â?? â?? â?? + if (o->encoding == OBJ_ENCODING_QUICKLIST) {
â?? â?? â?? quicklistRelease(o->ptr);
â?? â?? â?? - break;
â?? â?? â?? - default:
â?? â?? â?? + } else {
â?? â?? â?? serverPanic("Unknown list encoding type");
â?? â?? â?? }
â?? â?? â?? }
â?? â?? â??
â?? â?? â?? void freeSetObject(robj *o) {
â?? â?? â?? switch (o->encoding) {
â?? â?? â?? case OBJ_ENCODING_HT:
â??â??â?? stat {}
â?? â?? â?? â?? @@ -1,8 +1,8 @@
â?? â?? â?? â??
â?? â?? â?? â?? - Size: 23224 Blocks: 48 IO Block: 4096 regular file
â?? â?? â?? â?? + Size: 23198 Blocks: 48 IO Block: 4096 regular file
â?? â?? â?? â?? Links: 1
â?? â?? â?? â?? Access: (0644/-rw-r--r--) Uid: ( 1000/ lamby) Gid: ( 1000/ lamby)
â?? â?? â?? â??
â?? â?? â?? â?? Modify: 1970-01-01 00:00:01.000000000 +0000
â?? â?? â?? â??
â?? â?? â?? â?? Birth: -
â??â??â?? redis-cli.c
â?? â?? â?? @@ -271,14 +271,18 @@
â?? â?? â?? redisReply *reply = redisCommand(context, "COMMAND");
â?? â?? â?? if(reply == NULL || reply->type != REDIS_REPLY_ARRAY) return;
â?? â?? â??
â?? â?? â?? /* Scan the array reported by COMMAND and fill only the entries that
â?? â?? â?? * don't already match what we have. */
â?? â?? â?? for (size_t j = 0; j < reply->elements; j++) {
â?? â?? â?? redisReply *entry = reply->element[j];
â?? â?? â?? + if (entry->type != REDIS_REPLY_ARRAY || entry->elements < 4 ||
â?? â?? â?? + entry->element[0]->type != REDIS_REPLY_STRING ||
â?? â?? â?? + entry->element[1]->type != REDIS_REPLY_INTEGER ||
â?? â?? â?? + entry->element[3]->type != REDIS_REPLY_INTEGER) return;
â?? â?? â?? char *cmdname = entry->element[0]->str;
â?? â?? â?? int i;
â?? â?? â??
â?? â?? â?? for (i = 0; i < helpEntriesLen; i++) {
â?? â?? â?? helpEntry *he = helpEntries+i;
â?? â?? â?? if (!strcasecmp(he->argv[0],cmdname))
â?? â?? â?? break;
â?? â?? â?? @@ -1263,14 +1267,19 @@
â?? â?? â?? static void repl(void) {
â?? â?? â?? sds historyfile = NULL;
â?? â?? â?? int history = 0;
â?? â?? â?? char *line;
â?? â?? â?? int argc;
â?? â?? â?? sds *argv;
â?? â?? â??
â?? â?? â?? + /* Initialize the help and, if possible, use the COMMAND command in order
â?? â?? â?? + * to retrieve missing entries. */
â?? â?? â?? + cliInitHelp();
â?? â?? â?? + cliIntegrateHelp();
â?? â?? â?? +
â?? â?? â?? config.interactive = 1;
â?? â?? â?? linenoiseSetMultiLine(1);
â?? â?? â?? linenoiseSetCompletionCallback(completionCallback);
â?? â?? â?? linenoiseSetHintsCallback(hintsCallback);
â?? â?? â?? linenoiseSetFreeHintsCallback(freeHintsCallback);
â?? â?? â??
â?? â?? â?? /* Only use history and load the rc file when stdin is a tty. */
â?? â?? â?? @@ -2593,19 +2602,14 @@
â?? â?? â?? config.output = OUTPUT_STANDARD;
â?? â?? â?? config.mb_delim = sdsnew("\n");
â?? â?? â??
â?? â?? â?? firstarg = parseOptions(argc,argv);
â?? â?? â?? argc -= firstarg;
â?? â?? â?? argv += firstarg;
â?? â?? â??
â?? â?? â?? - /* Initialize the help and, if possible, use the COMMAND command in order
â?? â?? â?? - * to retrieve missing entries. */
â?? â?? â?? - cliInitHelp();
â?? â?? â?? - cliIntegrateHelp();
â?? â?? â?? -
â?? â?? â?? /* Latency mode */
â?? â?? â?? if (config.latency_mode) {
â?? â?? â?? if (cliConnect(0) == REDIS_ERR) exit(1);
â?? â?? â?? latencyMode();
â?? â?? â?? }
â?? â?? â??
â?? â?? â?? /* Latency distribution mode */
â??â??â?? stat {}
â?? â?? â?? â?? @@ -1,8 +1,8 @@
â?? â?? â?? â??
â?? â?? â?? â?? - Size: 90077 Blocks: 176 IO Block: 4096 regular file
â?? â?? â?? â?? + Size: 90339 Blocks: 184 IO Block: 4096 regular file
â?? â?? â?? â?? Links: 1
â?? â?? â?? â?? Access: (0644/-rw-r--r--) Uid: ( 1000/ lamby) Gid: ( 1000/ lamby)
â?? â?? â?? â??
â?? â?? â?? â?? Modify: 1970-01-01 00:00:01.000000000 +0000
â?? â?? â?? â??
â?? â?? â?? â?? Birth: -
â??â??â?? server.c
â?? â?? â?? @@ -290,14 +290,16 @@
â?? â?? â?? {"geopos",geoposCommand,-2,"r",0,NULL,1,1,1,0,0},
â?? â?? â?? {"geodist",geodistCommand,-4,"r",0,NULL,1,1,1,0,0},
â?? â?? â?? {"pfselftest",pfselftestCommand,1,"a",0,NULL,0,0,0,0,0},
â?? â?? â?? {"pfadd",pfaddCommand,-2,"wmF",0,NULL,1,1,1,0,0},
â?? â?? â?? {"pfcount",pfcountCommand,-2,"r",0,NULL,1,-1,1,0,0},
â?? â?? â?? {"pfmerge",pfmergeCommand,-2,"wm",0,NULL,1,-1,1,0,0},
â?? â?? â?? {"pfdebug",pfdebugCommand,-3,"w",0,NULL,0,0,0,0,0},
â?? â?? â?? + {"post",securityWarningCommand,-1,"lt",0,NULL,0,0,0,0,0},
â?? â?? â?? + {"host:",securityWarningCommand,-1,"lt",0,NULL,0,0,0,0,0},
â?? â?? â?? {"latency",latencyCommand,-2,"aslt",0,NULL,0,0,0,0,0}
â?? â?? â?? };
â?? â?? â??
â?? â?? â?? struct evictionPoolEntry *evictionPoolAlloc(void);
â?? â?? â??
â?? â?? â?? /*============================ Utility functions ============================ */
â??â??â?? stat {}
â?? â?? â?? â?? @@ -1,8 +1,8 @@
â?? â?? â?? â??
â?? â?? â?? â?? - Size: 162619 Blocks: 320 IO Block: 4096 regular file
â?? â?? â?? â?? + Size: 162744 Blocks: 320 IO Block: 4096 regular file
â?? â?? â?? â?? Links: 1
â?? â?? â?? â?? Access: (0644/-rw-r--r--) Uid: ( 1000/ lamby) Gid: ( 1000/ lamby)
â?? â?? â?? â??
â?? â?? â?? â?? Modify: 1970-01-01 00:00:01.000000000 +0000
â?? â?? â?? â??
â?? â?? â?? â?? Birth: -
â??â??â?? server.h
â?? â?? â?? @@ -1641,14 +1641,15 @@
â?? â?? â?? void geodistCommand(client *c);
â?? â?? â?? void pfselftestCommand(client *c);
â?? â?? â?? void pfaddCommand(client *c);
â?? â?? â?? void pfcountCommand(client *c);
â?? â?? â?? void pfmergeCommand(client *c);
â?? â?? â?? void pfdebugCommand(client *c);
â?? â?? â?? void latencyCommand(client *c);
â?? â?? â?? +void securityWarningCommand(client *c);
â?? â?? â??
â?? â?? â?? #if defined(__GNUC__)
â?? â?? â?? void *calloc(size_t count, size_t size) __attribute__ ((deprecated));
â?? â?? â?? void free(void *ptr) __attribute__ ((deprecated));
â?? â?? â?? void *malloc(size_t size) __attribute__ ((deprecated));
â?? â?? â?? void *realloc(void *ptr, size_t size) __attribute__ ((deprecated));
â?? â?? â?? #endif
â??â??â?? stat {}
â?? â?? â?? â?? @@ -1,8 +1,8 @@
â?? â?? â?? â??
â?? â?? â?? â?? - Size: 74429 Blocks: 152 IO Block: 4096 regular file
â?? â?? â?? â?? + Size: 74469 Blocks: 152 IO Block: 4096 regular file
â?? â?? â?? â?? Links: 1
â?? â?? â?? â?? Access: (0644/-rw-r--r--) Uid: ( 1000/ lamby) Gid: ( 1000/ lamby)
â?? â?? â?? â??
â?? â?? â?? â?? Modify: 1970-01-01 00:00:01.000000000 +0000
â?? â?? â?? â??
â?? â?? â?? â?? Birth: -
â??â??â?? t_zset.c
â?? â?? â?? @@ -1243,15 +1243,15 @@
â?? â?? â?? int nx = (flags & ZADD_NX) != 0;
â?? â?? â?? int xx = (flags & ZADD_XX) != 0;
â?? â?? â?? int ch = (flags & ZADD_CH) != 0;
â?? â?? â??
â?? â?? â?? /* After the options, we expect to have an even number of args, since
â?? â?? â?? * we expect any number of score-element pairs. */
â?? â?? â?? elements = c->argc-scoreidx;
â?? â?? â?? - if (elements % 2) {
â?? â?? â?? + if (elements % 2 || !elements) {
â?? â?? â?? addReply(c,shared.syntaxerr);
â?? â?? â?? return;
â?? â?? â?? }
â?? â?? â?? elements /= 2; /* Now this holds the number of score-element pairs. */
â?? â?? â??
â?? â?? â?? /* Check for incompatible options. */
â?? â?? â?? if (nx && xx) {
â??â??â?? stat {}
â?? â?? â?? â?? @@ -1,8 +1,8 @@
â?? â?? â?? â??
â?? â?? â?? â?? - Size: 96252 Blocks: 192 IO Block: 4096 regular file
â?? â?? â?? â?? + Size: 96265 Blocks: 192 IO Block: 4096 regular file
â?? â?? â?? â?? Links: 1
â?? â?? â?? â?? Access: (0644/-rw-r--r--) Uid: ( 1000/ lamby) Gid: ( 1000/ lamby)
â?? â?? â?? â??
â?? â?? â?? â?? Modify: 1970-01-01 00:00:01.000000000 +0000
â?? â?? â?? â??
â?? â?? â?? â?? Birth: -
â??â??â?? version.h
â?? â?? â?? @@ -1 +1 @@
â?? â?? â?? -#define REDIS_VERSION "3.2.6"
â?? â?? â?? +#define REDIS_VERSION "3.2.8"
â??â??â?? ziplist.c
â?? â?? â?? @@ -176,30 +176,30 @@
â?? â?? â?? (encoding) = (ptr[0]); \
â?? â?? â?? if ((encoding) < ZIP_STR_MASK) (encoding) &= ZIP_STR_MASK; \
â?? â?? â?? } while(0)
â?? â?? â??
â?? â?? â?? void ziplistRepr(unsigned char *zl);
â?? â?? â??
â?? â?? â?? /* Return bytes needed to store integer encoded by 'encoding' */
â?? â?? â?? -static unsigned int zipIntSize(unsigned char encoding) {
â?? â?? â?? +unsigned int zipIntSize(unsigned char encoding) {
â?? â?? â?? switch(encoding) {
â?? â?? â?? case ZIP_INT_8B: return 1;
â?? â?? â?? case ZIP_INT_16B: return 2;
â?? â?? â?? case ZIP_INT_24B: return 3;
â?? â?? â?? case ZIP_INT_32B: return 4;
â?? â?? â?? case ZIP_INT_64B: return 8;
â?? â?? â?? default: return 0; /* 4 bit immediate */
â?? â?? â?? }
â?? â?? â?? assert(NULL);
â?? â?? â?? return 0;
â?? â?? â?? }
â?? â?? â??
â?? â?? â?? /* Encode the length 'rawlen' writing it in 'p'. If p is NULL it just returns
â?? â?? â?? * the amount of bytes required to encode such a length. */
â?? â?? â?? -static unsigned int zipEncodeLength(unsigned char *p, unsigned char encoding, unsigned int rawlen) {
â?? â?? â?? +unsigned int zipEncodeLength(unsigned char *p, unsigned char encoding, unsigned int rawlen) {
â?? â?? â?? unsigned char len = 1, buf[5];
â?? â?? â??
â?? â?? â?? if (ZIP_IS_STR(encoding)) {
â?? â?? â?? /* Although encoding is given it may not be set for strings,
â?? â?? â?? * so we determine it here using the raw length. */
â?? â?? â?? if (rawlen <= 0x3f) {
â?? â?? â?? if (!p) return len;
â?? â?? â?? @@ -255,15 +255,15 @@
â?? â?? â?? (lensize) = 1; \
â?? â?? â?? (len) = zipIntSize(encoding); \
â?? â?? â?? } \
â?? â?? â?? } while(0);
â?? â?? â??
â?? â?? â?? /* Encode the length of the previous entry and write it to "p". Return the
â?? â?? â?? * number of bytes needed to encode this length if "p" is NULL. */
â?? â?? â?? -static unsigned int zipPrevEncodeLength(unsigned char *p, unsigned int len) {
â?? â?? â?? +unsigned int zipPrevEncodeLength(unsigned char *p, unsigned int len) {
â?? â?? â?? if (p == NULL) {
â?? â?? â?? return (len < ZIP_BIGLEN) ? 1 : sizeof(len)+1;
â?? â?? â?? } else {
â?? â?? â?? if (len < ZIP_BIGLEN) {
â?? â?? â?? p[0] = len;
â?? â?? â?? return 1;
â?? â?? â?? } else {
â?? â?? â?? @@ -273,15 +273,15 @@
â?? â?? â?? return 1+sizeof(len);
â?? â?? â?? }
â?? â?? â?? }
â?? â?? â?? }
â?? â?? â??
â?? â?? â?? /* Encode the length of the previous entry and write it to "p". This only
â?? â?? â?? * uses the larger encoding (required in __ziplistCascadeUpdate). */
â?? â?? â?? -static void zipPrevEncodeLengthForceLarge(unsigned char *p, unsigned int len) {
â?? â?? â?? +void zipPrevEncodeLengthForceLarge(unsigned char *p, unsigned int len) {
â?? â?? â?? if (p == NULL) return;
â?? â?? â?? p[0] = ZIP_BIGLEN;
â?? â?? â?? memcpy(p+1,&len,sizeof(len));
â?? â?? â?? memrev32ifbe(p+1);
â?? â?? â?? }
â?? â?? â??
â?? â?? â?? /* Decode the number of bytes required to store the length of the previous
â?? â?? â?? @@ -305,31 +305,31 @@
â?? â?? â?? memcpy(&(prevlen), ((char*)(ptr)) + 1, 4); \
â?? â?? â?? memrev32ifbe(&prevlen); \
â?? â?? â?? } \
â?? â?? â?? } while(0);
â?? â?? â??
â?? â?? â?? /* Return the difference in number of bytes needed to store the length of the
â?? â?? â?? * previous element 'len', in the entry pointed to by 'p'. */
â?? â?? â?? -static int zipPrevLenByteDiff(unsigned char *p, unsigned int len) {
â?? â?? â?? +int zipPrevLenByteDiff(unsigned char *p, unsigned int len) {
â?? â?? â?? unsigned int prevlensize;
â?? â?? â?? ZIP_DECODE_PREVLENSIZE(p, prevlensize);
â?? â?? â?? return zipPrevEncodeLength(NULL, len) - prevlensize;
â?? â?? â?? }
â?? â?? â??
â?? â?? â?? /* Return the total number of bytes used by the entry pointed to by 'p'. */
â?? â?? â?? -static unsigned int zipRawEntryLength(unsigned char *p) {
â?? â?? â?? +unsigned int zipRawEntryLength(unsigned char *p) {
â?? â?? â?? unsigned int prevlensize, encoding, lensize, len;
â?? â?? â?? ZIP_DECODE_PREVLENSIZE(p, prevlensize);
â?? â?? â?? ZIP_DECODE_LENGTH(p + prevlensize, encoding, lensize, len);
â?? â?? â?? return prevlensize + lensize + len;
â?? â?? â?? }
â?? â?? â??
â?? â?? â?? /* Check if string pointed to by 'entry' can be encoded as an integer.
â?? â?? â?? * Stores the integer value in 'v' and its encoding in 'encoding'. */
â?? â?? â?? -static int zipTryEncoding(unsigned char *entry, unsigned int entrylen, long long *v, unsigned char *encoding) {
â?? â?? â?? +int zipTryEncoding(unsigned char *entry, unsigned int entrylen, long long *v, unsigned char *encoding) {
â?? â?? â?? long long value;
â?? â?? â??
â?? â?? â?? if (entrylen >= 32 || entrylen == 0) return 0;
â?? â?? â?? if (string2ll((char*)entry,entrylen,&value)) {
â?? â?? â?? /* Great, the string can be encoded. Check what's the smallest
â?? â?? â?? * of our encoding types that can hold this value. */
â?? â?? â?? if (value >= 0 && value <= 12) {
â?? â?? â?? @@ -348,15 +348,15 @@
â?? â?? â?? *v = value;
â?? â?? â?? return 1;
â?? â?? â?? }
â?? â?? â?? return 0;
â?? â?? â?? }
â?? â?? â??
â?? â?? â?? /* Store integer 'value' at 'p', encoded as 'encoding' */
â?? â?? â?? -static void zipSaveInteger(unsigned char *p, int64_t value, unsigned char encoding) {
â?? â?? â?? +void zipSaveInteger(unsigned char *p, int64_t value, unsigned char encoding) {
â?? â?? â?? int16_t i16;
â?? â?? â?? int32_t i32;
â?? â?? â?? int64_t i64;
â?? â?? â?? if (encoding == ZIP_INT_8B) {
â?? â?? â?? ((int8_t*)p)[0] = (int8_t)value;
â?? â?? â?? } else if (encoding == ZIP_INT_16B) {
â?? â?? â?? i16 = value;
â?? â?? â?? @@ -378,15 +378,15 @@
â?? â?? â?? /* Nothing to do, the value is stored in the encoding itself. */
â?? â?? â?? } else {
â?? â?? â?? assert(NULL);
â?? â?? â?? }
â?? â?? â?? }
â?? â?? â??
â?? â?? â?? /* Read integer encoded as 'encoding' from 'p' */
â?? â?? â?? -static int64_t zipLoadInteger(unsigned char *p, unsigned char encoding) {
â?? â?? â?? +int64_t zipLoadInteger(unsigned char *p, unsigned char encoding) {
â?? â?? â?? int16_t i16;
â?? â?? â?? int32_t i32;
â?? â?? â?? int64_t i64, ret = 0;
â?? â?? â?? if (encoding == ZIP_INT_8B) {
â?? â?? â?? ret = ((int8_t*)p)[0];
â?? â?? â?? } else if (encoding == ZIP_INT_16B) {
â?? â?? â?? memcpy(&i16,p,sizeof(i16));
â?? â?? â?? @@ -410,15 +410,15 @@
â?? â?? â?? } else {
â?? â?? â?? assert(NULL);
â?? â?? â?? }
â?? â?? â?? return ret;
â?? â?? â?? }
â?? â?? â??
â?? â?? â?? /* Return a struct with all information about an entry. */
â?? â?? â?? -static void zipEntry(unsigned char *p, zlentry *e) {
â?? â?? â?? +void zipEntry(unsigned char *p, zlentry *e) {
â?? â?? â??
â?? â?? â?? ZIP_DECODE_PREVLEN(p, e->prevrawlensize, e->prevrawlen);
â?? â?? â?? ZIP_DECODE_LENGTH(p + e->prevrawlensize, e->encoding, e->lensize, e->len);
â?? â?? â?? e->headersize = e->prevrawlensize + e->lensize;
â?? â?? â?? e->p = p;
â?? â?? â?? }
â?? â?? â??
â?? â?? â?? @@ -430,15 +430,15 @@
â?? â?? â?? ZIPLIST_TAIL_OFFSET(zl) = intrev32ifbe(ZIPLIST_HEADER_SIZE);
â?? â?? â?? ZIPLIST_LENGTH(zl) = 0;
â?? â?? â?? zl[bytes-1] = ZIP_END;
â?? â?? â?? return zl;
â?? â?? â?? }
â?? â?? â??
â?? â?? â?? /* Resize the ziplist. */
â?? â?? â?? -static unsigned char *ziplistResize(unsigned char *zl, unsigned int len) {
â?? â?? â?? +unsigned char *ziplistResize(unsigned char *zl, unsigned int len) {
â?? â?? â?? zl = zrealloc(zl,len);
â?? â?? â?? ZIPLIST_BYTES(zl) = intrev32ifbe(len);
â?? â?? â?? zl[len-1] = ZIP_END;
â?? â?? â?? return zl;
â?? â?? â?? }
â?? â?? â??
â?? â?? â?? /* When an entry is inserted, we need to set the prevlen field of the next
â?? â?? â?? @@ -457,15 +457,15 @@
â?? â?? â?? * because it can cause a "flapping" effect where a chain prevlen fields is
â?? â?? â?? * first grown and then shrunk again after consecutive inserts. Rather, the
â?? â?? â?? * field is allowed to stay larger than necessary, because a large prevlen
â?? â?? â?? * field implies the ziplist is holding large entries anyway.
â?? â?? â?? *
â?? â?? â?? * The pointer "p" points to the first entry that does NOT need to be
â?? â?? â?? * updated, i.e. consecutive fields MAY need an update. */
â?? â?? â?? -static unsigned char *__ziplistCascadeUpdate(unsigned char *zl, unsigned char *p) {
â?? â?? â?? +unsigned char *__ziplistCascadeUpdate(unsigned char *zl, unsigned char *p) {
â?? â?? â?? size_t curlen = intrev32ifbe(ZIPLIST_BYTES(zl)), rawlen, rawlensize;
â?? â?? â?? size_t offset, noffset, extra;
â?? â?? â?? unsigned char *np;
â?? â?? â?? zlentry cur, next;
â?? â?? â??
â?? â?? â?? while (p[0] != ZIP_END) {
â?? â?? â?? zipEntry(p, &cur);
â?? â?? â?? @@ -519,15 +519,15 @@
â?? â?? â?? break;
â?? â?? â?? }
â?? â?? â?? }
â?? â?? â?? return zl;
â?? â?? â?? }
â?? â?? â??
â?? â?? â?? /* Delete "num" entries, starting at "p". Returns pointer to the ziplist. */
â?? â?? â?? -static unsigned char *__ziplistDelete(unsigned char *zl, unsigned char *p, unsigned int num) {
â?? â?? â?? +unsigned char *__ziplistDelete(unsigned char *zl, unsigned char *p, unsigned int num) {
â?? â?? â?? unsigned int i, totlen, deleted = 0;
â?? â?? â?? size_t offset;
â?? â?? â?? int nextdiff = 0;
â?? â?? â?? zlentry first, tail;
â?? â?? â??
â?? â?? â?? zipEntry(p, &first);
â?? â?? â?? for (i = 0; p[0] != ZIP_END && i < num; i++) {
â?? â?? â?? @@ -579,15 +579,15 @@
â?? â?? â?? if (nextdiff != 0)
â?? â?? â?? zl = __ziplistCascadeUpdate(zl,p);
â?? â?? â?? }
â?? â?? â?? return zl;
â?? â?? â?? }
â?? â?? â??
â?? â?? â?? /* Insert item at "p". */
â?? â?? â?? -static unsigned char *__ziplistInsert(unsigned char *zl, unsigned char *p, unsigned char *s, unsigned int slen) {
â?? â?? â?? +unsigned char *__ziplistInsert(unsigned char *zl, unsigned char *p, unsigned char *s, unsigned int slen) {
â?? â?? â?? size_t curlen = intrev32ifbe(ZIPLIST_BYTES(zl)), reqlen;
â?? â?? â?? unsigned int prevlensize, prevlen = 0;
â?? â?? â?? size_t offset;
â?? â?? â?? int nextdiff = 0;
â?? â?? â?? unsigned char encoding = 0;
â?? â?? â?? long long value = 123456789; /* initialized to avoid warning. Using a value
â?? â?? â?? that is easy to see if for some reason
â?? â?? â?? @@ -617,28 +617,36 @@
â?? â?? â?? * the length of the payload. */
â?? â?? â?? reqlen += zipPrevEncodeLength(NULL,prevlen);
â?? â?? â?? reqlen += zipEncodeLength(NULL,encoding,slen);
â?? â?? â??
â?? â?? â?? /* When the insert position is not equal to the tail, we need to
â?? â?? â?? * make sure that the next entry can hold this entry's length in
â?? â?? â?? * its prevlen field. */
â?? â?? â?? + int forcelarge = 0;
â?? â?? â?? nextdiff = (p[0] != ZIP_END) ? zipPrevLenByteDiff(p,reqlen) : 0;
â?? â?? â?? + if (nextdiff == -4 && reqlen < 4) {
â?? â?? â?? + nextdiff = 0;
â?? â?? â?? + forcelarge = 1;
â?? â?? â?? + }
â?? â?? â??
â?? â?? â?? /* Store offset because a realloc may change the address of zl. */
â?? â?? â?? offset = p-zl;
â?? â?? â?? zl = ziplistResize(zl,curlen+reqlen+nextdiff);
â?? â?? â?? p = zl+offset;
â?? â?? â??
â?? â?? â?? /* Apply memory move when necessary and update tail offset. */
â?? â?? â?? if (p[0] != ZIP_END) {
â?? â?? â?? /* Subtract one because of the ZIP_END bytes */
â?? â?? â?? memmove(p+reqlen,p-nextdiff,curlen-offset-1+nextdiff);
â?? â?? â??
â?? â?? â?? /* Encode this entry's raw length in the next entry. */
â?? â?? â?? - zipPrevEncodeLength(p+reqlen,reqlen);
â?? â?? â?? + if (forcelarge)
â?? â?? â?? + zipPrevEncodeLengthForceLarge(p+reqlen,reqlen);
â?? â?? â?? + else
â?? â?? â?? + zipPrevEncodeLength(p+reqlen,reqlen);
â?? â?? â??
â?? â?? â?? /* Update offset for tail */
â?? â?? â?? ZIPLIST_TAIL_OFFSET(zl) =
â?? â?? â?? intrev32ifbe(intrev32ifbe(ZIPLIST_TAIL_OFFSET(zl))+reqlen);
â?? â?? â??
â?? â?? â?? /* When the tail contains more than one entry, we need to take
â?? â?? â?? * "nextdiff" in account as well. Otherwise, a change in the
â??â??â?? stat {}
â?? â?? â?? â?? @@ -1,8 +1,8 @@
â?? â?? â?? â??
â?? â?? â?? â?? - Size: 61305 Blocks: 120 IO Block: 4096 regular file
â?? â?? â?? â?? + Size: 61424 Blocks: 120 IO Block: 4096 regular file
â?? â?? â?? â?? Links: 1
â?? â?? â?? â?? Access: (0644/-rw-r--r--) Uid: ( 1000/ lamby) Gid: ( 1000/ lamby)
â?? â?? â?? â??
â?? â?? â?? â?? Modify: 1970-01-01 00:00:01.000000000 +0000
â?? â?? â?? â??
â?? â?? â?? â?? Birth: -
--- End Message ---