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

Bug#857746: marked as done (unblock: redis/3:3.2.8-2)



Your message dated Wed, 15 Mar 2017 22:28:09 +0000
with message-id <E1coHOr-0005YJ-GO@respighi.debian.org>
and subject line unblock redis
has caused the Debian Bug report #857746,
regarding unblock: redis/3:3.2.8-2
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
857746: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=857746
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- 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 ---
--- Begin Message ---
Unblocked.

--- End Message ---

Reply to: