[zookeeper] 01/01: Import Debian changes 3.4.5+dfsg-2+deb7u1

Markus Koschany apo at moszumanska.debian.org
Thu Jun 15 20:20:26 UTC 2017


This is an automated email from the git hooks/post-receive script.

apo pushed a commit to branch wheezy
in repository zookeeper.

commit 6e768e0d947ccc02ad8f36310af4d71346505d72
Merge: e1d02d5 dda654a
Author: Markus Koschany <apo at debian.org>
Date:   Thu Jun 15 20:42:37 2017 +0200

    Import Debian changes 3.4.5+dfsg-2+deb7u1
    
    zookeeper (3.4.5+dfsg-2+deb7u1) wheezy-security; urgency=high
    
      * Non-maintainer upload by the LTS team.
      * Fix CVE-2017-5637 by backporting version 3.4.5 from Jessie. The 3.3 branch
        is no longer supported upstream.
        It was discovered that Zookeeper, a service for maintaining
        configuration information, didn't restrict access to the computationally
        expensive wchp/wchc commands which could result in denial of service by
        elevated CPU consumption.
        This update disables those two commands by default. The new
        configuration option "4lw.commands.whitelist" can be used to whitelist
        commands selectively (and the full set of commands can be restored
        with '*')
    
    zookeeper (3.4.5+dfsg-2+deb8u2) jessie-security; urgency=medium
    
      * CVE-2017-5637
    
    zookeeper (3.4.5+dfsg-2+deb8u1) jessie; urgency=high
    
      * Team upload.
      * Fix CVE-2016-5017:
        Lyon Yang discovered that the C client shells cli_st and cli_mt of Apache
        Zookeeper, a high-performance coordination service for distributed
        applications, were affected by a buffer overflow vulnerability associated
        with parsing of the input command when using the "cmd:" batch mode syntax.
        If the command string exceeds 1024 characters a buffer overflow will occur.
    
    zookeeper (3.4.5+dfsg-2) unstable; urgency=high
    
      [ tony mancill ]
      * Team upload.
      * Add slf4j jars to CLASSPATH in zooinspector. (Closes: #712778)
    
      [ Tim Retout ]
      * debian/watch: Add pgp signature mangling, and use main mirror.
      * debian/upstream/signing-key.asc: Add upstream signing keys.
      * debian/*.preinst: Transition /usr/share/doc symlinks to real
        directories. (Closes: #720148)
      * Urgency set to high for RC bugfix.
    
    zookeeper (3.4.5+dfsg-1) unstable; urgency=low
    
      * Upload to unstable.
      * d/p/fixes/ZOOKEEPER-740: Cherry picked fix from upstream bugtracker to
        resolve issue with slow running add_auth calls with multi-threaded
        client.
      * d/rules: Disable mt client tests due to test library incompatibility
        with libc 2.17.
      * d/rules: Drop override_dh_installdocs, no longer required.
      * d/control: Tweak depends for libzookeeper-java{-doc} to be Java policy
        compliant.
    
    zookeeper (3.4.5+dfsg-1~exp2) experimental; urgency=low
    
      * d/conf_example/environment: Add missing jars to zookeeper CLASSPATH
        for 3.4.5 release.
      * d/control: Update VCS fields to be canonical.
    
    zookeeper (3.4.5+dfsg-1~exp1) experimental; urgency=low
    
      * New upstream release (Closes: #699120, LP: #1107400, #954160):
        - d/p/ZOOKEEPER-{1374,1033}: Dropped, included upstream.
        - Refreshed remaining patches.
        - Drop bookkeeper support, now a separate project.
        - d/control: Added new BD's on netty, slf4j and mockito.
        - d/zookeeper.{install,cron.daily}: Drop scheduled transaction
          log purging as now handled internally.
      * d/control: Bumped Standards-Version, no changes.
      * d/control: Dropped obsolete DM-Upload-Allowed.
      * Sync Ubuntu changes:
        - d/rules: Only execute native test suite on i386 and amd64
          architectures; its a bit racey and does not execute reliably
          on others.
      * d/rules,zookeeperd.upstart: Rejig now that debhelper in Debian and
        Ubuntu does the right things with init and upstart configs.
      * d/rules: Disable native tests on Ubuntu due to incompatibility in
        test framework with glibc 2.17.
    
    zookeeper (3.3.6+dfsg-1) experimental; urgency=low
    
      * Re-sync with Ubuntu.
      * New upstream release:
        - Dropped patches for ZOOKEEPER-1403 and ZOOKEEPER-1431; included upstream.
        - Refreshed all other patches.
      * d/{watch,orig-tar.sh,README.source}: Repack upstream tarball using uscan
        to ease new upstream releases.
      * d/control: Version debhelper (>= 9~).
      * d/rules: Refactor contrib builds to use properties file.
      * d/ant.properties: Collate properties for contrib builds ensuring that
        bytecode built is backwards compatible.

 CHANGES.txt                                        |  800 ++++-
 NOTICE.txt                                         |    2 +-
 README.txt                                         |    4 +-
 README_packaging.txt                               |   65 +
 bin/zkCleanup.sh                                   |   16 +-
 bin/zkCli.sh                                       |   18 +-
 bin/zkEnv.sh                                       |   38 +-
 bin/zkServer.sh                                    |   37 +-
 build.xml                                          |  424 ++-
 conf/log4j.properties                              |   25 +-
 conf/zoo_sample.cfg                                |   13 +
 debian/README.source                               |   25 -
 debian/ant.properties                              |   15 +-
 debian/changelog                                   |  102 +-
 debian/conf_example/environment                    |    2 +-
 debian/control                                     |   24 +-
 debian/libzookeeper-java-doc.preinst               |   17 +
 debian/libzookeeper-java.jlibs                     |    1 -
 debian/libzookeeper-mt-dev.preinst                 |   17 +
 debian/libzookeeper-st-dev.preinst                 |   17 +
 debian/libzookeeper2.preinst                       |   17 +
 debian/orig-tar.sh                                 |   32 +
 debian/patches/CVE-2017-5637.patch                 |  593 ++++
 debian/patches/debian/disable-cygwin-detection     |   14 +-
 debian/patches/debian/patch-build-system           |   71 +-
 debian/patches/fixes/ZOOKEEPER-1033                |   18 -
 debian/patches/fixes/ZOOKEEPER-1374                |   39 -
 debian/patches/fixes/ZOOKEEPER-1403                |   15 -
 debian/patches/fixes/ZOOKEEPER-1431                |   71 -
 debian/patches/fixes/ZOOKEEPER-705                 |   10 +-
 debian/patches/fixes/ZOOKEEPER-770                 |   76 +
 debian/patches/series                              |    6 +-
 debian/python-zookeeper.preinst                    |   17 +
 debian/rules                                       |   44 +-
 debian/upstream/signing-key.asc                    |  213 ++
 debian/watch                                       |    6 +-
 debian/zooinspector                                |    2 +-
 debian/zookeeper-bin.preinst                       |   17 +
 debian/zookeeper.cron.daily                        |    4 -
 debian/zookeeper.install                           |    1 -
 debian/zookeeper.preinst                           |   17 +
 debian/zookeeperd.preinst                          |   17 +
 .../{zookeeperd.upstart.in => zookeeperd.upstart}  |    0
 ivy.xml                                            |   23 +-
 ivysettings.xml                                    |    2 +-
 .../{zookeeper_3.3.5.xml => zookeeper_3.4.4.xml}   | 1749 ++++++++++-
 .../jdiff/zookeeper_3.4.5.xml                      | 1749 ++++++++++-
 src/c/Cli.vcproj                                   |  408 +++
 src/c/Makefile.am                                  |    6 +-
 src/c/NOTICE.txt                                   |   41 +
 src/c/README                                       |   11 +-
 src/c/config.h.in                                  |   11 +-
 src/c/configure.ac                                 |   32 +-
 src/c/depcomp                                      |  172 +-
 src/c/include/proto.h                              |   32 +-
 src/c/include/recordio.h                           |    6 +
 src/c/{config.h.in => include/winconfig.h}         |   87 +-
 src/c/include/winstdint.h                          |  247 ++
 src/c/include/zookeeper.h                          |  195 +-
 src/c/include/zookeeper_version.h                  |    2 +-
 src/c/install-sh                                   |  517 +--
 src/c/missing                                      |  104 +-
 src/c/src/cli.c                                    |   61 +-
 src/c/src/hashtable/hashtable.h                    |    4 +-
 src/c/src/hashtable/hashtable_itr.c                |   12 -
 src/c/src/hashtable/hashtable_itr.h                |    4 +-
 src/c/src/load_gen.c                               |    6 +
 src/c/src/mt_adaptor.c                             |  157 +-
 src/c/src/recordio.c                               |   30 +-
 src/c/src/winport.c                                |  292 ++
 src/c/src/winport.h                                |  123 +
 src/c/src/zk_adaptor.h                             |   13 +
 src/c/src/zk_hashtable.c                           |   12 +-
 src/c/src/zk_log.c                                 |   30 +-
 src/c/src/zookeeper.c                              | 1217 +++++---
 src/c/tests/TestClient.cc                          |   36 +-
 src/c/tests/TestMulti.cc                           |  653 ++++
 src/c/tests/TestOperations.cc                      |    2 +-
 src/c/tests/TestZookeeperInit.cc                   |    4 +-
 src/c/tests/ThreadingUtil.cc                       |    8 +
 src/c/tests/ZKMocks.cc                             |    2 +-
 src/c/zookeeper.sln                                |   57 +
 src/c/zookeeper.vcproj                             |  606 ++++
 src/contrib/bookkeeper/README.txt                  |   62 -
 .../apache/bookkeeper/benchmark/MySqlClient.java   |  137 -
 .../apache/bookkeeper/benchmark/TestClient.java    |  252 --
 src/contrib/bookkeeper/bookkeeper.pom              |   48 -
 src/contrib/bookkeeper/conf/log4j.properties       |   72 -
 .../java/org/apache/bookkeeper/bookie/Bookie.java  |  541 ----
 .../apache/bookkeeper/bookie/BookieException.java  |   81 -
 .../apache/bookkeeper/bookie/BufferedChannel.java  |  157 -
 .../org/apache/bookkeeper/bookie/EntryLogger.java  |  264 --
 .../org/apache/bookkeeper/bookie/FileInfo.java     |  113 -
 .../org/apache/bookkeeper/bookie/LedgerCache.java  |  454 ---
 .../apache/bookkeeper/bookie/LedgerDescriptor.java |  133 -
 .../apache/bookkeeper/bookie/LedgerEntryPage.java  |  151 -
 .../bookkeeper/bookie/MarkerFileChannel.java       |  147 -
 .../apache/bookkeeper/client/AsyncCallback.java    |  113 -
 .../org/apache/bookkeeper/client/BKException.java  |  227 --
 .../org/apache/bookkeeper/client/BookKeeper.java   |  361 ---
 .../apache/bookkeeper/client/BookieWatcher.java    |  204 --
 .../bookkeeper/client/CRC32DigestManager.java      |   50 -
 .../apache/bookkeeper/client/DigestManager.java    |  184 --
 .../bookkeeper/client/DistributionSchedule.java    |   61 -
 .../apache/bookkeeper/client/LedgerCreateOp.java   |  163 -
 .../org/apache/bookkeeper/client/LedgerEntry.java  |   83 -
 .../org/apache/bookkeeper/client/LedgerHandle.java |  509 ---
 .../apache/bookkeeper/client/LedgerMetadata.java   |  198 --
 .../org/apache/bookkeeper/client/LedgerOpenOp.java |  136 -
 .../apache/bookkeeper/client/LedgerRecoveryOp.java |  179 --
 .../apache/bookkeeper/client/MacDigestManager.java |   67 -
 .../org/apache/bookkeeper/client/PendingAddOp.java |  137 -
 .../apache/bookkeeper/client/PendingReadOp.java    |  155 -
 .../client/RoundRobinDistributionSchedule.java     |   87 -
 .../org/apache/bookkeeper/client/SyncCounter.java  |   85 -
 .../org/apache/bookkeeper/proto/BookieClient.java  |  178 --
 .../apache/bookkeeper/proto/BookieProtocol.java    |   75 -
 .../org/apache/bookkeeper/proto/BookieServer.java  |  209 --
 .../proto/BookkeeperInternalCallbacks.java         |   57 -
 .../apache/bookkeeper/proto/NIOServerFactory.java  |  521 ----
 .../bookkeeper/proto/PerChannelBookieClient.java   |  570 ----
 .../org/apache/bookkeeper/proto/ServerStats.java   |  148 -
 .../bookkeeper/streaming/LedgerInputStream.java    |  173 -
 .../bookkeeper/streaming/LedgerOutputStream.java   |  147 -
 .../apache/bookkeeper/tools/BookKeeperTools.java   |  758 -----
 .../apache/bookkeeper/util/LocalBookKeeper.java    |  208 --
 .../src/java/org/apache/bookkeeper/util/Main.java  |   54 -
 .../bookkeeper/util/OrderedSafeExecutor.java       |   98 -
 .../org/apache/bookkeeper/util/StringUtils.java    |   94 -
 .../apache/bookkeeper/test/AsyncLedgerOpsTest.java |  256 --
 .../org/apache/bookkeeper/test/BaseTestCase.java   |  175 --
 .../apache/bookkeeper/test/BookieClientTest.java   |  232 --
 .../apache/bookkeeper/test/BookieFailureTest.java  |  305 --
 .../bookkeeper/test/BookieReadWriteTest.java       |  574 ----
 .../apache/bookkeeper/test/BookieRecoveryTest.java |  400 ---
 .../test/org/apache/bookkeeper/test/CloseTest.java |   74 -
 .../bookkeeper/test/ConcurrentLedgerTest.java      |  178 --
 .../apache/bookkeeper/test/LedgerRecoveryTest.java |   88 -
 .../org/apache/bookkeeper/test/LoopbackClient.java |  117 -
 .../bookkeeper/test/NIOServerFactoryTest.java      |   60 -
 src/contrib/build-contrib.xml                      |   28 +-
 src/contrib/build.xml                              |   19 +-
 src/contrib/huebrowser/README                      |   62 +
 src/contrib/huebrowser/zkui/Makefile               |   21 +
 src/contrib/huebrowser/zkui/setup.py               |   46 +
 src/contrib/huebrowser/zkui/src/zkui/__init__.py   |   16 +
 src/contrib/huebrowser/zkui/src/zkui/forms.py      |   29 +
 src/contrib/huebrowser/zkui/src/zkui/models.py     |   17 +
 src/contrib/huebrowser/zkui/src/zkui/rest.py       |  230 ++
 src/contrib/huebrowser/zkui/src/zkui/settings.py   |   30 +
 .../zkui/src/zkui/static/art/line_icons.png        |  Bin 0 -> 7499 bytes
 .../huebrowser/zkui/src/zkui/static/art/zkui.png   |  Bin 0 -> 4430 bytes
 .../huebrowser/zkui/src/zkui/static/bootstrap.js   |   32 +
 .../huebrowser/zkui/src/zkui/static/css/zkui.css   |   56 +
 .../zkui/src/zkui/static/help/index.html}          |   32 +-
 .../zkui/src/zkui/static/js/Source/Zkui/Zkui.js    |   50 +
 .../zkui/src/zkui/static/js/package.yml}           |    9 +-
 src/contrib/huebrowser/zkui/src/zkui/stats.py      |  170 +
 .../zkui/src/zkui/templates/clients.mako           |   51 +
 .../huebrowser/zkui/src/zkui/templates/create.mako |   34 +
 .../huebrowser/zkui/src/zkui/templates/edit.mako   |   34 +
 .../huebrowser/zkui/src/zkui/templates/index.mako  |   54 +
 .../zkui/src/zkui/templates/shared_components.mako |   66 +
 .../huebrowser/zkui/src/zkui/templates/tree.mako   |   75 +
 .../huebrowser/zkui/src/zkui/templates/view.mako   |  128 +
 src/contrib/huebrowser/zkui/src/zkui/urls.py       |   28 +
 src/contrib/huebrowser/zkui/src/zkui/utils.py      |   33 +
 src/contrib/huebrowser/zkui/src/zkui/views.py      |  165 +
 .../huebrowser/zkui/src/zkui/windmilltests.py      |   23 +
 src/contrib/loggraph/README.txt                    |   69 +
 .../contrib/loggraph/bin/loggraph-dev.sh           |   40 +-
 .../zooInspector.cmd => loggraph/bin/loggraph.sh}  |   66 +-
 src/contrib/loggraph/build.xml                     |   70 +
 src/contrib/{bookkeeper => loggraph}/ivy.xml       |   12 +-
 .../apache/zookeeper/graph/FilterException.java}   |   15 +-
 .../java/org/apache/zookeeper/graph/FilterOp.java  |   75 +
 .../org/apache/zookeeper/graph/FilterParser.java   |  131 +
 .../org/apache/zookeeper/graph/JsonGenerator.java  |  223 ++
 .../org/apache/zookeeper/graph/Log4JEntry.java}    |   36 +-
 .../org/apache/zookeeper/graph/Log4JSource.java    |  381 +++
 .../java/org/apache/zookeeper/graph/LogEntry.java} |   36 +-
 .../org/apache/zookeeper/graph/LogIterator.java}   |   15 +-
 .../java/org/apache/zookeeper/graph/LogServer.java |   66 +
 .../org/apache/zookeeper/graph/LogSkipList.java    |   95 +
 .../org/apache/zookeeper/graph/LogSource.java}     |   21 +-
 .../apache/zookeeper/graph/MeasureThroughput.java  |  103 +
 .../apache/zookeeper/graph/MergedLogSource.java    |  219 ++
 .../zookeeper/graph/RandomAccessFileReader.java    |  328 ++
 .../apache/zookeeper/graph/TransactionEntry.java   |   59 +
 .../org/apache/zookeeper/graph/TxnLogSource.java   |  376 +++
 .../apache/zookeeper/graph/filterops/AndOp.java}   |   29 +-
 .../org/apache/zookeeper/graph/filterops/Arg.java} |   22 +-
 .../zookeeper/graph/filterops/EqualsOp.java}       |   32 +-
 .../zookeeper/graph/filterops/GreaterThanOp.java   |   70 +
 .../zookeeper/graph/filterops/LessThanOp.java      |   69 +
 .../apache/zookeeper/graph/filterops/NotOp.java}   |   27 +-
 .../zookeeper/graph/filterops/NumberArg.java}      |   15 +-
 .../apache/zookeeper/graph/filterops/OrOp.java}    |   27 +-
 .../zookeeper/graph/filterops/StringArg.java}      |   15 +-
 .../zookeeper/graph/filterops/SymbolArg.java}      |   16 +-
 .../apache/zookeeper/graph/filterops/XorOp.java}   |   38 +-
 .../zookeeper/graph/servlets/FileLoader.java       |   60 +
 .../org/apache/zookeeper/graph/servlets/Fs.java    |   69 +
 .../apache/zookeeper/graph/servlets/GraphData.java |   85 +
 .../zookeeper/graph/servlets/JsonServlet.java      |   85 +
 .../apache/zookeeper/graph/servlets/NumEvents.java |   87 +
 .../zookeeper/graph/servlets/StaticContent.java    |   50 +
 .../zookeeper/graph/servlets/Throughput.java       |  125 +
 .../org/apache/zookeeper/graph/log4j.properties    |   11 +
 .../zookeeper/graph/resources/date.format.js       |  126 +
 .../org/apache/zookeeper/graph/resources/g.bar.js  |  385 +++
 .../org/apache/zookeeper/graph/resources/g.dot.js  |  110 +
 .../org/apache/zookeeper/graph/resources/g.line.js |  230 ++
 .../org/apache/zookeeper/graph/resources/g.pie.js  |  205 ++
 .../apache/zookeeper/graph/resources/g.raphael.js  |  481 +++
 .../apache/zookeeper/graph/resources/load-big.gif  |  Bin 0 -> 1924 bytes
 .../org/apache/zookeeper/graph/resources/load.gif  |  Bin 0 -> 673 bytes
 .../apache/zookeeper/graph/resources/loggraph.css  |   54 +
 .../apache/zookeeper/graph/resources/loggraph.js   |  262 ++
 .../zookeeper/graph/resources/loggraph.log.js      |   57 +
 .../zookeeper/graph/resources/loggraph.server.js   |  329 ++
 .../zookeeper/graph/resources/loggraph.session.js  |  202 ++
 .../zookeeper/graph/resources/loggraph.stats.js    |   44 +
 .../zookeeper/graph/resources/loggraph.ui.js       |  377 +++
 .../org/apache/zookeeper/graph/resources/main.html |   60 +
 .../apache/zookeeper/graph/resources/raphael.js    | 3296 ++++++++++++++++++++
 .../apache/zookeeper/graph/resources/yui-min.js    |   12 +
 src/contrib/monitoring/JMX-RESOURCES               |   38 +
 src/contrib/monitoring/README                      |   84 +
 src/contrib/monitoring/cacti/README                |   56 +
 src/contrib/monitoring/check_zookeeper.py          |  358 +++
 src/contrib/monitoring/ganglia/README              |   48 +
 src/contrib/monitoring/ganglia/Screenshot.png      |  Bin 0 -> 111055 bytes
 src/contrib/monitoring/ganglia/modpython.conf      |   28 +
 src/contrib/monitoring/ganglia/zookeeper.pyconf    |   49 +
 .../monitoring/ganglia/zookeeper_ganglia.py        |  209 ++
 src/contrib/monitoring/nagios/README.txt           |   86 +
 src/contrib/monitoring/nagios/Screenshot-1.png     |  Bin 0 -> 196668 bytes
 src/contrib/monitoring/nagios/Screenshot.png       |  Bin 0 -> 163646 bytes
 src/contrib/monitoring/nagios/hostgroups.cfg       |   25 +
 src/contrib/monitoring/nagios/services.cfg         |   67 +
 src/contrib/monitoring/nagios/zookeeper.cfg        |   30 +
 src/contrib/monitoring/test.py                     |  282 ++
 src/contrib/rest/README.txt                        |   29 +-
 src/contrib/rest/SPEC.txt                          |   64 +-
 src/contrib/rest/build.xml                         |   34 +-
 src/contrib/rest/conf/keys/README                  |    8 +
 src/contrib/rest/conf/keys/rest.cer                |  Bin 0 -> 595 bytes
 src/contrib/rest/conf/keys/rest.jks                |  Bin 0 -> 1363 bytes
 src/contrib/rest/conf/rest.properties              |   70 +
 src/contrib/rest/ivy.xml                           |    5 +-
 src/contrib/rest/rest.sh                           |   90 +
 .../apache/zookeeper/server/jersey/RestMain.java   |  169 +-
 .../zookeeper/server/jersey/ZooKeeperService.java  |  288 +-
 .../zookeeper/server/jersey/cfg/Credentials.java}  |   85 +-
 .../zookeeper/server/jersey/cfg/Endpoint.java      |   72 +
 .../zookeeper/server/jersey/cfg/HostPort.java}     |   51 +-
 .../zookeeper/server/jersey/cfg/HostPortSet.java}  |   64 +-
 .../zookeeper/server/jersey/cfg/RestCfg.java       |  106 +
 .../server/jersey/filters/HTTPBasicAuth.java       |   87 +
 .../zookeeper/server/jersey/jaxb/ZSession.java}    |   43 +-
 .../server/jersey/resources/SessionsResource.java  |  135 +
 .../server/jersey/resources/ZNodeResource.java     |  195 +-
 src/contrib/rest/src/python/README.txt             |    3 +
 .../rest/src/python/demo_master_election.py        |   90 +
 src/contrib/rest/src/python/demo_queue.py          |   99 +
 src/contrib/rest/src/python/test.py                |  163 +
 src/contrib/rest/src/python/zkrest.py              |  218 ++
 .../org/apache/zookeeper/server/jersey/Base.java   |   83 +-
 .../apache/zookeeper/server/jersey/CreateTest.java |   11 +-
 .../apache/zookeeper/server/jersey/DeleteTest.java |    7 +-
 .../apache/zookeeper/server/jersey/ExistsTest.java |    7 +-
 .../zookeeper/server/jersey/GetChildrenTest.java   |   15 +-
 .../apache/zookeeper/server/jersey/GetTest.java    |    9 +-
 .../apache/zookeeper/server/jersey/RootTest.java   |   15 +-
 .../zookeeper/server/jersey/SessionTest.java       |  134 +
 .../apache/zookeeper/server/jersey/SetTest.java    |    7 +-
 .../apache/zookeeper/server/jersey/WadlTest.java   |    7 +-
 src/contrib/zkperl/Changes                         |    4 +
 src/contrib/zkperl/Makefile.PL                     |   15 +-
 src/contrib/zkperl/README                          |   20 +-
 src/contrib/zkperl/ZooKeeper.pm                    |    7 +-
 src/contrib/zkperl/ZooKeeper.xs                    |    6 +-
 src/contrib/zkperl/build/check_zk_version.c        |    8 +-
 src/contrib/zkpython/build.xml                     |  102 +-
 src/contrib/{bookkeeper => zkpython}/ivy.xml       |   15 +-
 src/contrib/zkpython/src/c/pyzk_docstrings.h       |    2 +-
 src/contrib/zkpython/src/c/zookeeper.c             |   31 +-
 src/contrib/zkpython/src/examples/README           |    8 +
 .../src/examples/watch_znode_for_changes.py        |  202 ++
 .../src/packages/deb/zkpython.control/control}     |   41 +-
 .../zkpython/src/packages/rpm/spec/zkpython.spec   |   81 +
 src/contrib/zkpython/src/python/setup.py           |    2 +
 src/contrib/zkpython/src/test/connection_test.py   |    9 +-
 src/contrib/zkpython/src/test/get_set_test.py      |    7 +
 src/contrib/zkpython/src/test/zktestbase.py        |    6 +
 src/contrib/zooinspector/README.txt                |   10 +-
 src/contrib/zooinspector/build.xml                 |    6 +-
 .../config/defaultConnectionSettings.cfg           |   25 +-
 .../zooinspector/config/defaultNodeVeiwers.cfg     |   14 +
 src/contrib/zooinspector/ivy.xml                   |    3 +
 .../org/apache/zookeeper/inspector/gui/about.html  |    4 +-
 .../zookeeper/inspector/logger/LoggerFactory.java  |    6 +-
 .../manager/ZooInspectorNodeTreeManager.java       |   86 +-
 .../manager/ZooInspectorReadOnlyManager.java       |  198 +-
 src/contrib/zooinspector/zooInspector-dev.sh       |    2 +-
 src/contrib/zooinspector/zooInspector.cmd          |    2 +-
 src/contrib/zooinspector/zooInspector.sh           |    2 +-
 .../content/xdocs/bookkeeperConfig.xml             |   13 +-
 .../content/xdocs/bookkeeperProgrammer.xml         |   72 +-
 .../content/xdocs/bookkeeperStarted.xml            |   16 +-
 .../src/documentation/content/xdocs/recipes.xml    |    6 +-
 .../documentation/content/xdocs/releasenotes.xml   | 2860 ++++++++++++++++-
 src/docs/src/documentation/content/xdocs/site.xml  |   20 +-
 src/docs/src/documentation/content/xdocs/tabs.xml  |    6 +-
 .../documentation/content/xdocs/zookeeperAdmin.xml |  199 +-
 .../content/xdocs/zookeeperInternals.xml           |   41 +-
 .../documentation/content/xdocs/zookeeperOver.xml  |    6 +-
 .../content/xdocs/zookeeperProgrammers.xml         |    4 +-
 .../content/xdocs/zookeeperStarted.xml             |    6 +-
 .../content/xdocs/zookeeperTutorial.xml            |    2 +-
 src/docs/src/documentation/skinconf.xml            |   10 +-
 .../java/lib/jdiff/zookeeper_3.4.4.xml             | 1749 ++++++++++-
 .../java/lib/jdiff/zookeeper_3.4.5.xml             | 1749 ++++++++++-
 .../org/apache/jute/compiler/CSharpGenerator.java  |   53 +
 .../main/org/apache/jute/compiler/JBoolean.java    |   10 +-
 .../main/org/apache/jute/compiler/JBuffer.java     |    4 +-
 src/java/main/org/apache/jute/compiler/JByte.java  |    2 +-
 .../main/org/apache/jute/compiler/JCompType.java   |   17 +-
 .../main/org/apache/jute/compiler/JDouble.java     |    2 +-
 src/java/main/org/apache/jute/compiler/JField.java |   42 +
 src/java/main/org/apache/jute/compiler/JFile.java  |    4 +
 src/java/main/org/apache/jute/compiler/JFloat.java |    2 +-
 src/java/main/org/apache/jute/compiler/JInt.java   |    2 +-
 src/java/main/org/apache/jute/compiler/JLong.java  |    2 +-
 src/java/main/org/apache/jute/compiler/JMap.java   |   52 +-
 .../main/org/apache/jute/compiler/JRecord.java     |  265 +-
 .../main/org/apache/jute/compiler/JString.java     |    2 +-
 src/java/main/org/apache/jute/compiler/JType.java  |   69 +-
 .../main/org/apache/jute/compiler/JVector.java     |   51 +-
 .../main/org/apache/jute/compiler/generated/rcc.jj |   32 +-
 src/java/main/org/apache/zookeeper/ClientCnxn.java | 1020 +++---
 .../org/apache/zookeeper/ClientCnxnSocket.java     |  174 ++
 .../org/apache/zookeeper/ClientCnxnSocketNIO.java  |  420 +++
 .../org/apache/zookeeper/ClientWatchManager.java   |    5 +-
 src/java/main/org/apache/zookeeper/CreateMode.java |    5 +-
 .../main/org/apache/zookeeper/Environment.java     |    5 +-
 .../main/org/apache/zookeeper/KeeperException.java |   42 +-
 src/java/main/org/apache/zookeeper/Login.java      |  402 +++
 .../main/org/apache/zookeeper/MultiResponse.java   |  166 +
 .../apache/zookeeper/MultiTransactionRecord.java   |  160 +
 src/java/main/org/apache/zookeeper/Op.java         |  332 ++
 src/java/main/org/apache/zookeeper/OpResult.java   |  185 ++
 .../org/apache/zookeeper/ServerAdminClient.java    |    5 +-
 src/java/main/org/apache/zookeeper/Shell.java      |  475 +++
 .../main/org/apache/zookeeper/Transaction.java     |   63 +
 src/java/main/org/apache/zookeeper/Watcher.java    |   25 +-
 src/java/main/org/apache/zookeeper/ZKUtil.java     |  124 +
 src/java/main/org/apache/zookeeper/ZooDefs.java    |    6 +
 src/java/main/org/apache/zookeeper/ZooKeeper.java  |  434 ++-
 .../main/org/apache/zookeeper/ZooKeeperMain.java   |   43 +-
 .../zookeeper/client/ConnectStringParser.java      |   87 +
 .../org/apache/zookeeper/client/HostProvider.java  |   61 +
 .../zookeeper/client/StaticHostProvider.java       |  101 +
 .../zookeeper/client/ZooKeeperSaslClient.java      |  526 ++++
 .../zookeeper/common/AtomicFileOutputStream.java   |  115 +
 .../main/org/apache/zookeeper/common/IOUtils.java  |  123 +
 .../main/org/apache/zookeeper/common/PathTrie.java |    7 +-
 .../org/apache/zookeeper/jmx/MBeanRegistry.java    |   39 +-
 .../main/org/apache/zookeeper/jmx/ManagedUtil.java |    3 +-
 .../zookeeper/server/ByteBufferInputStream.java    |   10 +
 ...nputStream.java => ByteBufferOutputStream.java} |   56 +-
 .../apache/zookeeper/server/ConnectionBean.java    |   18 +-
 .../main/org/apache/zookeeper/server/DataNode.java |   13 +-
 .../main/org/apache/zookeeper/server/DataTree.java |  206 +-
 .../org/apache/zookeeper/server/DataTreeBean.java  |   11 +-
 .../zookeeper/server/DatadirCleanupManager.java    |  192 ++
 .../zookeeper/server/FinalRequestProcessor.java    |   89 +-
 .../org/apache/zookeeper/server/LogFormatter.java  |   11 +-
 .../org/apache/zookeeper/server/NIOServerCnxn.java | 1103 ++-----
 .../zookeeper/server/NIOServerCnxnFactory.java     |  309 ++
 .../apache/zookeeper/server/NettyServerCnxn.java   |  852 +++++
 .../zookeeper/server/NettyServerCnxnFactory.java   |  399 +++
 .../zookeeper/server/PrepRequestProcessor.java     |  354 ++-
 .../org/apache/zookeeper/server/PurgeTxnLog.java   |    5 +-
 .../main/org/apache/zookeeper/server/Request.java  |   15 +-
 .../apache/zookeeper/server/RequestProcessor.java  |    2 +-
 .../org/apache/zookeeper/server/ServerCnxn.java    |  458 ++-
 .../apache/zookeeper/server/ServerCnxnFactory.java |  209 ++
 .../org/apache/zookeeper/server/ServerStats.java   |    9 +-
 .../zookeeper/server/SessionTrackerImpl.java       |   20 +-
 .../apache/zookeeper/server/SnapshotFormatter.java |  124 +
 .../main/org/apache/zookeeper/server/Stats.java    |   68 +
 .../zookeeper/server/SyncRequestProcessor.java     |   15 +-
 .../apache/zookeeper/server/TraceFormatter.java    |    2 +
 .../org/apache/zookeeper/server/WatchManager.java  |   13 +-
 .../org/apache/zookeeper/server/ZKDatabase.java    |   22 +-
 .../zookeeper/server/ZooKeeperSaslServer.java      |  134 +
 .../apache/zookeeper/server/ZooKeeperServer.java   |  327 +-
 .../zookeeper/server/ZooKeeperServerBean.java      |   10 +-
 .../zookeeper/server/ZooKeeperServerMXBean.java    |    4 +
 .../zookeeper/server/ZooKeeperServerMain.java      |   16 +-
 .../main/org/apache/zookeeper/server/ZooTrace.java |    5 +-
 .../server/auth/DigestAuthenticationProvider.java  |    9 +-
 .../zookeeper/server/auth/DigestLoginModule.java   |   61 +
 .../server/auth/IPAuthenticationProvider.java      |    6 +-
 .../apache/zookeeper/server/auth/KerberosName.java |  418 +++
 .../zookeeper/server/auth/ProviderRegistry.java    |    5 +-
 .../server/auth/SASLAuthenticationProvider.java    |   70 +
 .../server/auth/SaslServerCallbackHandler.java     |  152 +
 .../main/org/apache/zookeeper/server/package.html  |   12 +-
 .../zookeeper/server/persistence/FileSnap.java     |    7 +-
 .../zookeeper/server/persistence/FileTxnLog.java   |   19 +-
 .../server/persistence/FileTxnSnapLog.java         |  103 +-
 .../zookeeper/server/persistence/SnapShot.java     |    2 +-
 .../apache/zookeeper/server/persistence/Util.java  |    5 +-
 .../server/quorum/AckRequestProcessor.java         |    5 +-
 .../server/quorum/AuthFastLeaderElection.java      |  204 +-
 .../zookeeper/server/quorum/CommitProcessor.java   |    7 +-
 .../apache/zookeeper/server/quorum/Election.java   |    2 +-
 .../server/quorum/FastLeaderElection.java          |  353 ++-
 .../apache/zookeeper/server/quorum/Follower.java   |   37 +-
 .../server/quorum/FollowerRequestProcessor.java    |    7 +-
 .../server/quorum/FollowerZooKeeperServer.java     |   10 +-
 .../org/apache/zookeeper/server/quorum/Leader.java |  318 +-
 .../apache/zookeeper/server/quorum/LeaderBean.java |    2 +-
 .../zookeeper/server/quorum/LeaderElection.java    |   83 +-
 .../server/quorum/LeaderZooKeeperServer.java       |    2 +-
 .../apache/zookeeper/server/quorum/Learner.java    |  152 +-
 .../zookeeper/server/quorum/LearnerHandler.java    |  163 +-
 .../server/quorum/LearnerZooKeeperServer.java      |    2 +-
 .../zookeeper/server/quorum/LocalPeerBean.java     |    8 +-
 .../apache/zookeeper/server/quorum/Observer.java   |   11 +-
 .../server/quorum/ObserverRequestProcessor.java    |    7 +-
 .../server/quorum/ObserverZooKeeperServer.java     |    5 +-
 .../server/quorum/ProposalRequestProcessor.java    |    6 +
 .../zookeeper/server/quorum/QuorumCnxManager.java  |  603 ++--
 .../apache/zookeeper/server/quorum/QuorumPeer.java |  289 +-
 .../zookeeper/server/quorum/QuorumPeerConfig.java  |   50 +-
 .../zookeeper/server/quorum/QuorumPeerMain.java    |   26 +-
 .../server/quorum/QuorumZooKeeperServer.java       |    2 -
 .../quorum/{Election.java => ReadOnlyBean.java}    |   21 +-
 .../server/quorum/ReadOnlyRequestProcessor.java    |  128 +
 ...perServer.java => ReadOnlyZooKeeperServer.java} |  131 +-
 .../server/quorum/SendAckRequestProcessor.java     |    5 +-
 .../zookeeper/server/quorum/StateSummary.java      |   57 +
 .../org/apache/zookeeper/server/quorum/Vote.java   |   59 +-
 .../server/quorum/flexible/QuorumHierarchical.java |    7 +-
 .../server/quorum/flexible/QuorumMaj.java          |    2 +-
 .../server/quorum/flexible/QuorumVerifier.java     |    2 +-
 .../zookeeper/server/upgrade/DataTreeV1.java       |    5 +-
 .../zookeeper/server/upgrade/UpgradeMain.java      |    7 +-
 .../zookeeper/server/upgrade/UpgradeSnapShot.java  |    2 +-
 .../server/upgrade/UpgradeSnapShotV1.java          |   11 +-
 .../apache/zookeeper/server/util/KerberosUtil.java |   45 +
 .../org/apache/zookeeper/server/util/Profiler.java |    5 +-
 .../zookeeper/server/util/SerializeUtils.java      |   42 +-
 .../server/util/ZxidUtils.java}                    |   33 +-
 .../apache/zookeeper/test/system/BaseSysTest.java  |    2 +
 .../apache/zookeeper/test/system/GenerateLoad.java |    5 +-
 .../zookeeper/test/system/InstanceContainer.java   |    7 +-
 .../zookeeper/test/system/InstanceManager.java     |    5 +-
 .../zookeeper/test/system/QuorumPeerInstance.java  |    5 +-
 .../zookeeper/test/system/SimpleSysTest.java       |    5 +-
 .../test/bin/test-patch.properties}                |    6 +-
 src/java/test/bin/test-patch.sh                    |  277 +-
 src/java/test/config/findbugsExcludeFile.xml       |   25 +-
 .../org/apache/zookeeper/ClientReconnectTest.java  |   78 +
 .../org/apache/zookeeper/JUnit4ZKTestRunner.java   |   65 +
 .../org/apache/zookeeper/JaasConfiguration.java    |   75 +
 .../org/apache/zookeeper/MultiResponseTest.java    |   72 +
 .../zookeeper/MultiTransactionRecordTest.java      |   68 +
 .../test/org/apache/zookeeper/PortAssignment.java  |    5 +-
 .../org/apache/zookeeper/TestableZooKeeper.java    |    7 +-
 src/java/test/org/apache/zookeeper/VerGenTest.java |    2 +-
 src/java/test/org/apache/zookeeper/ZKTestCase.java |   70 +
 .../test/org/apache/zookeeper/ZooKeeperTest.java   |  181 ++
 .../test/org/apache/zookeeper/server/CRCTest.java  |   32 +-
 .../apache/zookeeper/server/DataTreeUnitTest.java  |   17 +-
 .../server/DatadirCleanupManagerTest.java          |   91 +
 .../zookeeper/server/DeserializationPerfTest.java  |   15 +-
 .../zookeeper/server/InvalidSnapshotTest.java      |   14 +-
 .../zookeeper/server/PrepRequestProcessorTest.java |  126 +
 .../zookeeper/server/SerializationPerfTest.java    |   18 +-
 .../server/ServerCnxnFactoryAccessor.java}         |   15 +-
 .../zookeeper/server/SessionTrackerTest.java       |  156 +
 .../org/apache/zookeeper/server/ToStringTest.java  |    8 +-
 .../zookeeper/server/TruncateCorruptionTest.java   |  323 ++
 .../zookeeper/server/ZooKeeperServerMainTest.java  |   18 +-
 .../zookeeper/server/ZooKeeperServerTest.java      |   39 +-
 .../apache/zookeeper/server/ZxidRolloverTest.java  |  114 +-
 .../zookeeper/server/quorum/LearnerTest.java       |  132 +
 .../server/quorum/QuorumPeerMainTest.java          |  578 ++--
 .../server/quorum/QuorumPeerTestBase.java          |   49 +-
 .../server/quorum/SnapshotSessionTest.java         |  108 -
 .../apache/zookeeper/server/quorum/Zab1_0Test.java | 1004 ++++++
 .../zookeeper/server/util/PortForwarder.java       |  205 ++
 .../org/apache/zookeeper/test/ACLCountTest.java    |  136 +
 .../org/apache/zookeeper/test/ACLRootTest.java     |   38 +-
 .../test/org/apache/zookeeper/test/ACLTest.java    |  179 +-
 .../org/apache/zookeeper/test/AsyncHammerTest.java |   25 +-
 .../test/org/apache/zookeeper/test/AsyncOps.java   |   28 +-
 .../org/apache/zookeeper/test/AsyncOpsTest.java    |   21 +-
 .../test/org/apache/zookeeper/test/AsyncTest.java  |   37 +-
 .../zookeeper/test/AtomicFileOutputStreamTest.java |  200 ++
 .../test/org/apache/zookeeper/test/AuthTest.java   |   67 +-
 .../org/apache/zookeeper/test/ChrootAsyncTest.java |   13 +-
 .../apache/zookeeper/test/ChrootClientTest.java    |   13 +-
 .../test/org/apache/zookeeper/test/ChrootTest.java |   39 +-
 .../test/org/apache/zookeeper/test/ClientBase.java |  223 +-
 .../apache/zookeeper/test/ClientHammerTest.java    |   27 +-
 .../apache/zookeeper/test/ClientPortBindTest.java  |   36 +-
 .../org/apache/zookeeper/test/ClientRetry.java     |   28 +-
 .../test/org/apache/zookeeper/test/ClientTest.java |  206 +-
 .../org/apache/zookeeper/test/CnxManagerTest.java  |  128 +-
 .../zookeeper/test/ConnectStringParserTest.java    |   68 +
 .../org/apache/zookeeper/test/CreateModeTest.java  |   40 +-
 .../org/apache/zookeeper/test/DataTreeTest.java    |   58 +-
 .../zookeeper/test/DisconnectableZooKeeper.java    |   14 +-
 .../zookeeper/test/DisconnectedWatcherTest.java    |    5 +-
 .../org/apache/zookeeper/test/EventTypeTest.java   |   10 +-
 .../test/FLEBackwardElectionRoundTest.java         |  154 +
 .../apache/zookeeper/test/FLELostMessageTest.java  |  133 +-
 .../org/apache/zookeeper/test/FLENewEpochTest.java |   32 +-
 .../apache/zookeeper/test/FLEPredicateTest.java    |  105 +
 .../org/apache/zookeeper/test/FLERestartTest.java  |   30 +-
 .../test/org/apache/zookeeper/test/FLETest.java    |  146 +-
 .../org/apache/zookeeper/test/FLETestUtils.java    |   98 +
 .../apache/zookeeper/test/FLEZeroWeightTest.java   |   35 +-
 .../test/FollowerResyncConcurrencyTest.java        |  126 +-
 .../zookeeper/test/FourLetterWordsQuorumTest.java  |   13 +-
 .../apache/zookeeper/test/FourLetterWordsTest.java |   88 +-
 .../apache/zookeeper/test/GetChildren2Test.java    |   82 +-
 .../zookeeper/test/HierarchicalQuorumTest.java     |   40 +-
 .../org/apache/zookeeper/test/IntegrityCheck.java  |    5 +-
 .../apache/zookeeper/test/InvalidSnapshotTest.java |   47 +-
 .../test/org/apache/zookeeper/test/JMXEnv.java     |   23 +-
 .../org/apache/zookeeper/test/KeeperStateTest.java |   14 +-
 .../apache/zookeeper/test/LENonTerminateTest.java  |   69 +-
 .../test/org/apache/zookeeper/test/LETest.java     |   30 +-
 .../org/apache/zookeeper/test/LoadFromLogTest.java |  583 +++-
 .../org/apache/zookeeper/test/MaxCnxnsTest.java    |   50 +-
 .../zookeeper/test/MultiTransactionTest.java       |  491 +++
 ...uorumHammerTest.java => NioNettySuiteBase.java} |   37 +-
 .../zookeeper/test/NioNettySuiteHammerTest.java}   |   21 +-
 .../apache/zookeeper/test/NioNettySuiteTest.java}  |   33 +-
 .../org/apache/zookeeper/test/NullDataTest.java    |   11 +-
 .../test/org/apache/zookeeper/test/OOMTest.java    |   21 +-
 .../test/ObserverHierarchicalQuorumTest.java       |   12 +-
 .../org/apache/zookeeper/test/ObserverLETest.java  |   76 +
 .../zookeeper/test/ObserverQuorumHammerTest.java   |    7 +-
 .../org/apache/zookeeper/test/ObserverTest.java    |   51 +-
 .../org/apache/zookeeper/test/PurgeTxnTest.java    |   26 +-
 .../test/org/apache/zookeeper/test/QuorumBase.java |   75 +-
 .../apache/zookeeper/test/QuorumHammerTest.java    |   17 +-
 .../org/apache/zookeeper/test/QuorumQuotaTest.java |   34 +-
 .../test/org/apache/zookeeper/test/QuorumTest.java |  173 +-
 .../test/org/apache/zookeeper/test/QuorumUtil.java |    5 +-
 .../apache/zookeeper/test/QuorumZxidSyncTest.java  |   38 +-
 .../apache/zookeeper/test/ReadOnlyModeTest.java    |  241 ++
 .../org/apache/zookeeper/test/RecoveryTest.java    |   62 +-
 .../apache/zookeeper/test/RepeatStartupTest.java   |   23 +-
 ...geTxnTest.java => RestoreCommittedLogTest.java} |   50 +-
 .../test/SaslAuthDesignatedClientTest.java         |  104 +
 .../test/SaslAuthDesignatedServerTest.java         |  104 +
 .../test/SaslAuthFailDesignatedClientTest.java     |   99 +
 .../apache/zookeeper/test/SaslAuthFailTest.java    |  113 +
 .../test/SaslAuthMissingClientConfigTest.java      |   97 +
 .../org/apache/zookeeper/test/SaslAuthTest.java    |  146 +
 .../zookeeper/test/SessionInvalidationTest.java    |    6 +-
 .../org/apache/zookeeper/test/SessionTest.java     |  144 +-
 .../org/apache/zookeeper/test/StandaloneTest.java  |    5 +-
 .../test/org/apache/zookeeper/test/StatTest.java   |  160 +-
 .../zookeeper/test/StaticHostProviderTest.java     |   98 +
 .../org/apache/zookeeper/test/SyncCallTest.java    |    8 +-
 .../org/apache/zookeeper/test/TruncateTest.java    |  105 +-
 .../org/apache/zookeeper/test/UpgradeTest.java     |   38 +-
 .../apache/zookeeper/test/WatchedEventTest.java    |   26 +-
 .../org/apache/zookeeper/test/WatcherFuncTest.java |  210 +-
 .../org/apache/zookeeper/test/WatcherTest.java     |  100 +-
 .../zookeeper/test/ZkDatabaseCorruptionTest.java   |   47 +-
 .../apache/zookeeper/test/ZooKeeperQuotaTest.java  |   44 +-
 .../apache/zookeeper/test/ZooKeeperTestClient.java |   78 +-
 src/packages/deb/init.d/zookeeper                  |  140 +
 .../deb/zookeeper.control/conffile}                |    5 +-
 .../deb/zookeeper.control/control}                 |   41 +-
 .../deb/zookeeper.control/postinst}                |   41 +-
 .../deb/zookeeper.control/postrm}                  |    3 +-
 .../deb/zookeeper.control/preinst}                 |   38 +-
 .../deb/zookeeper.control/prerm}                   |   42 +-
 src/packages/rpm/init.d/zookeeper                  |   84 +
 src/packages/rpm/spec/zookeeper.spec               |  166 +
 .../templates/conf/zookeeper-env.sh}               |    6 +-
 src/packages/update-zookeeper-env.sh               |  163 +
 src/recipes/build-recipes.xml                      |   19 +-
 src/recipes/build.xml                              |   17 +
 .../ivy.xml => recipes/election/README.txt}        |   27 +-
 .../bookkeeper => recipes/election}/build.xml      |   58 +-
 .../recipes/leader/LeaderElectionAware.java}       |   39 +-
 .../recipes/leader/LeaderElectionSupport.java      |  461 +++
 .../zookeeper/recipes/leader/LeaderOffer.java      |   84 +
 .../recipes/leader/LeaderElectionSupportTest.java  |  249 ++
 src/recipes/lock/build.xml                         |   10 +-
 .../zookeeper/recipes/lock/LockListener.java       |    2 +-
 .../zookeeper/recipes/lock/ProtocolSupport.java    |    5 +-
 .../apache/zookeeper/recipes/lock/WriteLock.java   |    5 +-
 .../apache/zookeeper/recipes/lock/ZNodeName.java   |    5 +-
 .../zookeeper/recipes/lock/WriteLockTest.java      |   17 +-
 .../zookeeper/recipes/lock/ZNodeNameTest.java      |    4 +
 src/recipes/queue/build.xml                        |   10 +-
 .../zookeeper/recipes/queue/DistributedQueue.java  |    5 +-
 .../recipes/queue/DistributedQueueTest.java        |   45 +-
 src/zookeeper.jute                                 |   52 +-
 zookeeper-3.3.5.jar.asc                            |    7 -
 zookeeper-3.3.5.jar.md5                            |    1 -
 zookeeper-3.3.5.jar.sha1                           |    1 -
 zookeeper-3.4.5.jar.asc                            |   17 +
 zookeeper-3.4.5.jar.md5                            |    1 +
 zookeeper-3.4.5.jar.sha1                           |    1 +
 619 files changed, 52764 insertions(+), 20224 deletions(-)

diff --cc debian/README.source
index 6a0fd40,0000000..48b77fc
mode 100644,000000..100644
--- a/debian/README.source
+++ b/debian/README.source
@@@ -1,30 -1,0 +1,5 @@@
- Upstream tarball
- ----------------
- 
- The command used to filter and import the upstream tarball was:
- 
- VERSION=3.3.4
- git-import-orig --pristine-tar --filter-pristine-tar --no-merge --upstream-version=$VERSION+dfsg1 \
-                 --filter="*.jar" \
-                 --filter="Makefile.in" \
-                 --filter="aclocal.m4" \
-                 --filter="autom4te.cache" \
-                 --filter="compile" \
-                 --filter="config.guess" \
-                 --filter="config.sub" \
-                 --filter="configure" \
-                 --filter="ltmain.sh" \
-                 --filter="zookeeper-$VERSION/contrib" \
-                 --filter="zookeeper-$VERSION/docs" \
-                 --filter="zookeeper-$VERSION/recipes" \
-                 --filter="zookeeper-$VERSION/dist-maven" \
-                 --filter="zookeeper-$VERSION/src/contrib/fatjar" \
-                 --filter="zookeeper-$VERSION/src/c/generated" \
-                 --filter="zookeeper-$VERSION/src/java/main/org/apache/jute/compiler/generated/*.java" \
-                 --filter="zookeeper-$VERSION/src/java/generated" <tarball>
- 
 +RESTful support
 +---------------
 +
 +The contrib rest could not be compiled since Debian misses the dependency
 +https://grizzly.dev.java.net/
diff --cc debian/ant.properties
index cf69e84,0000000..bf4f5aa
mode 100644,000000..100644
--- a/debian/ant.properties
+++ b/debian/ant.properties
@@@ -1,6 -1,0 +1,9 @@@
- contrib.dir=debian
- version=3.3.4
- jar.name=zookeeper.jar
- final.name=zookeeper
- user.name=Debian
- lib.cppunit=/usr/lib
++# Ensure that source and target are 1.5
++# For backwards compat on Java 7
++ant.build.javac.source=1.5
++ant.build.javac.target=1.5
++target.jdk=1.5
++lastRevision=-1
++ivy.jar.exists=true
++ivy.initialized=true
++dest.dir=../../build/zookeeper
diff --cc debian/changelog
index 1b69641,0000000..a014cf8
mode 100644,000000..100644
--- a/debian/changelog
+++ b/debian/changelog
@@@ -1,200 -1,0 +1,288 @@@
- zookeeper (3.3.5+dfsg1-2+deb7u2) wheezy-security; urgency=high
++zookeeper (3.4.5+dfsg-2+deb7u1) wheezy-security; urgency=high
 +
 +  * Non-maintainer upload by the LTS team.
-   * Disable the test suite to prevent a build failure with Debian's
-     autobuilder that is unrelated to the latest security upload.
++  * Fix CVE-2017-5637 by backporting version 3.4.5 from Jessie. The 3.3 branch
++    is no longer supported upstream.
++    It was discovered that Zookeeper, a service for maintaining
++    configuration information, didn't restrict access to the computationally
++    expensive wchp/wchc commands which could result in denial of service by
++    elevated CPU consumption.
++    This update disables those two commands by default. The new
++    configuration option "4lw.commands.whitelist" can be used to whitelist
++    commands selectively (and the full set of commands can be restored
++    with '*')
 +
-  -- Markus Koschany <apo at debian.org>  Mon, 19 Sep 2016 00:03:00 +0200
++ -- Markus Koschany <apo at debian.org>  Thu, 15 Jun 2017 20:42:37 +0200
 +
- zookeeper (3.3.5+dfsg1-2+deb7u1) wheezy-security; urgency=high
++zookeeper (3.4.5+dfsg-2+deb8u2) jessie-security; urgency=medium
 +
-   * Non-maintainer upload by the LTS team.
++  * CVE-2017-5637
++
++ -- Moritz Mühlenhoff <jmm at debian.org>  Wed, 31 May 2017 11:28:54 +0200
++
++zookeeper (3.4.5+dfsg-2+deb8u1) jessie; urgency=high
++
++  * Team upload.
 +  * Fix CVE-2016-5017:
 +    Lyon Yang discovered that the C client shells cli_st and cli_mt of Apache
 +    Zookeeper, a high-performance coordination service for distributed
 +    applications, were affected by a buffer overflow vulnerability associated
 +    with parsing of the input command when using the "cmd:" batch mode syntax.
 +    If the command string exceeds 1024 characters a buffer overflow will occur.
 +
-  -- Markus Koschany <apo at debian.org>  Sun, 18 Sep 2016 20:14:02 +0200
++ -- Markus Koschany <apo at debian.org>  Sat, 01 Oct 2016 20:02:51 +0200
++
++zookeeper (3.4.5+dfsg-2) unstable; urgency=high
++
++  [ tony mancill ]
++  * Team upload.
++  * Add slf4j jars to CLASSPATH in zooinspector. (Closes: #712778)
++
++  [ Tim Retout ]
++  * debian/watch: Add pgp signature mangling, and use main mirror.
++  * debian/upstream/signing-key.asc: Add upstream signing keys.
++  * debian/*.preinst: Transition /usr/share/doc symlinks to real
++    directories. (Closes: #720148)
++  * Urgency set to high for RC bugfix.
++
++ -- Tim Retout <diocles at debian.org>  Sun, 16 Mar 2014 20:07:23 +0000
++
++zookeeper (3.4.5+dfsg-1) unstable; urgency=low
++
++  * Upload to unstable.
++  * d/p/fixes/ZOOKEEPER-740: Cherry picked fix from upstream bugtracker to
++    resolve issue with slow running add_auth calls with multi-threaded
++    client.
++  * d/rules: Disable mt client tests due to test library incompatibility
++    with libc 2.17.
++  * d/rules: Drop override_dh_installdocs, no longer required.
++  * d/control: Tweak depends for libzookeeper-java{-doc} to be Java policy
++    compliant.
++
++ -- James Page <james.page at ubuntu.com>  Mon, 06 May 2013 18:27:16 -0700
++
++zookeeper (3.4.5+dfsg-1~exp2) experimental; urgency=low
++
++  * d/conf_example/environment: Add missing jars to zookeeper CLASSPATH
++    for 3.4.5 release.
++  * d/control: Update VCS fields to be canonical.
++
++ -- James Page <james.page at ubuntu.com>  Thu, 28 Feb 2013 09:26:11 +0000
++
++zookeeper (3.4.5+dfsg-1~exp1) experimental; urgency=low
++
++  * New upstream release (Closes: #699120, LP: #1107400, #954160):
++    - d/p/ZOOKEEPER-{1374,1033}: Dropped, included upstream.
++    - Refreshed remaining patches.
++    - Drop bookkeeper support, now a separate project.
++    - d/control: Added new BD's on netty, slf4j and mockito.
++    - d/zookeeper.{install,cron.daily}: Drop scheduled transaction
++      log purging as now handled internally.
++  * d/control: Bumped Standards-Version, no changes.
++  * d/control: Dropped obsolete DM-Upload-Allowed.
++  * Sync Ubuntu changes:
++    - d/rules: Only execute native test suite on i386 and amd64
++      architectures; its a bit racey and does not execute reliably
++      on others.
++  * d/rules,zookeeperd.upstart: Rejig now that debhelper in Debian and
++    Ubuntu does the right things with init and upstart configs.
++  * d/rules: Disable native tests on Ubuntu due to incompatibility in
++    test framework with glibc 2.17.
++
++ -- James Page <james.page at ubuntu.com>  Thu, 07 Feb 2013 10:48:31 +0000
++
++zookeeper (3.3.6+dfsg-1) experimental; urgency=low
++
++  * Re-sync with Ubuntu.
++  * New upstream release:
++    - Dropped patches for ZOOKEEPER-1403 and ZOOKEEPER-1431; included upstream.
++    - Refreshed all other patches.
++  * d/{watch,orig-tar.sh,README.source}: Repack upstream tarball using uscan
++    to ease new upstream releases.
++  * d/control: Version debhelper (>= 9~).
++  * d/rules: Refactor contrib builds to use properties file.
++  * d/ant.properties: Collate properties for contrib builds ensuring that
++    bytecode built is backwards compatible.
++
++ -- James Page <james.page at ubuntu.com>  Wed, 19 Sep 2012 10:08:46 +0100
 +
 +zookeeper (3.3.5+dfsg1-2) unstable; urgency=low
 +
 +  * d/patches/fixes/ZOOKEEPER-1431: Fix up memory leak in zookeeper
 +    python binding which results in significant memory growth for large
 +    result sets (Closes: #665962). Thanks to Johan Rydberg for identifying 
 +    this bug and Kapil Thangavelu for the patch.
 +
 + -- James Page <james.page at ubuntu.com>  Mon, 28 May 2012 11:51:03 +0100
 +
 +zookeeper (3.3.5+dfsg1-1.1) unstable; urgency=low
 +
 +  * Non maintainer upload.
 +  * Fix build failure with GCC 4.7.
 +
 + -- Matthias Klose <doko at debian.org>  Thu, 10 May 2012 18:00:25 +0200
 +
 +zookeeper (3.3.5+dfsg1-1) unstable; urgency=low
 +
 +  * New upstream bugfix release.
 +    - d/fix-broken-c-client-unittest.patch: Dropped - accepted upstream.
 +    - Refreshed all other patches.
 +  * Bumped Standards-Version: 3.9.3.
 +  * Fix issue with quoting of parameters in zkCli.sh (Closes: #661837):
 +    - d/patches/fixes/ZOOKEEPER-1403: Ensure parameters are correctly
 +      quoted - thanks to John Eikenberry for this fix.
 +
 + -- James Page <james.page at ubuntu.com>  Wed, 21 Mar 2012 21:20:30 +0000
 +
 +zookeeper (3.3.4+dfsg1-3) unstable; urgency=low
 +
 +  * Sync changes from Ubuntu:
 +    - Switch zookeeperd upstart configuration to use start-stop-daemon.
 +      Thanks to Clint Byrum for this fix.
 +    - Enable C and Java test suites:
 +      - d/patches/fixes/ZOOKEEPER-1374: Use __sync_* primitives
 +        instead of ASM code when available to improve portability across 
 +        supported platforms.
 +      - d/patches/fix-broken-c-client-test.patch: Fixes the unit test so
 +        it will pass with EINVAL which is the correct error. Thanks to
 +        Clint Byrum for this fix.
 +      - d/rules: Enable C client test suite for all architectures.
 +      - d/rules: Only run core Java test suite when building 
 +        Architecture: all packages.
 +
 + -- James Page <james.page at ubuntu.com>  Mon, 30 Jan 2012 13:21:21 +0000
 +
 +zookeeper (3.3.4+dfsg1-2) unstable; urgency=low
 +
 +  * Added new libzookeeper-st{2,-dev} packages (Closes: #650938) and 
 +    renamed libzookeeper{2,-dev} -> libzookeeper-mt{2,-dev}.
 +  * Added transitional package libzookeeper2 -> libzookeeper-mt2.
 +  * Convert libzookeeper-{st,mt}2 for MultiArch support.
 +  * Disable detection of cygwin as not relevant for Debian based
 +    installs and complicates configuration (Closes: #650882). Thanks
 +    to Akira Kitada for this patch.
 +  * Really close RFH (Closes: #579791).
 +
 + -- James Page <james.page at ubuntu.com>  Mon, 12 Dec 2011 13:31:47 +0000
 +
 +zookeeper (3.3.4+dfsg1-1) unstable; urgency=low
 +
 +  [ James Page ]
 +  * New upstream release:
 +    - d/patches/fixes/ZOOKEEPER-1117: Dropped - fix included upstream.
 +    - Refreshed patches.
 +  * Added support for upstart under Ubuntu (LP: #862762):
 +    - d/rules,d/zookeeperd.upstart.in: Detect Ubuntu and swap in provided 
 +      upstart configuration if required.
 +    - d/ubuntu|debian_control_vars,d/control,d/rules: Provide different Depends 
 +      for zookeeperd package when building under Ubuntu/Debian.
 +  * Enabled C and Java test suites:
 +    - d/control,d/compat: Bumped debhelper compat level to 8 to allow 
 +      arch/indep overrides.
 +    - d/rules: Enable test suites for -arch and -indep builds.
 +    - d/patches/debian/patch-build-system: Patch unit testing to exclude 
 +      InvalidSnapshot and Upgrade tests (non-free data) and to pickup 
 +      junit4 from system library.
 +    - d/rules: Disable test suite execution for the time being as does 
 +      not run reliably.
 +  * Close RFH for this package (LP: #579791).
 +
 +  [ Damien Raude-Morvan ]
 +  * Add DMUA flag for James Page.
 +  * Build-Depends on procps for test suite.
 +
 + -- James Page <james.page at ubuntu.com>  Thu, 01 Dec 2011 15:03:53 +0000
 +
 +zookeeper (3.3.3+dfsg2-2) unstable; urgency=low
 +
 +  * Updated patch for ZOOKEEPER-1117 with fixes accepted into
 +    zookeeper 3.4.0 upstream; should also resolve FTBFS on ia64.
 +  * Close RFH from original maintainer (Closes: #602694).
 +  * debian/zookeeper.cron.daily: handle return code of 1 so daily cron job
 +    does not produce error emails when the package is removed but not
 +    purged (Closes: #582757). Thanks to Clint Byrum for this fix.
 +
 + -- James Page <james.page at ubuntu.com>  Wed, 31 Aug 2011 08:51:04 +0100
 +
 +zookeeper (3.3.3+dfsg2-1) unstable; urgency=low
 +
 +  * Re-enable python 2.7 modules (Closes: #633690):
 +    - debian/control: X-Python-Version: >= 2.6
 +  * debian/copyright: added EPL-1.0 for src/contrib/zooinspector/icons/*.
 +  * debian/patches/fixes/ZOOKEEPER-1033: Cherry picked patch from 3.4.0 
 +    so that headers for c bindings are installed to /usr/include/zookeeper.
 +  * Purged additional non-DFSG files from upstream source:
 +    - src/java/test/data/* : invalid snapshot and upgrade testing data.
 +
 + -- James Page <james.page at ubuntu.com>  Wed, 13 Jul 2011 10:01:47 +0100
 +
 +zookeeper (3.3.3+dfsg1-1) unstable; urgency=low
 +
 +  * New upstream release.
 +  * Resolve FTBFS on mips and hppa - platforms should not be supported 
 +    as zookeeper needs default-jdk >= 1:1.6 (Closes: #626020,#594970).
 +  * Added myself to Uploaders.
 +  * Removed Thomas Koch from Uploaders - thanks for all of your work.
 +  * Bumped Standards-Version: 3.9.2; no changes.
 +  * Transition to dh_python2.
 +  * Fixed FTBFS due to -Werror actually working and causing build 
 +    failures in gcc >= 4.6.1 (Closes: #625441).
 +  * debian/bin/zkPurgeTxnLog.sh: Switch DATADIR and DATALOGDIR to match
 +    parameter ordering in Zookeeper code (Closes: #601383) - thanks to 
 +    Paul Paradise for identifying this issue and the fix.
 +  * debian/copyright: upgrade to DEP-5 format.
 +
 + -- James Page <james.page at ubuntu.com>  Tue, 12 Jul 2011 16:56:06 +0100
 +
 +zookeeper (3.3.1+dfsg1-2) unstable; urgency=low
 +
 +  * FIX: cronjob, init.d fail after package removal. Closes: #582757
 +
 + -- Thomas Koch <thomas.koch at ymc.ch>  Tue, 01 Jun 2010 13:25:34 +0200
 +
 +zookeeper (3.3.1+dfsg1-1) unstable; urgency=low
 +
 +  * new upstream version
 +  * started over testing a new git layout for packaging
 +
 + -- Thomas Koch <thomas.koch at ymc.ch>  Tue, 18 May 2010 09:36:16 +0200
 +
 +zookeeper (3.3.0+dfsg1-1) unstable; urgency=low
 +
 +  * new upstream version
 +  * packaged zooinspector contrib
 +  * packages zktreeutil contrib
 +  * Made debian/rules a bit more sane
 +
 + -- Thomas Koch <thomas.koch at ymc.ch>  Tue, 27 Apr 2010 13:52:30 +0200
 +
 +zookeeper (3.2.2+dfsg3-3) unstable; urgency=low
 +
 +  * remove /var/run/zookeeper when purging the package
 +  * zookeeperd.init creates /var/run/zookeeper now (Closes: #569972)
 +  * cronjob to purge old zookeeper data
 +  * more elaborate config example
 +  * superfluous /var/run/zookeeper entry in zookeeper.dirs
 +  * fix lintian tag debian-rules-ignores-make-clean-error
 +  * don't install executables to /usr/bin without manpages and proper
 +    names
 +  * Use Built-in functions for atomic memory access instead of 
 +    hard-coded assembler. Thx Matthias Klose. Closes: #568618.
 +  * move executables to /usr/lib/... instead of /usr/share/...
 +
 + -- Thomas Koch <thomas.koch at ymc.ch>  Wed, 24 Feb 2010 15:02:09 +0100
 +
 +zookeeper (3.2.2+dfsg3-2) unstable; urgency=low
 +
 +  * Build C and Python bindings. Thanks to Matthias Klose.
 +  * Corrected dependencies versions in debian/control.
 +
 + -- Thomas Koch <thomas.koch at ymc.ch>  Thu, 28 Jan 2010 12:07:38 +0100
 +
 +zookeeper (3.2.2+dfsg3-1) unstable; urgency=low
 +
 +  * New repackaging after FTP rejection due to overseen license issues.
 +  * New repackaging of upstream tarball to exclude generated code. 
 +  * Initial release. (Closes: #561947)
 +
 + -- Thomas Koch <thomas.koch at ymc.ch>  Fri, 27 Jan 2010 16:41:22 +0100
diff --cc debian/conf_example/environment
index 09a4eab,0000000..be495fd
mode 100644,000000..100644
--- a/debian/conf_example/environment
+++ b/debian/conf_example/environment
@@@ -1,20 -1,0 +1,20 @@@
 +NAME=zookeeper
 +ZOOCFGDIR=/etc/$NAME/conf
 +
 +# TODO this is really ugly
 +# How to find out, which jars are needed?
 +# seems, that log4j requires the log4j.properties file to be in the classpath
- CLASSPATH="$ZOOCFGDIR:/usr/share/java/jline.jar:/usr/share/java/log4j-1.2.jar:/usr/share/java/xercesImpl.jar:/usr/share/java/xmlParserAPIs.jar:/usr/share/java/zookeeper.jar"
++CLASSPATH="$ZOOCFGDIR:/usr/share/java/jline.jar:/usr/share/java/log4j-1.2.jar:/usr/share/java/xercesImpl.jar:/usr/share/java/xmlParserAPIs.jar:/usr/share/java/netty.jar:/usr/share/java/slf4j-api.jar:/usr/share/java/slf4j-log4j12.jar:/usr/share/java/zookeeper.jar"
 +
 +ZOOCFG="$ZOOCFGDIR/zoo.cfg"
 +ZOO_LOG_DIR=/var/log/$NAME
 +USER=$NAME
 +GROUP=$NAME
 +PIDDIR=/var/run/$NAME
 +PIDFILE=$PIDDIR/$NAME.pid
 +SCRIPTNAME=/etc/init.d/$NAME
 +JAVA=/usr/bin/java
 +ZOOMAIN="org.apache.zookeeper.server.quorum.QuorumPeerMain"
 +ZOO_LOG4J_PROP="INFO,ROLLINGFILE"
 +JMXLOCALONLY=false
 +JAVA_OPTS=""
diff --cc debian/control
index 5493878,0000000..56c9b24
mode 100644,000000..100644
--- a/debian/control
+++ b/debian/control
@@@ -1,197 -1,0 +1,203 @@@
 +Source: zookeeper
 +Section: java
 +Priority: optional
 +Maintainer: Debian Java Maintainers <pkg-java-maintainers at lists.alioth.debian.org>
 +Uploaders: James Page <james.page at ubuntu.com>
- Homepage: http://hadoop.apache.org/zookeeper
- Vcs-Browser: http://git.debian.org/?p=pkg-java/zookeeper.git
- Vcs-Git: git://git.debian.org/pkg-java/zookeeper.git
- Standards-Version: 3.9.3
++Homepage: http://zookeeper.apache.org
++Vcs-Browser: http://anonscm.debian.org/gitweb/?p=pkg-java/zookeeper.git
++Vcs-Git: git://anonscm.debian.org/pkg-java/zookeeper.git
++Standards-Version: 3.9.4
 +Build-Depends:
 + ant (>= 1.6.0),
 + ant-optional,
 + autoconf,
 + automake,
-  debhelper (>= 8.9.7~),
++ debhelper (>= 9~),
 + default-jdk (>= 1:1.6),
 + default-jdk-doc,
 + help2man,
 + javacc,
 + javahelper (>= 0.28),
 + junit4,
 + libboost-dev,
 + libcppunit-dev,
 + libjline-java,
 + liblog4cxx10-dev,
 + liblog4j1.2-java (>> 1.2.15-8),
++ libmockito-java,
 + libnetty-java,
++ libslf4j-java,
 + libtool,
 + libxerces2-java,
 + libxml2-dev,
 + procps,
 + python-all-dev (>= 2.6.6-3~)
 +X-Python-Version: >= 2.6
- DM-Upload-Allowed: yes
 +
 +Package: libzookeeper-java
 +Architecture: all
 +Depends:
 + libjline-java,
 + liblog4j1.2-java (>> 1.2.15-8),
 + libnetty-java,
++ libslf4j-java,
 + libxerces2-java,
 + ${misc:Depends}
++Recommends: libzookeeper-java-doc
 +Description: Core Java libraries for zookeeper
 + ZooKeeper is a centralized, reliable, service for maintaining configuration
 + information, naming, providing distributed synchronization, and group
 + services. All of these kinds of services are used in some form or another by
 + distributed applications.
 + .
 + This package contains the java .jar files.
 +
 +Package: zookeeper
 +Architecture: all
 +Depends:
 + adduser,
 + default-jre-headless | java6-runtime-headless,
 + libzookeeper-java (= ${binary:Version}),
 + ${misc:Depends}
 +Description: High-performance coordination service for distributed applications
 + ZooKeeper is a centralized, reliable, service for maintaining configuration
 + information, naming, providing distributed synchronization, and group
 + services. All of these kinds of services are used in some form or another by
 + distributed applications.
 + .
 + This package contains the shell scripts and an example configuration but does
 + not automatically start up the service. The example configuration is installed
 + with the update-alternatives mechanism.
 +
 +Package: zookeeperd
 +Architecture: all
- Depends: zookeeper (= ${binary:Version}), ${misc:Depends}, lsb-base (>= 3.2-14)
++Depends: lsb-base (>= 3.2-14), zookeeper (= ${binary:Version}), ${misc:Depends}
 +Description: Init control scripts for zookeeper
 + ZooKeeper is a centralized, reliable, service for maintaining configuration
 + information, naming, providing distributed synchronization, and group
 + services. All of these kinds of services are used in some form or another by
 + distributed applications.
 + .
 + This package contains init.d scripts to start and stop zookeeper and starts
 + zookeeper on installation.
 +
 +Package: libzookeeper-java-doc
 +Section: doc
 +Architecture: all
- Depends: libzookeeper-java (= ${binary:Version}), ${misc:Depends}
++Depends: ${misc:Depends}
 +Description: API Documentation for zookeeper
 + ZooKeeper is a centralized, reliable, service for maintaining configuration
 + information, naming, providing distributed synchronization, and group
 + services. All of these kinds of services are used in some form or another by
 + distributed applications.
 +
 +Package: libzookeeper-mt2
 +Architecture: any
 +Section: libs
 +Multi-Arch: same
 +Pre-Depends: ${misc:Pre-Depends}
 +Depends: ${misc:Depends}, ${shlibs:Depends}
 +Description: Multi threaded C bindings for zookeeper
 + ZooKeeper is a centralized, reliable, service for maintaining configuration
 + information, naming, providing distributed synchronization, and group
 + services. All of these kinds of services are used in some form or another by
 + distributed applications.
 + .
 + This package contains the multi-threaded libraries for the C bindings.
 +
 +Package: libzookeeper-st2
 +Architecture: any
 +Section: libs
 +Multi-Arch: same
 +Pre-Depends: ${misc:Pre-Depends}
 +Depends: ${misc:Depends}, ${shlibs:Depends}
 +Description: Single threaded C bindings for zookeeper
 + ZooKeeper is a centralized, reliable, service for maintaining configuration
 + information, naming, providing distributed synchronization, and group
 + services. All of these kinds of services are used in some form or another by
 + distributed applications.
 + .
 + This package contains the single-threaded libraries for the C bindings.
 +
 +Package: libzookeeper2
 +Architecture: any
 +Priority: extra
 +Section: oldlibs
 +Depends: libzookeeper-mt2 (= ${binary:Version}), ${misc:Depends}
 +Description: C bindings for zookeeper - transitional package
 + ZooKeeper is a centralized, reliable, service for maintaining configuration
 + information, naming, providing distributed synchronization, and group
 + services. All of these kinds of services are used in some form or another by
 + distributed applications.
 + .
 + Transitional package for renaming of libzookeeper2 -> libzookeeper-mt2.
 +
 +Package: libzookeeper-mt-dev
 +Architecture: any
 +Section: libdevel
 +Replaces: libzookeeper-dev
 +Provides: libzookeeper-dev
 +Depends:
 + libzookeeper-mt2 (= ${binary:Version}),
 + ${misc:Depends},
 + ${shlibs:Depends}
 +Conflicts: libzookeeper-dev
 +Description: Development files for multi threaded zookeeper C bindings
 + ZooKeeper is a centralized, reliable, service for maintaining configuration
 + information, naming, providing distributed synchronization, and group
 + services. All of these kinds of services are used in some form or another by
 + distributed applications.
 + .
 + This package contains the development files for the multi threaded C bindings.
 +
 +Package: libzookeeper-st-dev
 +Architecture: any
 +Section: libdevel
 +Replaces: libzookeeper-dev
 +Provides: libzookeeper-dev
 +Depends:
 + libzookeeper-st2 (= ${binary:Version}),
 + ${misc:Depends},
 + ${shlibs:Depends}
 +Conflicts: libzookeeper-dev
 +Description: Development files for single threaded zookeeper C bindings
 + ZooKeeper is a centralized, reliable, service for maintaining configuration
 + information, naming, providing distributed synchronization, and group
 + services. All of these kinds of services are used in some form or another by
 + distributed applications.
 + .
 + This package contains the development files for the single threaded C bindings.
 +
 +Package: zookeeper-bin
 +Architecture: any
 +Section: misc
- Depends: libzookeeper-mt2 (= ${binary:Version}), ${misc:Depends}, ${shlibs:Depends}
++Depends:
++ libzookeeper-mt2 (= ${binary:Version}),
++ ${misc:Depends},
++ ${shlibs:Depends}
 +Description: Command line utilities for zookeeper
 + ZooKeeper is a centralized, reliable, service for maintaining configuration
 + information, naming, providing distributed synchronization, and group
 + services. All of these kinds of services are used in some form or another by
 + distributed applications.
 + .
 + This package contains additional zookeeper command line utilities using the C
 + binding. See the "zookeeper" package for command line utilities using the java
 + binding.
 +
 +Package: python-zookeeper
 +Architecture: any
 +Section: python
 +XB-Python-Version: ${python:Versions}
 +Depends:
 + libzookeeper-mt2 (= ${binary:Version}),
 + ${misc:Depends},
 + ${python:Depends},
 + ${shlibs:Depends}
 +Description: Python bindings for zookeeper
 + ZooKeeper is a centralized, reliable, service for maintaining configuration
 + information, naming, providing distributed synchronization, and group
 + services. All of these kinds of services are used in some form or another by
 + distributed applications.
 + .
 + This package contains the Python bindings.
diff --cc debian/libzookeeper-java-doc.preinst
index 0000000,0000000..78b6397
new file mode 100644
--- /dev/null
+++ b/debian/libzookeeper-java-doc.preinst
@@@ -1,0 -1,0 +1,17 @@@
++#!/bin/sh
++
++set -e
++
++case "$1" in
++  install|upgrade)
++    DOCDIR=/usr/share/doc/libzookeeper-java-doc
++
++    if [ -L $DOCDIR ]; then
++      rm $DOCDIR
++    fi
++  ;;
++esac
++
++#DEBHELPER#
++
++exit 0
diff --cc debian/libzookeeper-java.jlibs
index 4711480,0000000..8c15053
mode 100644,000000..100644
--- a/debian/libzookeeper-java.jlibs
+++ b/debian/libzookeeper-java.jlibs
@@@ -1,2 -1,0 +1,1 @@@
 +build/zookeeper.jar
- build/contrib/bookkeeper/zookeeper-bookkeeper.jar
diff --cc debian/libzookeeper-mt-dev.preinst
index 0000000,0000000..10db9c1
new file mode 100644
--- /dev/null
+++ b/debian/libzookeeper-mt-dev.preinst
@@@ -1,0 -1,0 +1,17 @@@
++#!/bin/sh
++
++set -e
++
++case "$1" in
++  install|upgrade)
++    DOCDIR=/usr/share/doc/libzookeeper-mt-dev
++
++    if [ -L $DOCDIR ]; then
++      rm $DOCDIR
++    fi
++  ;;
++esac
++
++#DEBHELPER#
++
++exit 0
diff --cc debian/libzookeeper-st-dev.preinst
index 0000000,0000000..e0e7d67
new file mode 100644
--- /dev/null
+++ b/debian/libzookeeper-st-dev.preinst
@@@ -1,0 -1,0 +1,17 @@@
++#!/bin/sh
++
++set -e
++
++case "$1" in
++  install|upgrade)
++    DOCDIR=/usr/share/doc/libzookeeper-st-dev
++
++    if [ -L $DOCDIR ]; then
++      rm $DOCDIR
++    fi
++  ;;
++esac
++
++#DEBHELPER#
++
++exit 0
diff --cc debian/libzookeeper2.preinst
index 0000000,0000000..557399a
new file mode 100644
--- /dev/null
+++ b/debian/libzookeeper2.preinst
@@@ -1,0 -1,0 +1,17 @@@
++#!/bin/sh
++
++set -e
++
++case "$1" in
++  install|upgrade)
++    DOCDIR=/usr/share/doc/libzookeeper2
++
++    if [ -L $DOCDIR ]; then
++      rm $DOCDIR
++    fi
++  ;;
++esac
++
++#DEBHELPER#
++
++exit 0
diff --cc debian/orig-tar.sh
index 0000000,0000000..c243fac
new file mode 100755
--- /dev/null
+++ b/debian/orig-tar.sh
@@@ -1,0 -1,0 +1,32 @@@
++#!/bin/bash -e
++
++VERSION=$2
++TAR=../zookeeper_$VERSION.orig.tar.gz
++NEWTAR=../zookeeper_$VERSION+dfsg.orig.tar.bz2
++DIR=zookeeper-$VERSION
++mkdir -p $DIR
++
++# Unpack ready fo re-packing
++tar -xzf $TAR -C $DIR --strip-components=1
++
++# Repack excluding stuff we don't need
++GZIP=--best tar -cjf $NEWTAR --exclude '*.jar' \
++         --exclude "Makefile.in" \
++         --exclude "aclocal.m4" \
++         --exclude "autom4te.cache" \
++         --exclude "compile" \
++         --exclude "config.guess" \
++         --exclude "config.sub" \
++         --exclude "configure" \
++         --exclude "ltmain.sh" \
++         --exclude "zookeeper-${VERSION}/contrib" \
++         --exclude "zookeeper-${VERSION}/docs" \
++         --exclude "zookeeper-${VERSION}/recipes" \
++         --exclude "zookeeper-${VERSION}/dist-maven" \
++         --exclude "zookeeper-${VERSION}/src/contrib/fatjar" \
++         --exclude "zookeeper-${VERSION}/src/c/generated" \
++         --exclude "zookeeper-${VERSION}/src/java/main/org/apache/jute/compiler/generated/*.java" \
++         --exclude "zookeeper-${VERSION}/src/java/generated" $DIR
++
++rm -rf $DIR $TAR
++
diff --cc debian/patches/CVE-2017-5637.patch
index 0000000,0000000..239dad1
new file mode 100644
--- /dev/null
+++ b/debian/patches/CVE-2017-5637.patch
@@@ -1,0 -1,0 +1,593 @@@
++From 835377f0e1cd215e791ed29c0bcff95e625f299c Mon Sep 17 00:00:00 2001
++From: Michael Han <hanm at apache.org>
++Date: Tue, 7 Mar 2017 17:34:34 +0530
++Subject: [PATCH] ZOOKEEPER-2693: DOS attack on wchp/wchc four letter words
++ (4lw)
++
++Similar as pull request 179, this PR introduces new property zookeeper.4lw.commands.whitelist to branch-3.4.
++Unlike branch-3.5 where all 4lw (with few exceptions) is disabled by default, for branch-3.4 only "wchp" and "wchc" are disabled by default - since 4lw is widely used and there is no alternatives in branch-3.4 so we just disable the exploitable ones.
++
++Author: Michael Han <hanm at apache.org>
++
++Reviewers: Rakesh Radhakrishnan <rakeshr at apache.org>
++
++Closes #183 from hanm/ZOOKEEPER-2693-br-3.4 and squashes the following commits:
++
++d060ddc [Michael Han] update doc.
++2ce4ebd [Michael Han] ZOOKEEPER-2693: DOS attack on wchp/wchc four letter words (4lw). Initial commit for branch-3.4.
++---
++ .../documentation/content/xdocs/zookeeperAdmin.xml |  44 ++++
++ .../org/apache/zookeeper/server/NIOServerCnxn.java |  33 ++-
++ .../apache/zookeeper/server/NettyServerCnxn.java   |  32 ++-
++ .../org/apache/zookeeper/server/ServerCnxn.java    |  94 +++++++-
++ src/java/test/org/apache/zookeeper/ZKTestCase.java |   4 +
++ .../test/FourLetterWordsWhiteListTest.java         | 252 +++++++++++++++++++++
++ 6 files changed, 449 insertions(+), 10 deletions(-)
++ create mode 100644 src/java/test/org/apache/zookeeper/test/FourLetterWordsWhiteListTest.java
++
++diff --git a/src/docs/src/documentation/content/xdocs/zookeeperAdmin.xml b/src/docs/src/documentation/content/xdocs/zookeeperAdmin.xml
++index 5aefa9a11..fb00fae24 100644
++--- a/src/docs/src/documentation/content/xdocs/zookeeperAdmin.xml
+++++ b/src/docs/src/documentation/content/xdocs/zookeeperAdmin.xml
++@@ -1042,6 +1042,40 @@ server.3=zoo3:2888:3888</programlisting>
++               </note>
++             </listitem>
++           </varlistentry>
+++
+++          <varlistentry>
+++            <term>4lw.commands.whitelist</term>
+++
+++            <listitem>
+++              <para>(Java system property: <emphasis
+++                      role="bold">zookeeper.4lw.commands.whitelist</emphasis>)</para>
+++
+++              <para><emphasis role="bold">New in 3.4.10:</emphasis>
+++                This property contains a list of comma separated
+++                <ulink url="#sc_4lw">Four Letter Words</ulink> commands. It is introduced
+++                to provide fine grained control over the set of commands ZooKeeper can execute,
+++                so users can turn off certain commands if necessary.
+++                By default it contains all supported four letter word commands except "wchp" and "wchc",
+++                if the property is not specified. If the property is specified, then only commands listed
+++                in the whitelist are enabled.
+++              </para>
+++
+++              <para>Here's an example of the configuration that enables stat, ruok, conf, and isro
+++                command while disabling the rest of Four Letter Words command:</para>
+++              <programlisting>
+++                4lw.commands.whitelist=stat, ruok, conf, isro
+++              </programlisting>
+++
+++              <para>Users can also use asterisk option so they don't have to include every command one by one in the list.
+++                As an example, this will enable all four letter word commands:
+++              </para>
+++              <programlisting>
+++                4lw.commands.whitelist=*
+++              </programlisting>
+++
+++            </listitem>
+++          </varlistentry>
+++
++         </variablelist>
++         <para></para>
++       </section>
++@@ -1667,6 +1701,16 @@ imok
++             usage limit that would cause the system to swap.</para>
++           </listitem>
++         </varlistentry>
+++
+++        <varlistentry>
+++          <term>Publicly accessible deployment</term>
+++          <listitem>
+++            <para>
+++              A ZooKeeper ensemble is expected to operate in a trusted computing environment.
+++              It is thus recommended to deploy ZooKeeper behind a firewall.
+++            </para>
+++          </listitem>
+++        </varlistentry>
++       </variablelist>
++     </section>
++ 
++diff --git a/src/java/main/org/apache/zookeeper/server/NIOServerCnxn.java b/src/java/main/org/apache/zookeeper/server/NIOServerCnxn.java
++index 4ea7fb273..456d4c2f1 100644
++--- a/src/java/main/org/apache/zookeeper/server/NIOServerCnxn.java
+++++ b/src/java/main/org/apache/zookeeper/server/NIOServerCnxn.java
++@@ -825,18 +825,30 @@ public void commandRun() {
++         }
++     }
++ 
+++    private class NopCommand extends CommandThread {
+++        private String msg;
+++
+++        public NopCommand(PrintWriter pw, String msg) {
+++            super(pw);
+++            this.msg = msg;
+++        }
+++
+++        @Override
+++        public void commandRun() {
+++            pw.println(msg);
+++        }
+++    }
+++
++     /** Return if four letter word found and responded to, otw false **/
++     private boolean checkFourLetterWord(final SelectionKey k, final int len)
++     throws IOException
++     {
++         // We take advantage of the limited size of the length to look
++         // for cmds. They are all 4-bytes which fits inside of an int
++-        String cmd = cmd2String.get(len);
++-        if (cmd == null) {
+++        if (!ServerCnxn.isKnown(len)) {
++             return false;
++         }
++-        LOG.info("Processing " + cmd + " command from "
++-                + sock.socket().getRemoteSocketAddress());
+++
++         packetReceived();
++ 
++         /** cancel the selection key to remove the socket handling
++@@ -858,6 +870,19 @@ private boolean checkFourLetterWord(final SelectionKey k, final int len)
++ 
++         final PrintWriter pwriter = new PrintWriter(
++                 new BufferedWriter(new SendBufferWriter()));
+++
+++        String cmd = ServerCnxn.getCommandString(len);
+++        // ZOOKEEPER-2693: don't execute 4lw if it's not enabled.
+++        if (!ServerCnxn.isEnabled(cmd)) {
+++            LOG.debug("Command {} is not executed because it is not in the whitelist.", cmd);
+++            NopCommand nopCmd = new NopCommand(pwriter, cmd + " is not executed because it is not in the whitelist.");
+++            nopCmd.start();
+++            return true;
+++        }
+++
+++        LOG.info("Processing " + cmd + " command from "
+++                + sock.socket().getRemoteSocketAddress());
+++
++         if (len == ruokCmd) {
++             RuokCommand ruok = new RuokCommand(pwriter);
++             ruok.start();
++diff --git a/src/java/main/org/apache/zookeeper/server/NettyServerCnxn.java b/src/java/main/org/apache/zookeeper/server/NettyServerCnxn.java
++index 32fc371e6..203f0e60b 100644
++--- a/src/java/main/org/apache/zookeeper/server/NettyServerCnxn.java
+++++ b/src/java/main/org/apache/zookeeper/server/NettyServerCnxn.java
++@@ -618,23 +618,47 @@ public void commandRun() {
++         }
++     }
++ 
+++    private class NopCommand extends CommandThread {
+++        private String msg;
+++
+++        public NopCommand(PrintWriter pw, String msg) {
+++            super(pw);
+++            this.msg = msg;
+++        }
+++
+++        @Override
+++        public void commandRun() {
+++            pw.println(msg);
+++        }
+++    }
+++
++     /** Return if four letter word found and responded to, otw false **/
++     private boolean checkFourLetterWord(final Channel channel,
++             ChannelBuffer message, final int len) throws IOException
++     {
++         // We take advantage of the limited size of the length to look
++         // for cmds. They are all 4-bytes which fits inside of an int
++-        String cmd = cmd2String.get(len);
++-        if (cmd == null) {
+++        if (!ServerCnxn.isKnown(len)) {
++             return false;
++         }
+++
++         channel.setInterestOps(0).awaitUninterruptibly();
++-        LOG.info("Processing " + cmd + " command from "
++-                + channel.getRemoteAddress());
++         packetReceived();
++ 
++         final PrintWriter pwriter = new PrintWriter(
++                 new BufferedWriter(new SendBufferWriter()));
+++
+++        String cmd = ServerCnxn.getCommandString(len);
+++        // ZOOKEEPER-2693: don't execute 4lw if it's not enabled.
+++        if (!ServerCnxn.isEnabled(cmd)) {
+++            LOG.debug("Command {} is not executed because it is not in the whitelist.", cmd);
+++            NopCommand nopCmd = new NopCommand(pwriter, cmd + " is not executed because it is not in the whitelist.");
+++            nopCmd.start();
+++            return true;
+++        }
+++
+++        LOG.info("Processing " + cmd + " command from " + channel.getRemoteAddress());
+++
++         if (len == ruokCmd) {
++             RuokCommand ruok = new RuokCommand(pwriter);
++             ruok.start();
++diff --git a/src/java/main/org/apache/zookeeper/server/ServerCnxn.java b/src/java/main/org/apache/zookeeper/server/ServerCnxn.java
++index 6dd509b16..6b93e93f1 100644
++--- a/src/java/main/org/apache/zookeeper/server/ServerCnxn.java
+++++ b/src/java/main/org/apache/zookeeper/server/ServerCnxn.java
++@@ -26,10 +26,17 @@
++ import java.util.ArrayList;
++ import java.util.Collections;
++ import java.util.Date;
+++import java.util.Map;
++ import java.util.HashMap;
+++import java.util.Set;
+++import java.util.HashSet;
+++import java.util.Arrays;
++ import java.util.List;
++ import java.util.concurrent.atomic.AtomicLong;
++ 
+++import org.slf4j.Logger;
+++import org.slf4j.LoggerFactory;
+++
++ import org.apache.jute.Record;
++ import org.apache.zookeeper.WatchedEvent;
++ import org.apache.zookeeper.Watcher;
++@@ -227,8 +234,91 @@ public String toString() {
++     protected final static int isroCmd = ByteBuffer.wrap("isro".getBytes())
++             .getInt();
++ 
++-    protected final static HashMap<Integer, String> cmd2String =
++-        new HashMap<Integer, String>();
+++    protected final static Map<Integer, String> cmd2String = new HashMap<Integer, String>();
+++
+++    private static final String ZOOKEEPER_4LW_COMMANDS_WHITELIST = "zookeeper.4lw.commands.whitelist";
+++
+++    private static final Logger LOG = LoggerFactory.getLogger(ServerCnxn.class);
+++
+++    private static final Set<String> whiteListedCommands = new HashSet<String>();
+++
+++    private static boolean whiteListInitialized = false;
+++
+++    // @VisibleForTesting
+++    public static void resetWhiteList() {
+++        whiteListInitialized = false;
+++        whiteListedCommands.clear();
+++    }
+++
+++    /**
+++     * Return the string representation of the specified command code.
+++     */
+++    public static String getCommandString(int command) {
+++        return cmd2String.get(command);
+++    }
+++
+++    /**
+++     * Check if the specified command code is from a known command.
+++     *
+++     * @param command The integer code of command.
+++     * @return true if the specified command is known, false otherwise.
+++     */
+++    public static boolean isKnown(int command) {
+++        return cmd2String.containsKey(command);
+++    }
+++
+++    /**
+++     * Check if the specified command is enabled.
+++     *
+++     * In ZOOKEEPER-2693 we introduce a configuration option to only
+++     * allow a specific set of white listed commands to execute.
+++     * A command will only be executed if it is also configured
+++     * in the white list.
+++     *
+++     * @param command The command string.
+++     * @return true if the specified command is enabled.
+++     */
+++    public static boolean isEnabled(String command) {
+++        if (whiteListInitialized) {
+++            return whiteListedCommands.contains(command);
+++        }
+++
+++        String commands = System.getProperty(ZOOKEEPER_4LW_COMMANDS_WHITELIST);
+++        if (commands != null) {
+++            String[] list = commands.split(",");
+++            for (String cmd : list) {
+++                if (cmd.trim().equals("*")) {
+++                    for (Map.Entry<Integer, String> entry : cmd2String.entrySet()) {
+++                        whiteListedCommands.add(entry.getValue());
+++                    }
+++                    break;
+++                }
+++                if (!cmd.trim().isEmpty()) {
+++                    whiteListedCommands.add(cmd.trim());
+++                }
+++            }
+++        } else {
+++            for (Map.Entry<Integer, String> entry : cmd2String.entrySet()) {
+++                String cmd = entry.getValue();
+++                if (cmd.equals("wchc") || cmd.equals("wchp")) {
+++                    // ZOOKEEPER-2693 / disable these exploitable commands by default.
+++                    continue;
+++                }
+++                whiteListedCommands.add(cmd);
+++            }
+++        }
+++
+++        // Readonly mode depends on "isro".
+++        if (System.getProperty("readonlymode.enabled", "false").equals("true")) {
+++            whiteListedCommands.add("isro");
+++        }
+++        // zkServer.sh depends on "srvr".
+++        whiteListedCommands.add("srvr");
+++        whiteListInitialized = true;
+++        LOG.info("The list of known four letter word commands is : {}", Arrays.asList(cmd2String));
+++        LOG.info("The list of enabled four letter word commands is : {}", Arrays.asList(whiteListedCommands));
+++        return whiteListedCommands.contains(command);
+++    }
++ 
++     // specify all of the commands that are available
++     static {
++diff --git a/src/java/test/org/apache/zookeeper/ZKTestCase.java b/src/java/test/org/apache/zookeeper/ZKTestCase.java
++index 97e2db6ee..9098fc47e 100644
++--- a/src/java/test/org/apache/zookeeper/ZKTestCase.java
+++++ b/src/java/test/org/apache/zookeeper/ZKTestCase.java
++@@ -52,6 +52,10 @@ protected String getTestName() {
++         @Override
++         public void starting(FrameworkMethod method) {
++             testName = method.getName();
+++            // ZOOKEEPER-2693 disables all 4lw by default.
+++            // Here we enable the 4lw which ZooKeeper tests depends.
+++            System.setProperty("zookeeper.4lw.commands.whitelist", "*");
+++
++             LOG.info("STARTING " + testName);
++         }
++ 
++diff --git a/src/java/test/org/apache/zookeeper/test/FourLetterWordsWhiteListTest.java b/src/java/test/org/apache/zookeeper/test/FourLetterWordsWhiteListTest.java
++new file mode 100644
++index 000000000..613346f2e
++--- /dev/null
+++++ b/src/java/test/org/apache/zookeeper/test/FourLetterWordsWhiteListTest.java
++@@ -0,0 +1,252 @@
+++/**
+++ * Licensed to the Apache Software Foundation (ASF) under one
+++ * or more contributor license agreements.  See the NOTICE file
+++ * distributed with this work for additional information
+++ * regarding copyright ownership.  The ASF licenses this file
+++ * to you under the Apache License, Version 2.0 (the
+++ * "License"); you may not use this file except in compliance
+++ * with the License.  You may obtain a copy of the License at
+++ *
+++ *     http://www.apache.org/licenses/LICENSE-2.0
+++ *
+++ * Unless required by applicable law or agreed to in writing, software
+++ * distributed under the License is distributed on an "AS IS" BASIS,
+++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+++ * See the License for the specific language governing permissions and
+++ * limitations under the License.
+++ */
+++
+++package org.apache.zookeeper.test;
+++
+++import java.io.IOException;
+++
+++import org.apache.zookeeper.TestableZooKeeper;
+++import org.apache.zookeeper.server.ServerCnxn;
+++import static org.apache.zookeeper.client.FourLetterWordMain.send4LetterWord;
+++import org.junit.Assert;
+++import org.junit.Rule;
+++import org.junit.Test;
+++import org.junit.rules.Timeout;
+++import org.slf4j.Logger;
+++import org.slf4j.LoggerFactory;
+++
+++public class FourLetterWordsWhiteListTest extends ClientBase {
+++    protected static final Logger LOG =
+++        LoggerFactory.getLogger(FourLetterWordsTest.class);
+++
+++    @Rule
+++    public Timeout timeout = new Timeout(30000);
+++
+++    /*
+++     * ZOOKEEPER-2693: test white list of four letter words.
+++     * For 3.5.x default white list is empty. Verify that is
+++     * the case (except 'stat' command which is enabled in ClientBase
+++     * which other tests depend on.).
+++     */
+++    @Test(timeout=30000)
+++    public void testFourLetterWordsAllDisabledByDefault() throws Exception {
+++        stopServer();
+++        ServerCnxn.resetWhiteList();
+++        System.setProperty("zookeeper.4lw.commands.whitelist", "stat");
+++        startServer();
+++
+++        // Default white list for 3.5.x is empty, so all command should fail.
+++        verifyAllCommandsFail();
+++
+++        TestableZooKeeper zk = createClient();
+++
+++        verifyAllCommandsFail();
+++
+++        zk.getData("/", true, null);
+++
+++        verifyAllCommandsFail();
+++
+++        zk.close();
+++
+++        verifyFuzzyMatch("stat", "Outstanding");
+++        verifyAllCommandsFail();
+++    }
+++
+++    @Test(timeout=30000)
+++    public void testFourLetterWordsEnableSomeCommands() throws Exception {
+++        stopServer();
+++        ServerCnxn.resetWhiteList();
+++        System.setProperty("zookeeper.4lw.commands.whitelist", "stat, ruok, isro");
+++        startServer();
+++        // stat, ruok and isro are white listed.
+++        verifyFuzzyMatch("stat", "Outstanding");
+++        verifyExactMatch("ruok", "imok");
+++        verifyExactMatch("isro", "rw");
+++
+++        // Rest of commands fail.
+++        verifyExactMatch("conf", generateExpectedMessage("conf"));
+++        verifyExactMatch("cons", generateExpectedMessage("cons"));
+++        verifyExactMatch("crst", generateExpectedMessage("crst"));
+++        verifyExactMatch("dump", generateExpectedMessage("dump"));
+++        verifyExactMatch("envi", generateExpectedMessage("envi"));
+++        verifyExactMatch("gtmk", generateExpectedMessage("gtmk"));
+++        verifyExactMatch("stmk", generateExpectedMessage("stmk"));
+++        verifyExactMatch("srst", generateExpectedMessage("srst"));
+++        verifyExactMatch("wchc", generateExpectedMessage("wchc"));
+++        verifyExactMatch("wchp", generateExpectedMessage("wchp"));
+++        verifyExactMatch("wchs", generateExpectedMessage("wchs"));
+++        verifyExactMatch("mntr", generateExpectedMessage("mntr"));
+++    }
+++
+++    @Test(timeout=30000)
+++    public void testISROEnabledWhenReadOnlyModeEnabled() throws Exception {
+++        stopServer();
+++        ServerCnxn.resetWhiteList();
+++        System.setProperty("zookeeper.4lw.commands.whitelist", "stat");
+++        System.setProperty("readonlymode.enabled", "true");
+++        startServer();
+++        verifyExactMatch("isro", "rw");
+++        System.clearProperty("readonlymode.enabled");
+++    }
+++
+++    @Test(timeout=30000)
+++    public void testFourLetterWordsInvalidConfiguration() throws Exception {
+++        stopServer();
+++        ServerCnxn.resetWhiteList();
+++        System.setProperty("zookeeper.4lw.commands.whitelist", "foo bar" +
+++                " foo,,, " +
+++                "bar :.,@#$%^&*() , , , , bar, bar, stat,        ");
+++        startServer();
+++
+++        // Just make sure we are good when admin made some mistakes in config file.
+++        verifyAllCommandsFail();
+++        // But still, what's valid in white list will get through.
+++        verifyFuzzyMatch("stat", "Outstanding");
+++    }
+++
+++    @Test(timeout=30000)
+++    public void testFourLetterWordsEnableAllCommandsThroughAsterisk() throws Exception {
+++        stopServer();
+++        ServerCnxn.resetWhiteList();
+++        System.setProperty("zookeeper.4lw.commands.whitelist", "*");
+++        startServer();
+++        verifyAllCommandsSuccess();
+++    }
+++
+++    @Test(timeout=30000)
+++    public void testFourLetterWordsEnableAllCommandsThroughExplicitList() throws Exception {
+++        stopServer();
+++        ServerCnxn.resetWhiteList();
+++        System.setProperty("zookeeper.4lw.commands.whitelist",
+++                "ruok, envi, conf, stat, srvr, cons, dump," +
+++                        "wchs, wchp, wchc, srst, crst, " +
+++                        "mntr, gtmk, isro, stmk");
+++        startServer();
+++        verifyAllCommandsSuccess();
+++    }
+++
+++    private void verifyAllCommandsSuccess() throws Exception {
+++        verifyExactMatch("ruok", "imok");
+++        verifyFuzzyMatch("envi", "java.version");
+++        verifyFuzzyMatch("conf", "clientPort");
+++        verifyFuzzyMatch("stat", "Outstanding");
+++        verifyFuzzyMatch("srvr", "Outstanding");
+++        verifyFuzzyMatch("cons", "queued");
+++        verifyFuzzyMatch("dump", "Session");
+++        verifyFuzzyMatch("wchs", "watches");
+++        verifyFuzzyMatch("wchp", "");
+++        verifyFuzzyMatch("wchc", "");
+++
+++        verifyFuzzyMatch("srst", "reset");
+++        verifyFuzzyMatch("crst", "reset");
+++
+++        verifyFuzzyMatch("stat", "Outstanding");
+++        verifyFuzzyMatch("srvr", "Outstanding");
+++        verifyFuzzyMatch("cons", "queued");
+++        verifyFuzzyMatch("gtmk", "306");
+++        verifyFuzzyMatch("isro", "rw");
+++
+++        TestableZooKeeper zk = createClient();
+++        String sid = getHexSessionId(zk.getSessionId());
+++
+++        verifyFuzzyMatch("stat", "queued");
+++        verifyFuzzyMatch("srvr", "Outstanding");
+++        verifyFuzzyMatch("cons", sid);
+++        verifyFuzzyMatch("dump", sid);
+++
+++        zk.getData("/", true, null);
+++
+++        verifyFuzzyMatch("stat", "queued");
+++        verifyFuzzyMatch("srvr", "Outstanding");
+++        verifyFuzzyMatch("cons", sid);
+++        verifyFuzzyMatch("dump", sid);
+++
+++        verifyFuzzyMatch("wchs", "watching 1");
+++        verifyFuzzyMatch("wchp", sid);
+++        verifyFuzzyMatch("wchc", sid);
+++        zk.close();
+++
+++        verifyExactMatch("ruok", "imok");
+++        verifyFuzzyMatch("envi", "java.version");
+++        verifyFuzzyMatch("conf", "clientPort");
+++        verifyFuzzyMatch("stat", "Outstanding");
+++        verifyFuzzyMatch("srvr", "Outstanding");
+++        verifyFuzzyMatch("cons", "queued");
+++        verifyFuzzyMatch("dump", "Session");
+++        verifyFuzzyMatch("wchs", "watch");
+++        verifyFuzzyMatch("wchp", "");
+++        verifyFuzzyMatch("wchc", "");
+++
+++        verifyFuzzyMatch("srst", "reset");
+++        verifyFuzzyMatch("crst", "reset");
+++
+++        verifyFuzzyMatch("stat", "Outstanding");
+++        verifyFuzzyMatch("srvr", "Outstanding");
+++        verifyFuzzyMatch("cons", "queued");
+++        verifyFuzzyMatch("mntr", "zk_server_state\tstandalone");
+++        verifyFuzzyMatch("mntr", "num_alive_connections");
+++        verifyFuzzyMatch("stat", "Connections");
+++        verifyFuzzyMatch("srvr", "Connections");
+++    }
+++
+++    private void verifyAllCommandsFail() throws Exception {
+++        verifyExactMatch("ruok", generateExpectedMessage("ruok"));
+++        verifyExactMatch("conf", generateExpectedMessage("conf"));
+++        verifyExactMatch("cons", generateExpectedMessage("cons"));
+++        verifyExactMatch("crst", generateExpectedMessage("crst"));
+++        verifyExactMatch("dump", generateExpectedMessage("dump"));
+++        verifyExactMatch("envi", generateExpectedMessage("envi"));
+++        verifyExactMatch("gtmk", generateExpectedMessage("gtmk"));
+++        verifyExactMatch("stmk", generateExpectedMessage("stmk"));
+++        verifyExactMatch("srst", generateExpectedMessage("srst"));
+++        verifyExactMatch("wchc", generateExpectedMessage("wchc"));
+++        verifyExactMatch("wchp", generateExpectedMessage("wchp"));
+++        verifyExactMatch("wchs", generateExpectedMessage("wchs"));
+++        verifyExactMatch("mntr", generateExpectedMessage("mntr"));
+++        verifyExactMatch("isro", generateExpectedMessage("isro"));
+++
+++        // srvr is enabled by default due to the sad fact zkServer.sh uses it.
+++        verifyFuzzyMatch("srvr", "Outstanding");
+++    }
+++
+++    private void verifyFuzzyMatch(String cmd, String expected) throws IOException {
+++        String resp = sendRequest(cmd);
+++        LOG.info("cmd " + cmd + " expected " + expected + " got " + resp);
+++        Assert.assertTrue(resp.contains(expected));
+++    }
+++
+++    private String generateExpectedMessage(String command) {
+++        return command + " is not executed because it is not in the whitelist.";
+++    }
+++
+++    private void verifyExactMatch(String cmd, String expected) throws IOException {
+++        String resp = sendRequest(cmd);
+++        LOG.info("cmd " + cmd + " expected an exact match of " + expected + "; got " + resp);
+++        Assert.assertTrue(resp.trim().equals(expected));
+++    }
+++
+++    private String sendRequest(String cmd) throws IOException {
+++      HostPort hpobj = ClientBase.parseHostPortList(hostPort).get(0);
+++      return send4LetterWord(hpobj.host, hpobj.port, cmd);
+++    }
+++
+++    private String sendRequest(String cmd, int timeout) throws IOException {
+++        HostPort hpobj = ClientBase.parseHostPortList(hostPort).get(0);
+++        return send4LetterWord(hpobj.host, hpobj.port, cmd, timeout);
+++    }
+++}
diff --cc debian/patches/debian/disable-cygwin-detection
index 0ee9c3a,0000000..9d5a6d1
mode 100644,000000..100644
--- a/debian/patches/debian/disable-cygwin-detection
+++ b/debian/patches/debian/disable-cygwin-detection
@@@ -1,38 -1,0 +1,36 @@@
 +Description: Disable detection of cygwin under Debian installs
 + as this is not compatible with the way the environment is 
 + managed through alternatives.
 + .
 + TODO - review alongside use of alternatives for managing 
 + configuration.
 +Author: Akira Kitada <akitada at gmail.com>
 +Forwarded: not-needed
 +
- Index: zookeeper/bin/zkServer.sh
- ===================================================================
- --- zookeeper.orig/bin/zkServer.sh	2012-03-21 21:14:50.620574500 +0000
- +++ zookeeper/bin/zkServer.sh	2012-03-21 21:17:22.472936041 +0000
- @@ -70,15 +70,6 @@
-      echo "Using config:$2" >&2
++--- a/bin/zkServer.sh
+++++ b/bin/zkServer.sh
++@@ -69,15 +69,6 @@ then
++     ZOOCFG="$2"
 + fi
 + 
 +-if $cygwin
 +-then
 +-    ZOOCFG=`cygpath -wp "$ZOOCFG"`
 +-    # cygwin has a "kill" in the shell itself, gets confused
 +-    KILL=/bin/kill
 +-else
 +-    KILL=kill
 +-fi
 +-
 + echo "Using config: $ZOOCFG" >&2
 + 
-  if [ -z $ZOOPIDFILE ]
- @@ -130,7 +121,7 @@
++ if [ -z $ZOOPIDFILE ]; then
++@@ -140,7 +131,7 @@ stop)
 +     then
 +       echo "no zookeeper to stop (could not find file $ZOOPIDFILE)"
 +     else
 +-      $KILL -9 $(cat "$ZOOPIDFILE")
 ++      kill -9 $(cat "$ZOOPIDFILE")
 +       rm "$ZOOPIDFILE"
 +       echo STOPPED
 +     fi
diff --cc debian/patches/debian/patch-build-system
index 1561634,0000000..e6e0ad0
mode 100644,000000..100644
--- a/debian/patches/debian/patch-build-system
+++ b/debian/patches/debian/patch-build-system
@@@ -1,216 -1,0 +1,203 @@@
 +Description: Patches to upstream build system to disable use of ivy,
 + use jar files from /usr/share/java and enable the relevant bits of the
 + test suite for execution during build.
 +Author: James Page <james.page at ubuntu.com>, Thomas Koch <thomas at koch.ro>
 +Forwarded: not-needed
 +
- Index: zookeeper/build.xml
- ===================================================================
- --- zookeeper.orig/build.xml	2012-03-21 21:14:50.000000000 +0000
- +++ zookeeper/build.xml	2012-03-21 21:17:09.456905785 +0000
++--- a/build.xml
+++++ b/build.xml
 +@@ -25,7 +25,7 @@
 +     <property environment="env"/>
 +     
-      <property name="version" value="3.3.5" />
++     <property name="version" value="3.4.5" />
 +-    <property name="final.name" value="${name}-${version}"/>
 ++    <property name="final.name" value="${name}"/>
 +     <property name="revision.dir" value="${basedir}/.revision" />
 +     <property name="revision.properties" value="revision.properties" />
 +     <property file="${basedir}/src/java/${revision.properties}" />
- @@ -169,27 +169,17 @@
++@@ -184,27 +184,21 @@
 +     <path id="java.classpath">
 +       <pathelement location="${build.classes}"/>
 +       <!-- allow the user to override (e.g. if there are local versions) -->
 +-      <fileset dir="${additional.lib.dir}">
 +-        <include name="${additional.lib.dir.includes}" />
 +-        <exclude name="${additional.lib.dir.excludes}" />
 ++      <fileset dir="/usr/share/java">
 ++        <include name="log4j-1.2.jar" />
 ++        <include name="jline.jar" />
 ++        <include name="xercesImpl.jar" />
+++        <include name="slf4j-api.jar" />
+++        <include name="slf4j-log4j12.jar" />
+++        <include name="netty.jar" />
 +       </fileset>
 +-      <fileset dir="${lib.dir}">
 +-        <include name="${lib.dir.includes}" />
 +-        <exclude name="${lib.dir.excludes}" />
 +-      </fileset>
 +-      <fileset dir="${ant.home}/lib">
 +-        <include name="ant.jar" />
 +-      </fileset>
 +-      <fileset dir="${ivy.lib}">
 +-        <include name="**/*.jar" />
 +-      </fileset>
 +-      <pathelement path="${clover.jar}" />
 +     </path>
 + 
 +     <path id="test.java.classpath">
 +       <pathelement location="${test.java.classes}" />
 +-      <fileset dir="${ivy.test.lib}">
 +-        <include name="**/*.jar" />
 ++      <fileset dir="/usr/share/java">
 ++        <include name="junit4.jar" />
+++        <include name="mockito-core.jar" />
 +       </fileset>
 +       <path refid="java.classpath"/>
 +     </path>
- @@ -223,7 +213,7 @@
++@@ -246,7 +240,7 @@
 +                   targetfile="${src_generated.dir}/.generated"/>
 +     </target>
 + 
 +-    <target name="compile_jute" depends="jute,compile_jute_uptodate" unless="juteBuild.notRequired">
 ++    <target name="compile_jute" depends="jute,compile_jute_uptodate" unless="">
 +         <mkdir dir="${src_generated.dir}" />
 +         <mkdir dir="${csrc_generated.dir}" />
 +         <java classname="org.apache.jute.compiler.generated.Rcc" fork="true" dir="${src_generated.dir}">
- @@ -325,7 +315,7 @@
++@@ -354,7 +348,7 @@
 +       <ivy:cachepath pathid="releaseaudit-classpath" conf="releaseaudit"/>
 +     </target>
 + 
 +-    <target name="compile" depends="ivy-retrieve,clover,build-generated">
 ++    <target name="compile" depends="build-generated">
-          <javac srcdir="${java.src.dir}" destdir="${build.classes}" 
-                 target="${javac.target}" debug="on">
++         <javac srcdir="${java.src.dir}" destdir="${build.classes}" includeantruntime="false"
++                target="${javac.target}" source="${javac.source}" debug="on">
 +             <classpath refid="java.classpath"/>
- @@ -334,7 +324,7 @@
++@@ -363,7 +357,7 @@
 +         </javac>
 +     </target>
 + 
 +-    <target name="compile-test" depends="ivy-retrieve-test,compile">
 ++    <target name="compile-test" depends="compile">
 +       <mkdir dir="${test.java.classes}"/>
-        <javac srcdir="${test.src.dir}" destdir="${test.java.classes}"
-               target="${javac.target}" debug="on">
- @@ -769,21 +759,10 @@
++       <javac srcdir="${test.src.dir}" destdir="${test.java.classes}" includeantruntime="false"
++              target="${javac.target}" source="${javac.source}" debug="on">
++@@ -1124,21 +1118,10 @@
 +     <target name="test-init" depends="jar,compile-test">
 +         <delete dir="${test.log.dir}" />
 +         <delete dir="${test.tmp.dir}" />
 +-        <delete dir="${test.data.upgrade.dir}" />
 +-        <delete dir="${test.data.invalid.dir}" />
 +         <delete dir="${test.data.dir}" />
 +         <mkdir dir="${test.log.dir}" />
 +         <mkdir dir="${test.tmp.dir}" />
 +         <mkdir dir="${test.data.dir}" />
 +-        <mkdir dir="${test.data.upgrade.dir}" />
 +-        <mkdir dir="${test.data.invalid.dir}" />
 +-        <copy todir="${test.data.upgrade.dir}">
 +-            <fileset dir="${basedir}/src/java/test/data/upgrade"/>
 +-        </copy>
 +-        <copy todir="${test.data.invalid.dir}">
 +-            <fileset dir="${basedir}/src/java/test/data/invalidsnap"/>
 +-        </copy>
 +-       
 +     </target>
 + 
 +     <condition property="quicktest">
- @@ -836,6 +815,9 @@
++@@ -1191,6 +1174,9 @@
 +           <batchtest todir="${test.log.dir}" if="fulltest">
 +             <fileset dir="${test.src.dir}">
 +               <include name="**/*${test.category}Test.java"/>
 ++              <exclude name="**/test/UpgradeTest.java"/>
 ++              <exclude name="**/test/InvalidSnapshotTest.java"/>
 ++              <exclude name="**/VerGenTest.java"/>
 +             </fileset>
 +           </batchtest>
 +           <batchtest todir="${test.log.dir}" if="testcase">
- Index: zookeeper/src/contrib/bookkeeper/build.xml
- ===================================================================
- --- zookeeper.orig/src/contrib/bookkeeper/build.xml	2012-03-21 21:14:35.000000000 +0000
- +++ zookeeper/src/contrib/bookkeeper/build.xml	2012-03-21 21:16:42.916844204 +0000
- @@ -34,7 +34,7 @@
-  
-    <target name="setjarname">
-      <property name="jarname"
- -              value="${build.dir}/zookeeper-${version}-${name}.jar"/>
- +              value="${build.dir}/zookeeper-${name}.jar"/>
-    </target>
-  
-    <target name="init" depends="checkMainCompiled, zookeeperbuildcontrib.init"/>
- Index: zookeeper/src/contrib/build-contrib.xml
- ===================================================================
- --- zookeeper.orig/src/contrib/build-contrib.xml	2012-03-21 21:14:35.000000000 +0000
- +++ zookeeper/src/contrib/build-contrib.xml	2012-03-21 21:16:42.916844204 +0000
- @@ -70,25 +70,14 @@
++--- a/src/contrib/build-contrib.xml
+++++ b/src/contrib/build-contrib.xml
++@@ -70,25 +70,16 @@
 + 
 +   <path id="classpath">
 +     <pathelement location="${build.classes}"/>
 +-    <!-- allow the user to override (e.g. if there are local versions) -->
 +-    <fileset dir="${additional.lib.dir}">
 +-      <include name="${additional.lib.dir.includes}" />
 +-      <exclude name="${additional.lib.dir.excludes}" />
 ++    <fileset dir="/usr/share/java">
 ++      <include name="log4j-1.2.jar" />
 ++      <include name="jline.jar" />
 ++      <include name="xercesImpl.jar" />
 ++      <include name="netty.jar" />
+++      <include name="slf4j-api.jar" />
+++      <include name="slf4j-log4j12.jar" />
 +     </fileset>
 +-    <fileset refid="lib.jars"/>
 ++    <!-- allow the user to override (e.g. if there are local versions) -->
 +     <pathelement location="${zk.root}/build/classes"/>
 +-    <fileset dir="${ivy.lib}">
 +-      <include name="**/*.jar" />
 +-    </fileset>
 +-    <fileset dir="${ivy.test.lib}">
 +-      <include name="**/*.jar" />
 +-    </fileset>
 +-    <fileset dir="${zk.root}/src/java/lib">
 +-      <include name="**/*.jar" />
 +-    </fileset>
 +-    <fileset dir="${ant.home}/lib">
 +-      <include name="ant.jar" />
 +-    </fileset>
 +   </path>
 + 
 +   <!-- ====================================================== -->
- @@ -133,7 +122,7 @@
++@@ -133,7 +124,7 @@
 +   <target name="jar" depends="compile" unless="skip.contrib">
 +     <echo message="contrib: ${name}"/>
 +     <jar
 +-      jarfile="${build.dir}/zookeeper-${version}-${name}.jar"
 ++      jarfile="${build.dir}/zookeeper-${name}.jar"
 +       basedir="${build.classes}"      
 +     />
 +   </target>
- @@ -211,15 +200,9 @@
++@@ -233,15 +224,9 @@
 +   </target>
 + 
 +   <target name="ivy-retrieve" depends="init,ivy-init">
 +-    <ivy:retrieve settingsRef="${ant.project.name}" type="jar" conf="default"
 +-                  pattern="${ivy.lib}/[artifact]-[revision].[ext]"/>
 +-    <ivy:retrieve settingsRef="${ant.project.name}" type="bundle" conf="default"
 +-  				  pattern="${ivy.lib}/[artifact]-[revision].[ext]"/>
 +   </target>
 + 
 +   <target name="ivy-retrieve-test" depends="init,ivy-init">
 +-    <ivy:retrieve settingsRef="${ant.project.name}" type="jar" conf="test"
 +-                  pattern="${ivy.test.lib}/[artifact]-[revision].[ext]"/>
 +   </target>
 + 
 + 
- Index: zookeeper/src/contrib/zooinspector/build.xml
- ===================================================================
- --- zookeeper.orig/src/contrib/zooinspector/build.xml	2012-03-21 21:14:35.000000000 +0000
- +++ zookeeper/src/contrib/zooinspector/build.xml	2012-03-21 21:16:42.920844213 +0000
++--- a/src/contrib/zooinspector/build.xml
+++++ b/src/contrib/zooinspector/build.xml
 +@@ -20,7 +20,7 @@
 + 
 + 
 + 	<target name="setjarname">
 +-		<property name="jarname" value="${build.dir}/zookeeper-${version}-${name}.jar" />
 ++		<property name="jarname" value="${build.dir}/zookeeper-${name}.jar" />
 + 	</target>
 + 
 + 	<target name="init" depends="checkMainCompiled, zookeeperbuildcontrib.init">
 +@@ -41,7 +41,7 @@
 + 			<fileset file="${basedir}/lib/log4j.properties" />
 + 		</copy>
 + 		<copy todir="${build.dir}/lib">
- -			<fileset file="../../../build/zookeeper-3.3.1.jar" />
- +			<fileset file="../../../build/zookeeper-3.3.3.jar" />
++-			<fileset file="../../../build/zookeeper-3.3.0.jar" />
+++			<fileset file="../../../build/zookeeper.jar" />
 + 		</copy>
 + 		<copy todir="${build.dir}">
 + 			<fileset dir="${basedir}" includes="*.*" excludes="build.xml,ivy.xml" />
 +@@ -55,7 +55,6 @@
 + 		<jar jarfile="${jarname}">
 + 			<manifest>
 + 				<attribute name="Main-Class" value="org.apache.zookeeper.inspector.ZooInspector" />
- -				<attribute name="Class-Path" value="lib/log4j-1.2.15.jar lib/TableLayout-20050920.jar lib/zookeeper-3.3.1.jar lib/jToaster-1.0.4.jar lib" />
++-				<attribute name="Class-Path" value="lib/log4j-1.2.15.jar lib/TableLayout-20050920.jar lib/zookeeper-3.3.0.jar lib/jToaster-1.0.4.jar lib" />
 + 				<attribute name="Built-By" value="${user.name}" />
 + 				<attribute name="Built-At" value="${build.time}" />
 + 				<attribute name="Built-On" value="${host.name}" />
diff --cc debian/patches/fixes/ZOOKEEPER-705
index a7b16fa,0000000..ddb4f2a
mode 100644,000000..100644
--- a/debian/patches/fixes/ZOOKEEPER-705
+++ b/debian/patches/fixes/ZOOKEEPER-705
@@@ -1,17 -1,0 +1,15 @@@
- diff --git a/src/c/src/mt_adaptor.c b/src/c/src/mt_adaptor.c
- index 451eff1..2186f47 100644
 +--- a/src/c/src/mt_adaptor.c
 ++++ b/src/c/src/mt_adaptor.c
- @@ -350,11 +350,7 @@ int32_t inc_ref_counter(zhandle_t* zh,int i)
-  int32_t fetch_and_add(volatile int32_t* operand, int incr)
++@@ -484,11 +484,7 @@ int32_t fetch_and_add(volatile int32_t*
 + {
++ #ifndef WIN32
 +     int32_t result;
 +-    asm __volatile__(
 +-         "lock xaddl %0,%1\n"
 +-         : "=r"(result), "=m"(*(int *)operand)
 +-         : "0"(incr)
 +-         : "memory");
 ++    result = __sync_fetch_and_add(operand, incr);
 +    return result;
-  }
-  
++ #else
++     volatile int32_t result;
diff --cc debian/patches/fixes/ZOOKEEPER-770
index 0000000,0000000..00f21ce
new file mode 100644
--- /dev/null
+++ b/debian/patches/fixes/ZOOKEEPER-770
@@@ -1,0 -1,0 +1,76 @@@
++Description: Slow add_auth calls with multi-threaded client
++Origin: https://issues.apache.org/jira/browse/ZOOKEEPER-770
++
++--- a/src/c/tests/TestClient.cc
+++++ b/src/c/tests/TestClient.cc
++@@ -181,6 +181,20 @@ public:
++     }
++ } watchctx_t;
++ 
+++static inline int calculate_interval(const struct timeval *start,
+++         const struct timeval *end)
+++{
+++    int interval;
+++    struct timeval i = *end;
+++    i.tv_sec -= start->tv_sec;
+++    i.tv_usec -= start->tv_usec;
+++    interval = i.tv_sec * 1000 + (i.tv_usec/1000);
+++    return interval;
+++}
+++
+++static timeval completion_timestamp;
+++
+++
++ class Zookeeper_simpleSystem : public CPPUNIT_NS::TestFixture
++ {
++     CPPUNIT_TEST_SUITE(Zookeeper_simpleSystem);
++@@ -420,6 +434,14 @@ public:
++         count++;
++     }
++ 
+++
+++    static void voidCompletionWithTimestamp(int rc, const void *data) {
+++        int tmp = (int) (long) data;
+++        CPPUNIT_ASSERT_EQUAL(tmp, rc);
+++        gettimeofday(&completion_timestamp, 0);
+++        count++;
+++    }
+++
++     static void verifyCreateFails(const char *path, zhandle_t *zk) {
++       CPPUNIT_ASSERT_EQUAL((int)ZBADARGUMENTS, zoo_create(zk,
++           path, "", 0, &ZOO_OPEN_ACL_UNSAFE, 0, 0, 0));
++@@ -507,6 +529,8 @@ public:
++         zhandle_t *zk = createClient(&ctx1);
++         struct ACL_vector nodeAcl;
++         struct ACL acl_val;
+++        struct timeval started;
+++
++         rc = zoo_add_auth(0, "", 0, 0, voidCompletion, (void*)-1);
++         CPPUNIT_ASSERT_EQUAL((int) ZBADARGUMENTS, rc);
++ 
++@@ -540,11 +564,13 @@ public:
++         //create a new client
++         zk = createClient(&ctx2);
++ 
++-        rc = zoo_add_auth(zk, "digest", "pat:passwd2", 11, voidCompletion,
+++        gettimeofday(&started, 0);
+++        rc = zoo_add_auth(zk, "digest", "pat:passwd2", 11, voidCompletionWithTimestamp,
++                           (void*)ZOK);
++         CPPUNIT_ASSERT_EQUAL((int) ZOK, rc);
++         waitForVoidCompletion(3);
++         CPPUNIT_ASSERT(count == 0);
+++        CPPUNIT_ASSERT(calculate_interval(&started, &completion_timestamp) < 2);
++ 
++         char buf[1024];
++         int blen = sizeof(buf);
++--- a/src/c/src/zookeeper.c
+++++ b/src/c/src/zookeeper.c
++@@ -1314,7 +1314,7 @@ static int send_info_packet(zhandle_t *z
++     /* We queued the buffer, so don't free it */
++     close_buffer_oarchive(&oa, 0);
++ 
++-    return rc;
+++    return rc<0 ? rc : adaptor_send_queue(zh, 0);
++ }
++ 
++ /** send all auths, not just the last one **/
diff --cc debian/patches/series
index 1103ef2,0000000..7f1ded5
mode 100644,000000..100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@@ -1,10 -1,0 +1,8 @@@
 +debian/add_jtoaster_source_to_zooinspector
 +debian/patch-build-system
 +debian/disable-cygwin-detection
 +fixes/ZOOKEEPER-705
- fixes/ZOOKEEPER-1033
- fixes/ZOOKEEPER-1374
- fixes/ZOOKEEPER-1403
 +ftbfs-gcc-4.7.diff
- fixes/ZOOKEEPER-1431
++fixes/ZOOKEEPER-770
 +CVE-2016-5017.patch
++CVE-2017-5637.patch
diff --cc debian/python-zookeeper.preinst
index 0000000,0000000..48683c1
new file mode 100644
--- /dev/null
+++ b/debian/python-zookeeper.preinst
@@@ -1,0 -1,0 +1,17 @@@
++#!/bin/sh
++
++set -e
++
++case "$1" in
++  install|upgrade)
++    DOCDIR=/usr/share/doc/python-zookeeper
++
++    if [ -L $DOCDIR ]; then
++      rm $DOCDIR
++    fi
++  ;;
++esac
++
++#DEBHELPER#
++
++exit 0
diff --cc debian/rules
index 4c83aee,0000000..702351e
mode 100755,000000..100755
--- a/debian/rules
+++ b/debian/rules
@@@ -1,127 -1,0 +1,131 @@@
 +#!/usr/bin/make -f
 +
 +export JAVA_HOME=/usr/lib/jvm/default-java
 +
 +PYVERS := $(shell pyversions -vr)
 +DEB_UPSTREAM_VERSION=$(shell dpkg-parsechangelog | sed -rne 's,^Version: ([^+]+).*,\1,p')
 +DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
 +
 +%:
 +	dh $@ --with javahelper --with python2
 +
 +override_dh_auto_build:
 +	# TODO exclude the fatjar contrib from upstream tarball and include the rest contrib
 +	mkdir -p build/test/classes
 +	javacc -OUTPUT_DIRECTORY=src/java/main/org/apache/jute/compiler/generated src/java/main/org/apache/jute/compiler/generated/rcc.jj
 +	# the upstream build file includes .java files in the jars. Let's create the jars ourselves.
 +	# see: https://issues.apache.org/jira/browse/ZOOKEEPER-537
 +	ant -Dversion=$(DEB_UPSTREAM_VERSION) -DlastRevision=-1 javadoc javadoc-dev jar
 +
 +	# Compile C library
 +	cd src/c && autoreconf -i
 +	cd src/c && ./configure --prefix=/usr --libdir=\$${prefix}/lib/$(DEB_HOST_MULTIARCH)
 +	$(MAKE) -C src/c
 +
- 	# Compile contribs - bookkeeper
- 	cd src/contrib && ant -Dversion=$(DEB_UPSTREAM_VERSION) -DlastRevision=-1 -Ddest.dir=../../build/zookeeper -Divy.jar.exists=true -Divy.initialized=true -Dcontribfilesetincludes="bookkeeper/build.xml"
 +	# Compile contribs - zooinspector
- 	cd src/contrib && ant -Dversion=$(DEB_UPSTREAM_VERSION) -DlastRevision=-1 -Ddest.dir=../../build/zookeeper -Divy.jar.exists=true -Divy.initialized=true -Dcontribfilesetincludes="zooinspector/build.xml"
++	cd src/contrib && \
++		ant -Dversion=$(DEB_UPSTREAM_VERSION) \
++			-propertyfile ../../debian/ant.properties \
++			-Dcontribfilesetincludes="zooinspector/build.xml"
 +
 +	# Build Python Bindings
 +	cd src/contrib/zkpython && \
 +	  for pv in $(PYVERS); do \
 +	    python$$pv src/python/setup.py build --build-base=$(CURDIR)/build ;\
 +	  done
 +
 +	# Compile zktreeutil and generate man page
 +	cd src/contrib/zktreeutil && autoreconf -if && ./configure --libdir=\$${prefix}/lib/$(DEB_HOST_MULTIARCH) && make
 +	LD_LIBRARY_PATH=src/c/.libs help2man -N --version-string=0.0 src/contrib/zktreeutil/src/zktreeutil >zktreeutil.man
 +
 +override_dh_install:
 +	$(MAKE) -C src/c install DESTDIR=$(CURDIR)/debian/tmp
 +	cd src/contrib/zkpython && \
 +	  for pv in $(PYVERS); do \
 +	    python$$pv src/python/setup.py build --build-base=$(CURDIR)/build \
 +	               install --root=$(CURDIR)/debian/tmp --install-layout=deb ;\
 +	  done
 +	# Generate install files for Multiarch capability
 +	for install in libzookeeper-mt2 libzookeeper-st2 \
 +				   libzookeeper-st-dev libzookeeper-mt-dev; do \
 +		sed -e 's/__ARCH__/$(DEB_HOST_MULTIARCH)/g' debian/$$install.install.in \
 +			> debian/$$install.install; \
 +	done
 +	dh_install
 +
 +ifeq (,$(findstring nocheck, $(DEB_BUILD_OPTIONS)))
++# Limit architectures which execute tests as some
++# non x86 archs can be a bit racey.
++TEST_ARCH=i386 amd64
++ifneq (,$(findstring $(DEB_BUILD_ARCH), $(TEST_ARCH)))
++TEST_JARS=jline log4j-1.2 xercesImpl xmlParserAPIs netty slf4j-api slf4j-log4j12
 +override_dh_auto_test-arch:
- 
++	# C testing starts/stops zookeeper
++	# this ensures that all the right classes are found
++	for jar in $(TEST_JARS); do \
++		ln -sf /usr/share/java/$$jar.jar build/lib/$$jar.jar; \
++	done;
++	# Execute multi-threaded test suite
++	# Disable on Ubuntu and Debian due to glibc 2.17 incompatibility
++	# https://issues.apache.org/jira/browse/ZOOKEEPER-1646
++	if ! dpkg-vendor --derives-from debian; then \
++		$(MAKE) -C src/c zktest-mt; \
++		cd src/c && ./zktest-mt; \
++	fi;
++endif
 +# Only run core Java unit tests on i386 architecture as this is the arch
 +# that they are built and published on - works around -indep not working
 +# in Ubuntu.
 +ifeq (i386, $(DEB_BUILD_ARCH))
 +override_dh_auto_test-indep:
++	# Run core Java test suite against zookeeper
++	ant -Dversion=$(DEB_UPSTREAM_VERSION) -DlastRevision=-1 test-core-java
 +endif
 +endif
 +
 +override_dh_clean:
 +	dh_clean --exclude=src/java \
 +             --exclude=src/docs \
 +             --exclude=src/c \
 +             --exclude=src/reciped
 +	jh_clean
- 	rm -rf debian/*.upstart
 +	# Clean generated install files
 +	for install in libzookeeper-mt2 libzookeeper-st2 \
 +				   libzookeeper-st-dev libzookeeper-mt-dev; do \
 +		[ ! -f debian/$$install.install ] || rm debian/$$install.install; \
 +	done
 +
 +# the original build.xml deletes too much
 +override_dh_auto_clean:
 +	dh_testdir
 +	rm -rf .revision
 +	rm -rf build
 +	rm -rf src/c/generated
 +	rm -rf src/java/generated
 +	rm -rf src/java/main/org/apache/jute/compiler/generated/*.java
 +	rm -f zookeeper*.jar
 +	[ ! -f src/c/Makefile ] || $(MAKE) -C src/c distclean
 +	rm -f src/c/config.log src/c/config.status
 +	[ ! -f src/contrib/zktreeutil/Makefile ] || $(MAKE) -C src/contrib/zktreeutil distclean
 +	rm -rf src/contrib/zktreeutil/autom4te.cache
 +	rm -rf src/contrib/zktreeutil/Makefile.in
 +	rm -rf src/contrib/zktreeutil/aclocal.m4
 +	rm -rf src/contrib/zktreeutil/config.h.in
 +	rm -rf src/contrib/zktreeutil/configure
 +	rm -rf src/contrib/zktreeutil/depcomp
 +	rm -rf src/contrib/zktreeutil/install-sh
 +	rm -rf src/contrib/zktreeutil/missing
 +	rm -rf src/contrib/zktreeutil/src/Makefile.in
 +	rm -rf zktreeutil.man
 +	rm -rf src/c/Makefile.in
 +	rm -rf src/c/aclocal.m4
 +	rm -rf src/c/autom4te.cache
 +	rm -rf src/c/compile
 +	rm -rf src/c/config.guess
 +	rm -rf src/c/config.sub
 +	rm -rf src/c/configure
 +	rm -rf src/c/ltmain.sh
 +	rm -rf src/c/TEST-*
 +
- ifeq (,$(findstring nodocs, $(DEB_BUILD_OPTIONS)))
- override_dh_installdocs:
- 	dh_installdocs --link-doc=libzookeeper-java \
- 	  -plibzookeeper-java -pzookeeper -pzookeeperd -plibzookeeper-java-doc
- 	dh_installdocs --link-doc=libzookeeper-mt2 \
- 	  -plibzookeeper-mt2 -plibzookeeper-mt-dev -pzookeeper-bin \
-       -ppython-zookeeper -plibzookeeper2
- 	dh_installdocs --link-doc=libzookeeper-st2 \
- 	  -plibzookeeper-st2 -plibzookeeper-st-dev
- endif
- 
- # Install init script for Debian and upstart for Ubuntu
 +override_dh_installinit:
- 	if dpkg-vendor --derives-from ubuntu ; then \
- 		cp debian/zookeeperd.upstart.in debian/zookeeperd.upstart ; \
- 	fi
 +	dh_installinit -d
diff --cc debian/upstream/signing-key.asc
index 0000000,0000000..ea1d463
new file mode 100644
--- /dev/null
+++ b/debian/upstream/signing-key.asc
@@@ -1,0 -1,0 +1,213 @@@
++pub   1024D/68E327C1 2008-10-22
++      Key fingerprint = D0BC 8D8A 4E90 A40A FDFC  43B3 E22A 746A 68E3 27C1
++uid                  Patrick Hunt (ZooKeeper release signing key) <phunt at apache.org>
++sub   2048g/279C600D 2008-10-22
++
++-----BEGIN PGP PUBLIC KEY BLOCK-----
++Version: GnuPG v1.4.6 (GNU/Linux)
++
++mQGiBEj+sa8RBACfP1oQOrzoIH+vaGFOR0hUNQ1tVFn8u8p0MJLtAzx3C3fXuLAQ
++lTAviPR5LpsVfnZtil/ysp8o5wlHPUrMDHwcrtDonxe404FaTclHfKcRhGE8T4wL
++9BvplKe04kT5E6vzyfuU9+Vza6SdVU8ZPd79CK/UNr2JpQ7x/NdXKupptwCg3B/Y
++Sxzze9vjlV1Xq9wNx2+Dc6MD/2Sm7u41EfTfq6v7NdXg9DY6+NBN95D+VBCjXr+T
++8ZnUTvXJN2KeLYFf5ozdtjfj0u+rlj57/bEpcEqBAoIy37cFakmI3aiNjP3RXqLx
++LrAgZVwUAHAN5kIPrVd4ZQ8OZyshH5WtSViWs/NQj4CerXQe3XmGEqU//iaAeFgv
++8ZgMA/0YlDS95tzEfhS/3LYhKUgsi+pxLhFv/h1oTF4HRIL4syzhJGe2Hwwy4/rT
++p1BdlOhatc4AjTDjjSx8R1sQaCu3jeWfz75CqbIJPcnu1dh1UDa+2EK/ykfQoNzN
++bmc+fttw/0McWhl0eBsI/0vg9yMkVIlUQwgn0qeruKcQBbqeqbQ/UGF0cmljayBI
++dW50IChab29LZWVwZXIgcmVsZWFzZSBzaWduaW5nIGtleSkgPHBodW50QGFwYWNo
++ZS5vcmc+iGAEExECACAFAkj+sa8CGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK
++CRDiKnRqaOMnwWYCAJ46DnpkBAYwgJW56dgnQc7VAOwmJgCgxb+Zo0kznrRKh+xw
++8fr+ZdqI/OW5Ag0ESP6xuhAIAKcqHEC9Orkl7qNBbSlECLZ8cuaSv7zZvIeE0DaD
++XwfspY0vNrE7RDBOcWPVttWZzYLssMquxodAXhFJQ7k4ETIM1D0cp9J7lFr+rAxq
++1ybhPNukJPOIKcmXGS9wr/oWbsonF8CsY2DX3hCSQqeL1qsLgNP/FA+1Bawhpz7P
++HpZqgu3qBNUNbShFTadXw/L7ru19/BlPaI4p0UFhbbf01XKd4kR5sdAxHWCkOvY1
++U4JAwty84xLQ1fU4Xc65u6Y/EpNq4dosJjfPEzxAFVZLhBNdarX0b8u/tJI138tn
++pGCSBvWNsdJX8zClmK1KDLf1ksWYbMagStuBbOzG4wBmjPcABAsH/1u4u32PgQ39
++3aqh5WT6lxjO3Dggc0BrtaSmxsoKPrisgiVIRS/C7XEK98T7832y8LUX0xAoRT6q
++Jyg+rvDc6PFt8Jde2j+q2UCCq68xO+Qad576BpKK448YHPo5PjjisgpXbp1AB4G7
++UrA4aW1fA+kqVOL1EebnWBmG37zgCntYnOwJJT/MT+shC4mM1u9lXfyV8JPqnYWY
++R7Hjq90bavKBUO0vA5s/791SceT1rBqgtNOSPA41A3Q38iBnGeo2Dh2kQdAZ8a5g
++fsEYQ/ZPhlxRkxhjfTCvWUbkh0b1fO5ZOZbeag+fR/GBI4SQmClRpD/66VhAzERL
++y9NfusDU8p+ISQQYEQIACQUCSP6xugIbDAAKCRDiKnRqaOMnwRPAAJkBcxNG0qZt
++ahF/8VAEXFBkiASz8QCeImay/25M8xvX/VmqMj1Vq88cUUU=
++=HKV3
++-----END PGP PUBLIC KEY BLOCK-----
++pub   4096R/6E1CC7A4 2011-02-18
++      Key fingerprint = 4E27 888E 5533 32EE AE6B  56FB 7C94 7626 6E1C C7A4
++uid                  Benjamin Reed (CODE SIGNING KEY) <breed at apache.org>
++sig 3        6E1CC7A4 2011-02-18  Benjamin Reed (CODE SIGNING KEY) <breed at apache.org>
++sub   4096R/B9E5AE9D 2011-02-18
++sig          6E1CC7A4 2011-02-18  Benjamin Reed (CODE SIGNING KEY) <breed at apache.org>
++
++-----BEGIN PGP PUBLIC KEY BLOCK-----
++Version: GnuPG v2.0.14 (GNU/Linux)
++
++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
++GNW5Gn4c4eIbDJKr2cuUwBlC
++=HUbN
++-----END PGP PUBLIC KEY BLOCK-----
++
++pub   4096R/8EE2F25C 2011-10-24
++      Key fingerprint = B6B3 F7ED A5BA 7D1E 827D  E518 0DFF 492D 8EE2 F25C
++uid                  Mahadev Konar (CODE SIGNING KEY) <mahadev at apache.org>
++sub   4096R/1F35DF4C 2011-10-24
++
++-----BEGIN PGP PUBLIC KEY BLOCK-----
++Version: GnuPG v2.0.16 (Darwin)
++
++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
++7kmI6Gh95bLf1om+Bc8ajpm9Zsw=
++=fnga
++-----END PGP PUBLIC KEY BLOCK-----
++
++pub   4096R/D2C80E32 2014-02-19
++      Key fingerprint = 1D3D 275F 61D8 E2B5 89C1  9FD0 93FB 0254 D2C8 0E32
++uid                  Flavio Junqueira (CODE SIGNING KEY) <fpj at apache.org>
++sig 3        D2C80E32 2014-02-19  Flavio Junqueira (CODE SIGNING KEY) <fpj at apache.org>
++sub   4096R/67413EBA 2014-02-19
++sig          D2C80E32 2014-02-19  Flavio Junqueira (CODE SIGNING KEY) <fpj at apache.org>
++
++-----BEGIN PGP PUBLIC KEY BLOCK-----
++Version: GnuPG v1.4.11 (GNU/Linux)
++
++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
++4/waU7vahotkc5P5ih1Z0E+U4Q==
++=Gtjp
++-----END PGP PUBLIC KEY BLOCK-----
++
diff --cc debian/watch
index 1ea1a0e,0000000..90205e4
mode 100644,000000..100644
--- a/debian/watch
+++ b/debian/watch
@@@ -1,4 -1,0 +1,4 @@@
 +version=3
- opts=dversionmangle=s/\+dfsg\d+$// \
-   http://www.apache.org/dist/zookeeper/stable/zookeeper-([0-9.]+).tar.gz \
-   debian
++opts=dversionmangle=s/\+dfsg\d+$//,pgpsigurlmangle=s/$/.asc/ \
++  http://www.eu.apache.org/dist/zookeeper/stable/zookeeper-([0-9.]+).tar.gz \
++  debian debian/orig-tar.sh
diff --cc debian/zooinspector
index f441446,0000000..8819c0f
mode 100644,000000..100755
--- a/debian/zooinspector
+++ b/debian/zooinspector
@@@ -1,8 -1,0 +1,8 @@@
 +#!/bin/sh
 +
- CLASSPATH=/usr/share/java/log4j-1.2.jar:/usr/share/java/zookeeper.jar:/usr/share/zookeeper/zooinspector/zookeeper-ZooInspector.jar
++CLASSPATH=/usr/share/java/log4j-1.2.jar:/usr/share/java/slf4j-api.jar:/usr/share/java/slf4j-simple.jar:/usr/share/java/zookeeper.jar:/usr/share/zookeeper/zooinspector/zookeeper-ZooInspector.jar
 +
 +# We have to cd to this dir so that the icons are found
 +cd /usr/share/zookeeper/zooinspector
 +
 +java -cp $CLASSPATH org.apache.zookeeper.inspector.ZooInspector
diff --cc debian/zookeeper-bin.preinst
index 0000000,0000000..93825ba
new file mode 100644
--- /dev/null
+++ b/debian/zookeeper-bin.preinst
@@@ -1,0 -1,0 +1,17 @@@
++#!/bin/sh
++
++set -e
++
++case "$1" in
++  install|upgrade)
++    DOCDIR=/usr/share/doc/zookeeper-bin
++
++    if [ -L $DOCDIR ]; then
++      rm $DOCDIR
++    fi
++  ;;
++esac
++
++#DEBHELPER#
++
++exit 0
diff --cc debian/zookeeper.install
index c49ece4,0000000..d7f100a
mode 100644,000000..100644
--- a/debian/zookeeper.install
+++ b/debian/zookeeper.install
@@@ -1,9 -1,0 +1,8 @@@
 +bin/zkCleanup.sh /usr/share/zookeeper/bin/
 +bin/zkCli.sh /usr/share/zookeeper/bin/
 +bin/zkServer.sh /usr/share/zookeeper/bin/
 +build/contrib/ZooInspector/zookeeper-ZooInspector.jar /usr/share/zookeeper/zooinspector
- debian/bin/zkPurgeTxnLog.sh /usr/share/zookeeper/bin/
 +debian/conf_example /etc/zookeeper/
 +debian/zooinspector /usr/bin
 +src/contrib/zooinspector/config/* /etc/zookeeper/zooinspector
 +src/contrib/zooinspector/icons /usr/share/zookeeper/zooinspector
diff --cc debian/zookeeper.preinst
index 0000000,0000000..0cad073
new file mode 100644
--- /dev/null
+++ b/debian/zookeeper.preinst
@@@ -1,0 -1,0 +1,17 @@@
++#!/bin/sh
++
++set -e
++
++case "$1" in
++  install|upgrade)
++    DOCDIR=/usr/share/doc/zookeeper
++
++    if [ -L $DOCDIR ]; then
++      rm $DOCDIR
++    fi
++  ;;
++esac
++
++#DEBHELPER#
++
++exit 0
diff --cc debian/zookeeperd.preinst
index 0000000,0000000..cab4043
new file mode 100644
--- /dev/null
+++ b/debian/zookeeperd.preinst
@@@ -1,0 -1,0 +1,17 @@@
++#!/bin/sh
++
++set -e
++
++case "$1" in
++  install|upgrade)
++    DOCDIR=/usr/share/doc/zookeeperd
++
++    if [ -L $DOCDIR ]; then
++      rm $DOCDIR
++    fi
++  ;;
++esac
++
++#DEBHELPER#
++
++exit 0
diff --cc debian/zookeeperd.upstart
index 167ae02,0000000..167ae02
mode 100644,000000..100644
--- a/debian/zookeeperd.upstart
+++ b/debian/zookeeperd.upstart

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/zookeeper.git



More information about the pkg-java-commits mailing list