[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#857746: unblock: redis/3:3.2.8-2



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: -

Reply to: