=========================================================================
==  Release Notes for ActiveMQ CPP 3.9.5                               ==
=========================================================================

Bug

    [AMQCPP-622] - Memory leaks in the handshake of a OpenSSL connection
    [AMQCPP-623] - Can't build on some newer OpenSSL versions

New Feature

    [AMQCPP-643] - Add an option to time out connection attempts when blocked in ensureConnectionInfoSent

=========================================================================
==  Release Notes for ActiveMQ CPP 3.9.4                               ==
=========================================================================

Bug

    [AMQCPP-596] - decaf/internal/security/provider/crypto/MD4MessageDigestSpi.cpp:394]:
                   (error) Mismatching allocation and deallocation: temp
    [AMQCPP-598] - CmsTemplate::createConsumer possible dereference of null pointer
    [AMQCPP-601] - PriorityBackup isn't working
    [AMQCPP-610] - Stall when maxReconnectAttempts is set to zero

Improvement

    [AMQCPP-607] - Add Openwire properties for client metadata to CMS client
    [AMQCPP-609] - Prevent unnecesary reconnect attempt with failover during shutdown

=========================================================================
==  Release Notes for ActiveMQ CPP 3.9.3                               ==
=========================================================================

Bug

    [AMQCPP-594] - ActiveMQ-CPP does not build on Solaris 11
    [AMQCPP-595] - ActiveMQMessageProducer sends producer registration async which causes
                   it to miss possible exceptions on creation like security exceptions.

=========================================================================
==  Release Notes for ActiveMQ CPP 3.9.2                               ==
=========================================================================

Bug

    [AMQCPP-591] - Stomp client connections can't properly convert composite destinations

=========================================================================
==  Release Notes for ActiveMQ CPP 3.9.1                               ==
=========================================================================

Bug

    [AMQCPP-585] - Date::toString() return wrong date string.
    [AMQCPP-587] - ActiveMQ CPP (CMS) integration unit tests leads to client segmentation fault when executed against Artemis
    [AMQCPP-589] - NPE when acknowledge called on message in some cases

Improvement

    [AMQCPP-588] - Always set a rollback cause on exception thrown in onMessage

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