=========================================================================
==  Release Notes for ActiveMQ CPP 3.9.0                               ==
=========================================================================

Bug

    [AMQCPP-510] - Consumer leaks memory with failover and checkForDuplicates=true
    [AMQCPP-513] - On closing a connection, ActiveMQ crashes
    [AMQCPP-514] - ActiveMQBytesMessage destruction may cause unhandle exception
    [AMQCPP-515] - Stomp frame mishandled duplicate headers
    [AMQCPP-516] - Don't fire transport interrupted event when no resume is possuble
    [AMQCPP-518] - dispatch paused, waiting for outstanding dispatch interruption processing to complete..
    [AMQCPP-520] - AMQ crashes when an exception comes during the connection closure
    [AMQCPP-525] - C++ client hangs when using the failover transport to connect to a network of brokers
    [AMQCPP-527] - ConcurrentStlMap - stl map find crash with empty map
    [AMQCPP-529] - Crash in Threads due to small stack size (set to 32768 bytes)
    [AMQCPP-530] - SSL does not find hostname in cert with multiple cn's in dn
    [AMQCPP-532] - Frequently deleting queue browser causes access violation
    [AMQCPP-533] - Memory leak in StompWireFormat.cpp
    [AMQCPP-534] - Closing connection with setTransportListener to NULL may cause core dump
    [AMQCPP-538] - Catch exception by value in FailoverTransport
    [AMQCPP-539] - Can't build GIT master on MSVC
    [AMQCPP-540] - Ambiguous usage of Math::min in AbstractDiscoveryAgent.cpp
    [AMQCPP-546] - ConnetionAudit should be thread safe
    [AMQCPP-547] - activemq::core::ConnectionAudit::isDuplicate is not thread safe
    [AMQCPP-549] - Potential memory leak in consumer when delivering delayed ack.
    [AMQCPP-550] - CMS (C++ client) crashed if getLocalHost failed
    [AMQCPP-551] - EOFException when sending char in MapMessage between Java and C++
    [AMQCPP-552] - Honor RedeliveryPolicy for message redelivered by the Broker.
    [AMQCPP-553] - Deadlock and memory leak under stress
    [AMQCPP-554] - Consumer close with INDIVIDUAL_ACKNOWLEDGE and dispatched messages doesn't rollback
    [AMQCPP-556] - setMessageListener on active session may leads to deadlock
    [AMQCPP-558] - Port fix for AMQ-5513
    [AMQCPP-566] - Potential spin in SecureRandomImpl if /dev/urandom does not exist
    [AMQCPP-567] - activemq-cpp.pc contains wrong package name for APR
    [AMQCPP-568] - CMS FailoverTransport Leaks Socket Descriptors with secondary backup
    [AMQCPP-569] - thread creation leak with failover transport after disconnect
    [AMQCPP-571] - Unacknowledged messages dissappear from broker if session/consumer is closed and then re-created
    [AMQCPP-572] - activemq-cmstemplate-stressor.vcproj missing
    [AMQCPP-577] - Transacted processing stops working correctly after failover
    [AMQCPP-578] - Port fix for AMQ-5089 to C++
    [AMQCPP-579] - Disable message priority reordering on client by default
    [AMQCPP-581] - Pull consumer can hang in receive if RedeliveryPolicy is configured with max redeliveries
    [AMQCPP-582] - Pull consumer hang when message expires in flight.

Improvement

    [AMQCPP-509] - Support for AlwaysSessionAsync in AMQ CMS CPP library
    [AMQCPP-512] - Update to support openwire v10
    [AMQCPP-545] - Failover transport timeout options should only operate on Message sends.
    [AMQCPP-548] - Too many temporary std::string in Mutex and decaf::lang::Integer::toString(int)
    [AMQCPP-562] - Reduce memory delete and allocation in ArrayList
    [AMQCPP-564] - OS thread handles are kept forever
    [AMQCPP-573] - Update OpenWire support to v11
    [AMQCPP-576] - QueueBrowser should not check for expired messages

New Feature

    [AMQCPP-543] - message producer send never blocking when using producer flow control
    [AMQCPP-575] - Add support for disable of expiration checks in MessageConsumer
    [AMQCPP-580] - Add property maximumRedeliveryDelay in RedeliveryPolicy

=========================================================================
==  Release Notes for ActiveMQ CPP 3.8.4                               ==
=========================================================================

Bug

    [AMQCPP-534] - Closing connection with setTransportListener to NULL may cause core dump
    [AMQCPP-549] - Potential memory leak in consumer when delivering delayed ack.
    [AMQCPP-550] - CMS (C++ client) crashed if getLocalHost failed
    [AMQCPP-551] - EOFException when sending char in MapMessage between Java and C++
    [AMQCPP-556] - setMessageListener on active session may leads to deadlock
    [AMQCPP-558] - Port fix for AMQ-5513

Improvement

    [AMQCPP-548] - Too many temporary std::string in Mutex and decaf::lang::Integer::toString(int)
    [AMQCPP-562] - Reduce memory delete and allocation in ArrayList

=========================================================================
==  Release Notes for ActiveMQ CPP 3.8.3                               ==
=========================================================================

Bug

    [AMQCPP-527] - ConcurrentStlMap - stl map find crash with empty map
    [AMQCPP-529] - Crash in Threads due to small stack size (set to 32768 bytes)
    [AMQCPP-530] - SSL does not find hostname in cert with multiple cn's in dn
    [AMQCPP-533] - Memory leak in StompWireFormat.cpp
    [AMQCPP-538] - Catch exception by value in FailoverTransport
    [AMQCPP-546] - ConnetionAudit should be thread safe
    [AMQCPP-547] - activemq::core::ConnectionAudit::isDuplicate is not thread safe

Improvement

    [AMQCPP-545] - Failover transport timeout options should only operate on Message sends.

=========================================================================
==  Release Notes for ActiveMQ CPP 3.8.2                               ==
=========================================================================

Bug

    [AMQCPP-514] - ActiveMQBytesMessage destruction may cause unhandled exception
    [AMQCPP-515] - Stomp frame mishandled duplicate headers
    [AMQCPP-516] - Don't fire transport interrupted event when no resume is possible
    [AMQCPP-520] - AMQ crashes when an exception comes during the connection closure
    [AMQCPP-525] - C++ client hangs when using the failover transport to connect to a network of brokers

=========================================================================
==  Release Notes for ActiveMQ CPP 3.8.1                               ==
=========================================================================

Bug

    [AMQCPP-510] - Consumer leaks memory with failover and checkForDuplicates=true

=========================================================================
==  Release Notes for ActiveMQ CPP 3.8.0                               ==
=========================================================================

Bug

    [AMQCPP-483] - 3.7.0 does not compile with gcc-4.4.7 on CentOS-6
    [AMQCPP-484] - Can't connect via Stomp to Apollo broker - ActiveMq-Cpp version: 3.7.0
    [AMQCPP-485] - APR-Util header include missed in latest release.
    [AMQCPP-487] - CMS FailoverTransport Leaks Socket Descriptors
    [AMQCPP-488] - closing a connection stalled in start because of failover should stop the transport safely.
    [AMQCPP-489] - Compilation Error Fix for Sun Studio under Solaris 10
    [AMQCPP-490] - Exception lifetime confusion can cause the application to crash
    [AMQCPP-491] - Connection didn't switch to the slave broker when the master broker is down
    [AMQCPP-494] - Commiting a session with a deleted consumer causes access violation
    [AMQCPP-497] - Compilation of 3.7.0 fails for Linux systems (Redhat 5.8 and SuSE SLES 10)
    [AMQCPP-498] - Client doesn't work on Linux Red Hat 6.4 systems, fails when setting thread priority
    [AMQCPP-501] - Consumers remain active after being deleted
    [AMQCPP-505] - For SSL connections ensure the SNI field is set.
    [AMQCPP-506] - Exception "attempt to unlock read lock, not locked by current thread" when doing
                   performance testing

New Feature

    [AMQCPP-502] - Can't send to temporary queues created by name
    [AMQCPP-508] - Add DestinationSource interfaces in CMS and provide an ActiveMQ implementation

Task

    [AMQCPP-507] - Add new Visual Studio 2010 Project files

=========================================================================
==  Release Notes for ActiveMQ CPP 3.7.1                               ==
=========================================================================

Bug

    [AMQCPP-483] - 3.7.0 does not compile with gcc-4.4.7 on CentOS-6
    [AMQCPP-484] - Can't connect via Stomp to Apollo broker - ActiveMq-Cpp version: 3.7.0
    [AMQCPP-485] - APR-Util header include missed in latest release.
    [AMQCPP-487] - CMS FailoverTransport Leaks Socket Descriptors
    [AMQCPP-488] - closing a connection stalled in start because of failover should stop
                   the transport safely.
    [AMQCPP-489] - Fix for Sun Studio
    [AMQCPP-490] - Exception lifetime confusion can cause the application to crash
    [AMQCPP-491] - Connection didn't switch to the slave broker when the master broker is down
    [AMQCPP-494] - Commiting a session with a deleted consumer causes access violation
    [AMQCPP-497] - Compilation of 3.7.0 fails for Linux systems (Redhat 5.8 and SuSE SLES 10)
    [AMQCPP-498] - Client doesn't work on Linux Red Hat 6.4 systems, fails when setting thread priority

=========================================================================
==  Release Notes for ActiveMQ CPP 3.7.0                               ==
=========================================================================

Bug

    [AMQCPP-470] - ConnectionStateTracker needs to enforce message cache size restrictions
    [AMQCPP-474] - On closing a connection, ActiveMQ raises the exception: StlMap modified
                   outside this iterator
    [AMQCPP-475] - Fix for Atomics Helper for Solaris 10
    [AMQCPP-476] - Reading of Stomp Frame with content length may throw exception
    [AMQCPP-482] - Message.getCMSMessageID() returns an empty string after send

Improvement

    [AMQCPP-469] - Remove linkage to APR-Util
    [AMQCPP-471] - Add support for Optimize Acknowledge
    [AMQCPP-472] - Add support for Non-Blocking redelivery.
    [AMQCPP-473] - Add some additional configuration options for URI support

New Feature

    [AMQCPP-367] - failover: receiving duplicate messages after a broker restart
    [AMQCPP-479] - Add support for priority backups to failover transport.
    [AMQCPP-480] - Add complete support for Update Cluster clients and rebalancing
                   to Failover Transport.

=========================================================================
==  Release Notes for ActiveMQ CPP 3.6.0                               ==
=========================================================================

Bug

    [AMQCPP-449] - activemq::library::ActiveMQCPP::shutdownLibrary(); causing runtime exception
    [AMQCPP-450] - Win32 Thread Handle Leak
    [AMQCPP-451] - The number of CMS threads increases when we restart the message broker repeatedly
    [AMQCPP-454] - Found pure function call error in CMS
    [AMQCPP-455] - Found an access violation in CMS when creating a new connection
    [AMQCPP-456] - Add ability to set updateURIsSupported for failover transport
    [AMQCPP-459] - Found an access violation in NodePool::ReturNode(Node* node)
    [AMQCPP-460] - Access Violation
    [AMQCPP-461] - Create Thread objects that aren't started can leak their suspended thread on destroy.
    [AMQCPP-464] - Deadlock during normal task termination
    [AMQCPP-465] - Periodic access violation originating from Openwire::unmarshal
    [AMQCPP-466] - Segmentation Fault in Temporary Queue consumer (incorrect Exception construction)

Improvement

    [AMQCPP-457] - Refactor Transports layer for more control over started / stopped state during initialization
    [AMQCPP-467] - Improve the CMSException types thrown from errors sent back from the broker.

New Feature

    [AMQCPP-463] - Add support for priority backups to the FailoverTransport

=========================================================================
==  Release Notes for ActiveMQ CPP 3.5.0                               ==
=========================================================================

Bug

    [AMQCPP-369] - dynamic library segfaults on load under Mac OS/X
    [AMQCPP-370] - pkg-config does not properly indicate static dependencies
    [AMQCPP-371] - bytesmessages's size doubled If Message body compression enabled
    [AMQCPP-373] - AMQ_CATCH_RETHROW upcasts the re-thrown exception
    [AMQCPP-374] - BaseDataStreamMarshaller::tightUnmarshalByteArray crashes
    [AMQCPP-375] - decaf::lang::Long::to{Hex,Binary,Octal}String problems
    [AMQCPP-376] - Deadlock in IOTransport when network of brokers restart and failover is used.
    [AMQCPP-382] - Spurious error messages printed by consumer when no messages available to consumer
    [AMQCPP-384] - Failover and prefetch=0 can result in hung consumers if the MessagePull command is lost
    [AMQCPP-385] - Compilation errors with Sun Studio 12 / libCstd
    [AMQCPP-387] - Credentials are not propagated correctly when passed through the ActiveMQConnectionFactory constructor in the CPP client API (However, it works correctly when passed through the createConnection method)
    [AMQCPP-389] - activemq-cpp build fails with gcc 4.7
    [AMQCPP-391] - Potential hang on connect if wireformatinfo response is not received before timeout and failover transport is in use.
    [AMQCPP-392] - Class Priority Queue defines constant in non-spec complaint manner
    [AMQCPP-393] - TimeToLive feature makes some messages disappear
    [AMQCPP-402] - Fix ConnectionStateTracker processMessageAck
    [AMQCPP-405] - CMS sender thread hangs after restarting broker
    [AMQCPP-406] - TcpTransport can leak memory if the connect method fails midway through
    [AMQCPP-407] - Application crashes after stopping message broker
    [AMQCPP-410] - prefetchSize=0 is ignored when set via PrefetchPolicy
    [AMQCPP-414] - Remove bundled zlib and using external library
    [AMQCPP-415] - compiler flags with HPUX 11_31 aCC A.06.26
    [AMQCPP-416] - help wrong for configure
    [AMQCPP-417] - decaf/lang/System.cpp error with HPUX aCC
    [AMQCPP-418] - HPUX aCC compiler const char[] to initialize char*
    [AMQCPP-419] - Missing dependency on apr/apr-util in pkg-config and config files
    [AMQCPP-420] - The same fix should have been applied to SSLTransportFactory.cpp
    [AMQCPP-424] - Cannot clone() and then update properties of the newly cloned message
    [AMQCPP-426] - Connection setClientID doesn't catch and convert all exceptions to CMSException
    [AMQCPP-429] - Response correlator can let a future into its mapping after its been closed causing a hang
    [AMQCPP-430] - CMS crashes in decaf::internal::util::concurrent::MutexImpl::destroy
    [AMQCPP-431] - Memory leak possible in OpenWireFormat and BaseDataStreamMarshaller when connection drops during read.
    [AMQCPP-432] - Possible Segfault on Connection close during a failover cycle
    [AMQCPP-433] - Message::getCMSCorrelationID() returns different value from Java's Message.getJMSCorrelationID()
    [AMQCPP-437] - ActiveMQ crashes on subscribing one listener on several topics with a same session.
    [AMQCPP-441] - Incorrect propagation of AMQ-2489 to CMS/C++ (causes performance degradation) in r833769.
    [AMQCPP-443] - Configure adding invalid option
    [AMQCPP-445] - Prefetch_size = 0 and failover: consumer blocked in receive() when broker restarts

Improvement

    [AMQCPP-383] - Implement the Session recover method.
    [AMQCPP-386] - Run-time Setting of Destination Prefix
    [AMQCPP-395] - Add advisory message monitoring for Temp Destination create / destory
    [AMQCPP-396] - Add method reset() to the cms::StreamMessage interface.
    [AMQCPP-397] - Add utility class for working with Advisory Topics
    [AMQCPP-398] - Add support for transforming cms::Message and cms::Destination from non activemq client implementations.
    [AMQCPP-399] - Add support for closing Session consumers with active transaction
    [AMQCPP-400] - Add new accessor in CMS Message types to get the type of a Property value or MapMessage value
    [AMQCPP-401] - Add get and set methods for ObjectMessage that grants access to the payload as bytes.
    [AMQCPP-435] - Support doing non-blocking sends that uses an async callback that gets notified when the send has been received by the broker
    [AMQCPP-436] - Add MessageAvailableListener to CMS API

New Feature

    [AMQCPP-160] - Add MessageTransformer
    [AMQCPP-411] - Add new get method in StreamMessage to allow for checking the type of the next value

=========================================================================
==  Release Notes for ActiveMQ CPP 3.4.5                               ==
=========================================================================

Bug

    [AMQCPP-426] - Connection setClientID doesn't catch and convert all exceptions to CMSException
    [AMQCPP-429] - Response correlator can let a future into its mapping after its been closed causing a hang
    [AMQCPP-430] - CMS crashes in decaf::internal::util::concurrent::MutexImpl::destroy
    [AMQCPP-431] - Memory leak possible in OpenWireFormat and BaseDataStreamMarshaller when connection
                   drops during read.
    [AMQCPP-432] - Possible Segfault on Connection close during a failover cycle
    [AMQCPP-433] - Message::getCMSCorrelationID() returns different value from Java's Message.
                   getJMSCorrelationID()

=========================================================================
==  Release Notes for ActiveMQ CPP 3.4.4                               ==
=========================================================================

Bug

    [AMQCPP-404] - compilation errors on Windows because of Unicode set in project file
    [AMQCPP-407] - Application crashes after stopping message broker
    [AMQCPP-408] - CMS opens a large number of threads
    [AMQCPP-410] - prefetchSize=0 is ignored when set via PrefetchPolicy

=========================================================================
==  Release Notes for ActiveMQ CPP 3.4.3                               ==
=========================================================================

Bug

    [AMQCPP-402] - Fix ConnectionStateTracker processMessageAck
    [AMQCPP-403] - Possible for memory to leak when using transacted producer with failover
    [AMQCPP-406] - TcpTransport can leak memory if the connect method fails midway through

=========================================================================
==  Release Notes for ActiveMQ CPP 3.4.2                               ==
=========================================================================

Bug

    [AMQCPP-387] - Credentials are not propagated correctly when passed through the
                   ActiveMQConnectionFactory constructor in the CPP client API (However,
                   it works correctly when passed through the createConnection method)
    [AMQCPP-391] - Potential hang on connect if wireformatinfo response is not received
                   before timeout and failover transport is in use.
    [AMQCPP-392] - Class Priority Queue defines constant in non-spec complaint manner
    [AMQCPP-393] - TimeToLive feature makes some messages disappear

=========================================================================
==  Release Notes for ActiveMQ CPP 3.4.1                               ==
=========================================================================

Bug

    [AMQCPP-369] - dynamic library segfaults on load under Mac OS/X
    [AMQCPP-370] - pkg-config does not properly indicate static dependencies
    [AMQCPP-371] - bytesmessages's size doubled If Message body compression enabled
    [AMQCPP-373] - AMQ_CATCH_RETHROW upcasts the re-thrown exception
    [AMQCPP-374] - BaseDataStreamMarshaller::tightUnmarshalByteArray crashes
    [AMQCPP-382] - Spurious error messages printed by consumer when no messages
                   available to consumer

Improvement

    [AMQCPP-383] - Implement the Session recover method.

=========================================================================
==  Release Notes for ActiveMQ CPP 3.4.0                               ==
=========================================================================

Bug:

    * [AMQCPP-363] - failover: consumer does not always restart properly after reconnect
    * [AMQCPP-365] - 3.3.0 - compiler errors in Windows
    * [AMQCPP-366] - createConnection() fails if given an ip address

Improvement

    * [AMQCPP-362] - Make Session and MessageConsumer both Startable and Stoppable in the CMS API
    * [AMQCPP-364] - Dont perform two phase consumer recover when openwire version is not six or higher

=========================================================================
==  Release Notes for ActiveMQ CPP 3.3.0                               ==
=========================================================================

Bug

    * [AMQCPP-294] - RemoveInfo Segmentation Fault
    * [AMQCPP-298] - Example code crashes in 3.2.0 on MacOSX
    * [AMQCPP-301] - Unmarshal of an empty byte array in a MapMessage
                     segfaults on Windows
    * [AMQCPP-302] - Compilation issue with older GCC versions in
                     MessageCompressionTest.cpp
    * [AMQCPP-312] - exception when bytearray is 0 length
    * [AMQCPP-314] - Starting app with Com using cms destroys connection of
                     other app. New problem with recent lib version
    * [AMQCPP-315] - Advisory messages do not work with multiple listeners
    * [AMQCPP-316] - Unable to receive any messages after re-starting message broker
    * [AMQCPP-317] - activemq-cpp 3.2.2 will not work with activemq 5.4.0 broker using Stomp
    * [AMQCPP-318] - Missing preprocessor definitions in Release SSL profile can cause the build to fail
    * [AMQCPP-323] - The OnException method of registered Exception listener is not called
                     when broker is stopped.
    * [AMQCPP-328] - crash found in activemqcpp when turning broker offline
    * [AMQCPP-330] - Unable to reinitialize ActiveMQ CMS library and then open a session
    * [AMQCPP-331] - Small typo in TcpTransportFactory.cpp
    * [AMQCPP-335] - redeliveryPolicy: rollback always loops
    * [AMQCPP-345] - Can't connect via Stomp to Apollo broker
    * [AMQCPP-347] - SEGFAULT on ssl connections with certificates
    * [AMQCPP-350] - URI Query params are sometimes missed when creating Connections and Transports.
    * [AMQCPP-351] - Using incorrect peer list in failover transport
    * [AMQCPP-352] - FailoverTransportFactory doesn't work correctly with more than two composite uris
    * [AMQCPP-353] - BaseDataStreamMarshaller::readAsciiString crashes
    * [AMQCPP-355] - Transactional consumer using MessageListener freezes on commit
    * [AMQCPP-356] - Auto-Acknowledge consumer using MessageListener freezes on destructor
    * [AMQCPP-358] - FailoverTransport can peg CPU when connection attempts exceeds max and its
                     waiting to be closed
    * [AMQCPP-359] - ActiveMQBytesMessage should throw IndexOutOfBoundsException is array length
                     is negative for readBytes method

Improvement

    * [AMQCPP-284] - Generate Openwire 6 commands and marshalers to keep pace with the AMQ 5.4 broker.
    * [AMQCPP-300] - Add new method to CMS MapMessage - "isEmpty"
    * [AMQCPP-305] - Add option to set the level of Compressiion for Message Body Compression
    * [AMQCPP-307] - Port Update of Connection URI from AMQ to AMQCPP
    * [AMQCPP-308] - Update Redelivery policy to better handle initial redelivery delay processing.
    * [AMQCPP-310] - Add support for Message Priority Dispatching to CMS
    * [AMQCPP-319] - Add equals method to the CMS Destination interface to allow opaque compare of
                     Destination instances.
    * [AMQCPP-329] - Add the ability to participate in XA Transactions
    * [AMQCPP-348] - Allow unverified SSL peer

Wish

    * [AMQCPP-309] - pkg-config library version mismatch
    * [AMQCPP-334] - pkg-config output incorrect

=========================================================================
==  Release Notes for ActiveMQ CPP 3.2.4                               ==
=========================================================================

This release is a bugfix release that addresses a couple issues found since
the release of v3.2.3

bug:

    * [AMQCPP-316] - Unable to receive any messages after re-starting message broker
    * [AMQCPP-317] - activemq-cpp 3.2.2 will not work with activemq 5.4.0 broker
                     using Stomp
    * [AMQCPP-322] - Found memory leaks in ActiveMQCPP
    * [AMQCPP-323] - The OnException method of registered Exception listener is not
                     called when broker is stopped.
    * [AMQCPP-324] - Destination options are ignored
    * [AMQCPP-331] - Small typo in TcpTransportFactory.cpp
    * [AMQCPP-332] - First send after we restart broker seems to always get a CmsException
    * [AMQCPP-335] - redeliveryPolicy: rollback always loops

=========================================================================
==  Release Notes for ActiveMQ CPP 3.2.3                               ==
=========================================================================

This release is a bugfix release that addresses a couple issues found since
the release of v3.2.2

Bug

    * [AMQCPP-312] - exception when bytearray is 0 length
    * [AMQCPP-314] - Starting app with Com using cms destroys connection of
                     other app. New problem with recent lib version
    * [AMQCPP-315] - Advisory messages do not work with multiple listeners

Wish

    * [AMQCPP-309] - pkg-config library version mismatch

=========================================================================
==  Release Notes for ActiveMQ CPP 3.2.2                               ==
=========================================================================

This release is a bugfix release that addresses a couple issues found since
the release of v3.2.1

Bug

    * [AMQCPP-301] - Unmarshal of an empty byte array in a MapMessage segfaults on Windows
    * [AMQCPP-302] - Compilation issue with older GCC versions in MessageCompressionTest.cpp
    * [AMQCPP-303] - SEGFAULT on startup (before main)

=========================================================================
==  Release Notes for ActiveMQ CPP 3.2.1                               ==
=========================================================================

This release is a bugfix release that addresses a couple issues for Windows
users.

Bug

    * [AMQCPP-295] - Build Error on windows machines due to missing/wrong ifdef
    * [AMQCPP-296] - vs2008 project files are missing in the download-package

=========================================================================
==  Release Notes for ActiveMQ CPP 3.2.0                               ==
=========================================================================

This is a major release featuring many new feature, performance improvements,
bugfixes and tests.  The major new feature in this release is support for SSL
using the popular OpenSSL library.  Also in this release Message body compression
and a working QueueBrowser.

Bug

    * [AMQCPP-275] - Thread::UncaughtExceptionHandler missing virtual destructor
    * [AMQCPP-280] - Missing call to pthread_detach on linux causes temporary resource leak.
    * [AMQCPP-281] - Memory Leak in Pointer class Constructor when dynamic cast fails.
    * [AMQCPP-285] - If brokerURI is ipv4 format(127.0.0.1), createConnection will throw decaf::lang::exceptions::NumberFormatException.
    * [AMQCPP-288] - ResourceLifecycleManager needs to be thread-safe
    * [AMQCPP-290] - Authentication error leads to pure virtual call/kaboom in CMS 3.1.1
    * [AMQCPP-292] - transacted sessions over shared failover connection throws exceptions
    * [AMQCPP-295] - Build Error on windows machines due to missing/wrong ifdef

Improvement

    * [AMQCPP-261] - Handle Multibyte Strings or Strings encoded in Charsets other than US-ASCII
    * [AMQCPP-274] - Refactor Commands toString methods and Logging Transport to make debugging easier
    * [AMQCPP-283] - Update Visual Studio projects to VS2008 format.
    * [AMQCPP-287] - Implement Message Body Compression that works with Java and .NET clients
    * [AMQCPP-293] - Add configuration options to ActiveMQConnectionFactory class

New Feature

    * [AMQCPP-129] - Implement QueueBrowser
    * [AMQCPP-140] - Add SSL transport
    * [AMQCPP-147] - Add Optimized Acknowledge support to the CPP client

=========================================================================
==  Release Notes for ActiveMQ CPP 3.1.3                               ==
=========================================================================

This release is a minor patch release that resolves an issue on Windows
that could result in a thread deadlocking while a join operation was in
progress.

Bug

    * [AMQCPP-277] - Freeze when creating multiple Consumers

=========================================================================
==  Release Notes for ActiveMQ CPP 3.1.2                               ==
=========================================================================

This release is a minor patch release that resolves a few memory leaks and
other small bugs found since the 3.1.1 release.  The changes in this release
should not break compatibility with the previous version.

Bug

    * [AMQCPP-273] - Segmentation violation after pure virtual method called in
                     tempdest_advisory_producer example
    * [AMQCPP-290] - Authentication error leads to pure virtual call/kaboom in CMS 3.1.1
    * [AMQCPP-291] - Crash on sending a message with length = 0
    * [AMQCPP-292] - transacted sessions over shared failover connection throws exceptions

=========================================================================
==  Release Notes for ActiveMQ CPP 3.1.1                               ==
=========================================================================

This release is a minor patch release that resolves a few memory leaks and
other small bugs found since the 3.1.0 release.  The changes in this release
should not break compatibility with the previous version.

Bug

    * [AMQCPP-273] - Segmentation violation after pure virtual method called
                     in tempdest_advisory_producer example
    * [AMQCPP-275] - Thread::UncaughtExceptionHandler missing virtual destructor
    * [AMQCPP-280] - Missing call to pthread_detach on linux causes temporary
                     resource leak.
    * [AMQCPP-281] - Memory Leak in Pointer class Constructor when dynamic cast fails.
    * [AMQCPP-285] - If brokerURI is ipv4 format(127.0.0.1), createConnection will
                     throw decaf::lang::exceptions::NumberFormatException.
    * [AMQCPP-286] - Memory leak when adding connection.sendTimeout=3000 to a
                     failover transport

=========================================================================
==  Release Notes for ActiveMQ CPP 3.1.0                               ==
=========================================================================

This is a new Major release of ActiveMQ-CPP.  Many new features have been added
and several bugs have been fixed.  The client now has an connection Inactivity
Monitor which allows it to more quickly detect when a TCP connection has been
broken.  The Threading code has been rewritten to improve performance and lower
memory usage, and there have been several other performance improvements added
throughout the code-base.

Bug

    * [AMQCPP-256] - Transaction has not been started exceptions on the broker with
                     parallel transacted sessions
    * [AMQCPP-257] - Segfault on session or connection cleanup
    * [AMQCPP-260] - Wrong exception propogated from Transport close methods
    * [AMQCPP-262] - exception message in checkWriteOnlyBody is wrong
    * [AMQCPP-263] - Use of in-class static const variables in cms/DeliveryMode.h results
                     in crash while linking with --no-undefined option
    * [AMQCPP-266] - Client Ack is not applied across the session
    * [AMQCPP-267] - ResponseCorrelator::request() exception safety concern
    * [AMQCPP-268] - Unspecified exception can be thrown from
                     decaf::io::ByteArrayOutputStream::write( const unsigned char* buffer,
                     std::size_t offset, std::size_t len )
    * [AMQCPP-270] - Broker exception on message Ack,
    * [AMQCPP-271] - Connection shutdown crashes if the server went down
    * [AMQCPP-272] - MessageProducer is not throwing correct exceptions when called with
                     invalid arguments.

Improvement

    * [AMQCPP-240] - Add the Individual Ack type to the CMS API and support of it in the
                     ActiveMQConsumer code.
    * [AMQCPP-250] - Implement an Inactivity Monotir Transport filter for use on Transport
                     that are used by the Failover Transport
    * [AMQCPP-253] - Problems with compiler aCC on HPUX
    * [AMQCPP-254] - Update client to add support for Openwire 4 and 5.
    * [AMQCPP-258] - Allow clients to attach a TransportListener to an ActiveMQConnection
    * [AMQCPP-264] - Added what() to CMSException
    * [AMQCPP-265] - The C++ ActiveMQ StreamMessage and the Java ActiveMQ StreamMessage are
                     not compatible.
    * [AMQCPP-269] - Update CMS API to include the proper exceptions in the Message interfaces
                     throw declarations

=========================================================================
==  Release Notes for ActiveMQ CPP 3.0.1                               ==
=========================================================================

This is a bugfix build that corrects a few issues that have been found since
the 3.0 release, mainly in the area of Failover.

Bug

    * [AMQCPP-246] - Failover transport doesn't detect network failures
    * [AMQCPP-247] - Exception thrown while using failover and Transacted sessions.
    * [AMQCPP-248] - Failover Transport can deadlock when the connection fails
                     during restore of previous state.
    * [AMQCPP-249] - activemq/core/ActiveMQSession.cpp fails to compile on Solaris 10
                     with Sun Studio Compiler
    * [AMQCPP-252] - Can't set Producer Window Size from connection URI

Improvement

    * [AMQCPP-245] - Add docs to README file regarding the use of APR from MacPorts
    * [AMQCPP-251] - default to use failover:tcp://localhost:8080 by default so we use
                     reconnection out of the box

=========================================================================
==  Release Notes for ActiveMQ CPP 3.0                                 ==
=========================================================================

The 3.0 release represents a major reworking of the ActiveMQ-CPP code, many internal
changes have been made to enhance stability and improve performance.  The major new
feature in this release is the addition of the Failover Transport.

Bug

    * [AMQCPP-205] - CmsTemplate testBasics test can hang
    * [AMQCPP-209] - Transaction Integration Tests for both Stomp and Openwire fail randomly
    * [AMQCPP-218] - CMSException is not getting caught by base class std::exception.
    * [AMQCPP-219] - Compilation errors in main/decaf/net on Solaris 10 with SunStudio 12
    * [AMQCPP-220] - Memory leak in activemq-cpp
    * [AMQCPP-223] - Message delivered async do not have their read only properties set properly.
    * [AMQCPP-224] - Configure accept wrong versions of apr-util
    * [AMQCPP-227] - Mutex class allows for double free in APR pools under certain circumstances
    * [AMQCPP-232] - OpenWire encode and decode UTF8 incorrect
    * [AMQCPP-234] - URI class helpers are missing the DLLExport Macro
    * [AMQCPP-235] - UTF8 length marshaling bug in openwire readString and writeString.
    * [AMQCPP-236] - maxInactivityDuration of Wire-Format is not supported by ActiveMQ-CPP2.2.5
    * [AMQCPP-243] - Error when acknowledging messages that are sent to Virtual Topic subscribers

Improvement

    * [AMQCPP-100] - Implement a Failover Transport
    * [AMQCPP-233] - Update Windows Builds Files to use ENV vars to find dependencies
    * [AMQCPP-237] - Create 64bit configurations in the VC2005 build projects
    * [AMQCPP-244] - Provide the configure script in the distribution

New Feature

    * [AMQCPP-153] - Additional decaf classes to support SSL

=========================================================================
==  Release Notes for ActiveMQ CPP 2.2.6                               ==
=========================================================================

This is another bugfix release in the 2.2.x series.  This release address a few issues
related to String marshaling and unmarshaling, we can now encode ASCII values greater
than 127 into modified UTF-8 along with any embedded Nulls in the string.  The URI option
for setting Max inactivity duration now works properly as well.

Bug

    * [AMQCPP-232] - OpenWire encode and decode UTF8 incorrect
    * [AMQCPP-234] - URI class helpers are missing the DLLExport Macro
    * [AMQCPP-235] - UTF8 length marshalling bug in openwire readString and writeString.
    * [AMQCPP-236] - maxInactivityDuration of Wire-Format is not supported by ActiveMQ-CPP2.2.5

Improvement

    * [AMQCPP-233] - Update Windows Builds Files to use ENV vars to find dependancies
    * [AMQCPP-237] - Create 64bit configurations in the VC2005 build projects

=========================================================================
==  Release Notes for ActiveMQ CPP 2.2.5                               ==
=========================================================================

This is a minor release which mainly resolves a few small bugs that have
been identified since the 2.2.4 release.  Also a few more fixes to improve
compatibility with the Sun compiler has been added.  One big improvement
in this release is that the Message's are now delivered with the read-only
state consistently set correctly.

Bug

    * [AMQCPP-223] - Message delivered async do not have their read only properties set properly.
    * [AMQCPP-224] - Configure accept wrong versions of apr-util
    * [AMQCPP-225] - configure.ac does not work correctly on Solaris with SunStudio Compiler
    * [AMQCPP-227] - Mutex class allows for double free in APR pools under certain circumstances
    * [AMQCPP-230] - BlockByteArrayInputStream read method is not thread safe

Improvement

    * [AMQCPP-229] - Session createTopic and createQueue don't provide clear error when an empty
                     Destination is given

=========================================================================
==  Release Notes for ActiveMQ CPP 2.2.4                               ==
=========================================================================

This is a minor release which mainly resolves a few memory leak issues that
have been identified since the 2.2.3 release.  Also a small fix to improve
compatibility with the Sun compiler has been added.

Bug

    * [AMQCPP-219] - Compilation errors in main/decaf/net on Solaris 10 with SunStudio 12
    * [AMQCPP-220] - Memory leak in activemq-cpp

Improvement

    * [AMQCPP-222] - Potential memory leak in OpenWire Commands

=========================================================================
==  Release Notes for ActiveMQ CPP 2.2.3                               ==
=========================================================================

This is a minor release that contains bugfixes that were found since the
2.2.2 release.  This version adds support for responding to KeepAlive
requests from the broker, and it now properly sets JMSX properties on both
stomp and openwire commands.  Users can now delete destinations using the
deleteDestination function in ActiveMQConnection.

Bug

    * [AMQCPP-158] - libtool release and version-info arguments need to be set correctly
    * [AMQCPP-184] - TransportFilter::fire() crashes after accessing a dangling pointer during exception in ActiveMQConnectionFactory::createConnection()
    * [AMQCPP-193] - If activeMQ blocks due to reaching memory limit during a transaction, the last message sent is posted to the queue after the rollback occurs and persists
    * [AMQCPP-210] - ActiveMQ-CPP on Mac OS X and iPhone OS link error
    * [AMQCPP-213] - JMSXGroupID works with Stomp, not OpenWire.

Improvement

    * [AMQCPP-183] - Add a note about using LIBTOOLIZE environment variable when building on MacOS X
    * [AMQCPP-208] - Update Openwire Command and Marshaler generator
    * [AMQCPP-211] - Add support for responding to the KeepAliveInfo message from the Broker to Openwire

New Feature

    * [AMQCPP-169] - Add a new Broker managment interface in ActiveMQ Core.

Task

    * [AMQCPP-212] - Add more examples to the CPP Client

Wish

    * [AMQCPP-176] - Work around Visual Studio .NET 2003 covariant return issues

=========================================================================
==  Release Notes for ActiveMQ CPP 2.2.2                               ==
=========================================================================

This is a minor release that contains bugfixes that were found since the
2.2.1 release.  Also in this release the there have been several memory leak
fixes and threading issues resolved.  The connection URI options have
changed to reflect improved asynchronous message send capabilities as well,
see the wiki for the new configuration option documentation.  This version
of the library now requires APR 1.3 or higher to compile.

Sub-task

    * [AMQCPP-202] - Occasional Deadlocks when Integration tests are run in a
                     long loop on CentOS and REHL.
    * [AMQCPP-203] - Segmentation Fault in Integration tests occurs occasionally.

Bug

    * [AMQCPP-197] - include file activemq/exceptions/ExceptionDefines.h missing
    * [AMQCPP-198] - File activemq/exceptions/ActiveMQException.h isn't installed
                     during make install
    * [AMQCPP-199] - Segmentation fault at decaf/net/SocketInputStream.cpp (line 108)
    * [AMQCPP-200] - activemq-cpp-2.2.1 test fails for
                     decaf::io::ByteArrayInputStreamTest::testConstructor (segmentation fault)

Improvement

    * [AMQCPP-196] - Make the openwire connecter handle sending messages sync or async
                     based on rules and settings
    * [AMQCPP-206] - Fix warnings generated when compiling the library on Windows.

=========================================================================
==  Release Notes for ActiveMQ CPP 2.2.1                               ==
=========================================================================

This is a minor release that contains bugfixes that were found since the
2.2 release.

Sub-task

    * [AMQCPP-189] - the message producer core dump during sending lots of messages

Bug

    * [AMQCPP-165] - Core Dump on reconnect/open queue
    * [AMQCPP-184] - TransportFilter::fire() crashes after accessing a dangling
                     pointer during exception in ActiveMQConnectionFactory::createConnection()
    * [AMQCPP-185] - Some CmsTemplate headers missing from headers section in Makefile.am
    * [AMQCPP-188] - ActiveMQ message consumer waiting for receive to complete is not closing...
    * [AMQCPP-190] - setStringProperty() max length
    * [AMQCPP-191] - autogen.sh fails to create configure : doxygen-related
    * [AMQCPP-194] - Potential Deadlock in OpenwireConnector on exception from transport
    * [AMQCPP-195] - Message stuck in queue when using transactional sessions

Improvement

    * [AMQCPP-179] - Add support for the openwire 3.0 commands
    * [AMQCPP-192] - Add getCause to the CMS and Decaf exception interfaces

=========================================================================
==  Release Notes for ActiveMQ CPP 2.2                                 ==
=========================================================================

This release has seen a large restructuring of the codebase to separate
out to platform code into a new package called decaf.  We are now making
use of the APR and APR-Util libraries for platform independence.  Also
many new tests and bug fixes have made their way into this release.

Sub-task

    * [AMQCPP-164] - Math functions don't all exist on the windows platform

Bug

    * [AMQCPP-136] - Some IO Stream classes don't honor the stream interface contract
    * [AMQCPP-155] - Problem changing from "AUTO_ACKNOWLEDGE" to "SESSION_TRANSACTED"
    * [AMQCPP-157] - Interoperability issues between C++ and .NET
    * [AMQCPP-158] - libtool release and version-info arguments need to be set correctly
    * [AMQCPP-159] - autogen.sh fails to create configure
    * [AMQCPP-161] - CMS does not support prefetchSize=0 correctly
    * [AMQCPP-163] - Durable Subscriber test fails consistantly on linux and windows
    * [AMQCPP-165] - Core Dump on reconnect/open queue
    * [AMQCPP-166] - MapMessage does not send mapped fields
    * [AMQCPP-167] - Client has memory leaks when used in an MFC application
    * [AMQCPP-170] - SEGV in activemq::connector::openwire::OpenWireConnector::createProducer
    * [AMQCPP-173] - C++ Client has memory leaks
    * [AMQCPP-174] - Deadlock on transacted session
    * [AMQCPP-178] - Core dump in ActiveMQException::buildMessage
    * [AMQCPP-181] - Failed unit tests in 2.2 RC1
    * [AMQCPP-182] - Compile with GCC 4.3.0 fails

Improvement

    * [AMQCPP-103] - Pull out generic libraries from activemq-cpp namespace
    * [AMQCPP-138] - Streams classes do not honor their Interface Contracts
    * [AMQCPP-151] - Add a static create method to CMS ConnectionFactory
    * [AMQCPP-168] - Create a connection can block for up to 4 mins under Linux when TCP socket connect() times out
    * [AMQCPP-172] - Add support for MAP_TYPE and LIST_TYPE to the PrimitiveMap implementation
    * [AMQCPP-177] - Defines for static linking with APR on Windows

New Feature

    * [AMQCPP-148] - Add support for embedding environment variables in connection URI
    * [AMQCPP-152] - Create a CmsTemplate class


=========================================================================
==  Release Notes for ActiveMQ CPP 2.1.3                               ==
=========================================================================

This release adds support for building the library and tests, etc on the
Solaris platform using the Sun Compiler in Sun Studio 11.

Improvement

    * [AMQCPP-154] - Improve build compatibility (Solaris)

=========================================================================
==  Release Notes for ActiveMQ CPP 2.1.2                               ==
=========================================================================

This release adds support for building the library and tests, etc on the
Solaris platform using the Sun Compiler in Sun Studio 11.

Improvement

    * [AMQCPP-154] - Improve build compatibility (Solaris)

=========================================================================
==  Release Notes for ActiveMQ CPP 2.1.1                               ==
=========================================================================

== Overview ==

This version includes several bugfixes, as well as some new examples.  Also
a lot of work has been done on performance and memory leaks and stability.

NOTE: Compatable with ActiveMQ Broker version >= 4.0

Bug

    * [AMQCPP-111] - Unable to ./configure under Suse Linux 64 bit
    * [AMQCPP-137] - Exception in ResponseCorrelator::onCommand()
    * [AMQCPP-141] - ActiveMQTextMessage::getText() causes an index out of bounds assertion failure if trying to read a 0 length text message
    * [AMQCPP-142] - BufferedOutputStream flush called after BufferedOutputStream close resulting in unhandled exceptions
    * [AMQCPP-144] - Decaf library build fails on OS X
    * [AMQCPP-145] - Compiler error concerning TRANSACTION_ROLLBACK
    * [AMQCPP-149] - Client crash when receiving message with empty string property from java
    * [AMQCPP-150] - ActiveMQ-CPP consumer client hanging after receiving 32767 messages.

Improvement

    * [AMQCPP-99] - Incorporate APR for generation of GUIDs
    * [AMQCPP-124] - Provide a ConnectionMetaData interface in CMS
    * [AMQCPP-139] - Improvements for the Openwire Commands Generated Code
    * [AMQCPP-143] - declara BytesMessage::readXXX() methods as 'const'
    * [AMQCPP-146] - Refactor sequence id generation in the connectors

=========================================================================
==  Release Notes for ActiveMQ CPP 2.1                               ==
=========================================================================

== Overview ==

This version includes several bugfixes, as well as some new features.  Also
a lot of work has been done on performance and memory leaks.  One new feature that
has been highly anticipated is that we now build both shared and static libraries.

NOTE: Compatable with ActiveMQ Broker version >= 4.0.2

== Issues Resolved ==

Bug

    * [AMQCPP-104] - Enabling async send prevents program from terminating properly on Windows
    * [AMQCPP-119] - getClientID segfaults is called after connection has been closed
    * [AMQCPP-120] - Possible memory leak in StompConnector
    * [AMQCPP-121] - Possible memory leak in activemq::transport::IOTransport::run
    * [AMQCPP-122] - Crash on Windows when rapidly creating and destroying connections
    * [AMQCPP-126] - closing ressources after an IOException crashes the app
    * [AMQCPP-128] - Transacted session crashes or loses messages
    * [AMQCPP-131] - StompConnector doesn't rethrow UnsupportedOperationException
    * [AMQCPP-132] - Unsubscribe of durable subscription fails
    * [AMQCPP-133] - Receive of plain Message with Openwire returns null
    * [AMQCPP-134] - Compiler warnings have returned for tests on gcc

Improvement

    * [AMQCPP-65] - Refactor transport creation
    * [AMQCPP-66] - Refactor the Async send to happen in an Async Transport instead of in ActiveMQSession
    * [AMQCPP-108] - Make stomp connector more generic
    * [AMQCPP-110] - Create activemqcpp-openwire-generator build in our pom.xml, move code to src/main/java
    * [AMQCPP-116] - quick improvements to CMS example code
    * [AMQCPP-118] - Provide a way to allocate and free with the same allocator
    * [AMQCPP-123] - Link error when trying to link another shared library against AMQCPP on 64-bit Linux
    * [AMQCPP-127] - ResponseCorrelator doesn't have a way to set max timeot from the properties uri.
    * [AMQCPP-130] - Enhance the DummyTransport and rename it to MockTransport

New Feature

    * [AMQCPP-125] - Decaf: Random

Task

    * [AMQCPP-106] - reorganize subversion
    * [AMQCPP-115] - Change build to create dynamic libraries

=========================================================================
==  Release Notes for ActiveMQ CPP 2.0.1                               ==
=========================================================================

== Overview ==

This version is a bug fix release for issues that were found in the 2.0 release

NOTE: Compatable with ActiveMQ Broker version >= 4.0.2

== Issues Resolved ==

Bug

    * [AMQCPP-105] - Openwire ActiveMQMessage sets Persistant flag incorrectly
    * [AMQCPP-107] - SocketInputStream::read() doesn't check for EINTR error
    * [AMQCPP-109] - Exception when acknowledging null messages, originating from the receipt of an ObjectMessage
    * [AMQCPP-112] - Openwire Experiation Integration tests fail when fixed to actually use Openwire

Improvement

    * [AMQCPP-101] - Add the Ability to set the TcpNoDelay flag of a TCP Socket
    * [AMQCPP-102] - Create a Tag for CMS

=========================================================================
==  Release Notes for ActiveMQ CPP 2.0                                 ==
=========================================================================

== Overview ==

This version is a major release containing new features and bug fixes.

    * Full OpenWire v2 support!
    * You can switch between openwire and stomp via the connection URL
    * Temporary destinations when using OpenWire
    * Added support for asynchronous send
    * Fixed client acknowledge
    * Resolved some memory leaks
    * Sessions are now single threaded

NOTE: Compatable with ActiveMQ Broker version >= 4.0.2

== Issues Resolved ==

Bug

    * [AMQCPP-38] - Async error on broker when running integration tests
    * [AMQCPP-44] - Reason for socket errors not reported correctly on Windows
    * [AMQCPP-46] - ActiveMQConnection doesn't propagate exception listener to underlying connector
    * [AMQCPP-51] - Autoconf is not properly setting CXXFLAGS on Linux
    * [AMQCPP-52] - Valgrind reports memory leaks when running PrimitiveMapTest
    * [AMQCPP-53] - Declaration of extern int errno after including errno.h doesn't compile
    * [AMQCPP-54] - Build broken due to autoconf problem?
    * [AMQCPP-55] - Need close() to propagate to child resources
    * [AMQCPP-56] - GCC warnings and possible SocketFactory bug on 64-bit Linux
    * [AMQCPP-58] - Possible memory leak when reestablishing connection
    * [AMQCPP-59] - Exception is thrown when destroying consumer after connection failure
    * [AMQCPP-60] - message information is lost from stomp message to jms
    * [AMQCPP-61] - CMSException::what returns c_str of temporary std::string
    * [AMQCPP-62] - Broken CLIENT_ACKNOWLEDGE
    * [AMQCPP-64] - Inconsistency in topic names when creating topics
    * [AMQCPP-75] - setCMSReplyTo with null destination segfaults when using Openwire wire format
    * [AMQCPP-76] - Integer property not propagated when using Openwire
    * [AMQCPP-77] - Inconsistency when getting string property between Stomp and Openwire
    * [AMQCPP-78] - session tries to destroy already destroyed temporary queue
    * [AMQCPP-80] - sending with explicit message id hangs
    * [AMQCPP-81] - openwire consumer never receives messages already in queue
    * [AMQCPP-83] - Integration tests fail for openwire
    * [AMQCPP-85] - activemq/util/Character.h not being installed by automake
    * [AMQCPP-86] - Valgrind reports memory leaks in unit tests
    * [AMQCPP-87] - ActiveMQConnectionFactory creates only one unique clientId
    * [AMQCPP-90] - Openwire Session doesn't run its MessageListeners from a single thread
    * [AMQCPP-91] - A few more Openwire memory leaks
    * [AMQCPP-92] - memory leak in openwire session info

Improvement

    * [AMQCPP-40] - A few stray unix and sun defines
    * [AMQCPP-47] - MapMessage getters should be const
    * [AMQCPP-48] - Fix compilation with Visual Studio .NET 2003
    * [AMQCPP-49] - Add -W -Wall compile options
    * [AMQCPP-50] - Derive cms::CMSException from std::exception
    * [AMQCPP-57] - Typo in names of delivery modes
    * [AMQCPP-79] - allow createProducer to accept null destination
    * [AMQCPP-89] - Case of cms::Message getter and setter names are not consistent with case of JMS Message getter and setter names
    * [AMQCPP-94] - StompConnector should use Long::toString instead of Integer::toString

New Feature

    * [AMQCPP-30] - Add support to activemq-cpp to support the openwire protocol
    * [AMQCPP-63] - asynchronous send

Task

    * [AMQCPP-82] - Make openwire the default protocol
    * [AMQCPP-84] - add unit/integration tests
    * [AMQCPP-88] - Remove setCMSMessageId from CMS API
    * [AMQCPP-95] - Perform Memory Leak testing on 2.0 codebase


=========================================================================
==  Release Notes for ActiveMQ CPP 1.1                                 ==
=========================================================================

== Overview ==

This version fixes several bugs and adds a few new features.

    * Updated interface for cms::BytesMessage - more JMS-like.
    * Updated the MessageProducer interface to add multiple versions of the send method
    * Fixed several memory leaks
    * Now run on linux, win32, OS X, and Solaris
    * Persistence is fixed
    * Fixed deadlocks when closing a connection
    * Fixed message expiration

NOTE: Compatable with ActiveMQ Broker version >= 4.0.2

== Issues Resolved ==

Bug

    * [AMQCPP-3] - Receiving a BytesMessage sent from Java using CMS listener causes exception thrown in class BufferedInputStream
    * [AMQCPP-14] - CMSExpiration not handled properly in ActiveMQProducer
    * [AMQCPP-18] - ActiveMQConnection.close() causes app to crash
    * [AMQCPP-20] - Deadlock when in stomp connector close
    * [AMQCPP-22] - Use common name for ActiveMQ C++ library on Windows and Linux
    * [AMQCPP-23] - active-cpp persistent problem
    * [AMQCPP-25] - Bus error on Solaris OS from DataInput and DataOutput streams
    * [AMQCPP-26] - Memory leaks reported by Rational Purify when running unit tests
    * [AMQCPP-27] - Issues reported by Valgrind when running unit tests
    * [AMQCPP-28] - Purify and Valgrind warnings when running integration tests
    * [AMQCPP-29] - Projects in MSVC build building on top of one another
    * [AMQCPP-35] - Stomp content-length header not being set on BytesMessage
    * [AMQCPP-39] - Some AMQCPP includes not installed when doing make install on Linux
    * [AMQCPP-41] - Byte swap on float and double truncates values
    * [AMQCPP-43] - Crash when getting string property that doesn't exist

Improvement

    * [AMQCPP-16] - CMS API needs updates to more closely follow JMS API
    * [AMQCPP-33] - Integration tests crash if broker isn't running
    * [AMQCPP-36] - Cleanup whitespace and member function definitions in header files
    * [AMQCPP-42] - A few more strict aliasing warnings

New Feature

    * [AMQCPP-15] - Add other versions of send method to CMS MessageProducer
    * [AMQCPP-37] - readUTF and writeUTF for BytesMessage

Task

    * [AMQCPP-45] - Update configure.ac with release version

Wish

    * [AMQCPP-31] - Consider giving the unix #define a more unique name
    * [AMQCPP-32] - Stomp messages don't preserve property types: please document this behaviour
