version 0.9.9.12 released: 31 Oct 2009
- removed apparent openssl chunk size limit
- win32 compile fixes (WIN32 –> _WIN32)
- defined DLL_EXPORT in Code::Blocks project file
- SChannel::decrypt(): defer cleanup in error case
- SChannel: support over-sized TLS fragments
version 0.9.9.11 released: 22 Oct 2009
- fixed potential crash in SOCKS5BytestreamManager
version 0.9.9.10 released: 19 Oct 2009
- fixed potential crash in Rostermanager::fill() (when reusing the RosterManager)
- fixed gnutls check in configure.ac (using pkg-config)
version 0.9.9.9 released: 23 Sep 2009
- fixed SChannel on NT4
- fixed configure.ac tests for FreeBSD
- preliminary workaround for connection problems when using recent OpenSSL + gtalk
- accept DLL_EXPORT
version 0.9.9.8 released: 16 Aug 2009
- support tls zlib compresion with openssl (wrong magic number used)
- fixed setting client cert/key in gnutls
- properly exported InstantMUCRoom and UniqueMUCRoom (GLOOX_API)
- added MUCRoom::setRoomConfig()
version 0.9.9.7 released: 07 Mar 2009
- #define GLOOX_IMPORTS for the examples, fixes compilation in MinGW
- removed use of deprecated ns_get16()
- allow destruction of a MUC room if not currently in the room
version 0.9.9.6 released: 28 Feb 2009
- prevent crashes when closing a MUCRoom
- compile fix for gcc 4.4, fixes debian bug 505333
- MacOS compile fix
- fixed a potential crash when the server sends no ‘version’ attribute in the opening stream
version 0.9.9.5 released: 22 Mar 2008
- added Parser::reset()
- added Client::login()
- fixed detection of res_query (Gentoo bug #212316)
version 0.9.9.4 released: 05 Mar 2008
- MUCRoom: don’t leak a MessageSession on presence error
- compile fix for gcc 4.3 (thanks to Cyril Brulebois)
version 0.9.9.3 released: 18 Jan 2008
- MUCRoom: properly recover after nick name conflict
- TLSSChannel: properly recover after disconnect
version 0.9.9.2 released: 17 Jan 2008
- fix for gcc 4.3 compile fix
version 0.9.9.1 released: 16 Jan 2008
- gcc 4.3 compile fix
version 0.9.9 released: 16 Jan 2008
- MUCRoom: fixed finding the ‘delayed delivery’ stamp
- MUCRoom: fixed adding of chat history to rooms
- Client: fixed TLSRequired policy
- RosterManager: fixed (removed) ‘from’ attribute for subscription stanzas
- call removeIDHandler() from more places
- VCard: work around MIME-like photo/logo formatting
- TLSOpenSSL: provide date_from/date_to in certinfo
version 0.9.8 released: 07 Dec 2007
- InbandBytestreamManager: marked as deprecated
- InbandBytestreamManager: fixed ID tracking
- MessageSession: added setThreadID()
- better overall MinGW support
version 0.9.7 released: 13 Nov 2007
- InbandBytestreamManager: marked as deprecated
- InbandBytestreamManager: fixed ID tracking
- MessageSession: added setThreadID()
- better overall MinGW support
version 0.9.6.1 released: 25 Oct 2007
- win32 build fix
version 0.9.6 released: 25 Oct 2007
- fixed position of GLOOX_DEPRECATED macro in tag.h
- ClientBase: added private copy & assignment ctors
- SOCKS5Bytestream: recognize established connections (when using local streamhost)
- SOCKS5BytestreamServer: avoid a crash when a connection is closed prematurely
- SIProfileFTHandler, SIHandler, SOCKS5BytestreamHandler: pass SID to handle*Error() functions
- CompressionZlib: made thread-safe
- ConnectionTCPBase: avoid multi-threading issue in recv()/disconnect()/cleanup()
- TLSSChannel: fixed off-by-one error
version 0.9.5 released: 27 Sep 2007
general changes and additions:
- do not allow store()’ing of empty PrivacyList (aka removeList)
- do not return on error in PrivacyManager::handleIqID()
- JID: added operator bool()
- Tag: added operator bool()
- DelayedDelivery: added setReason()
- skip zlib tests if zlib is not available
deprecated functions:
- JID::fullJID(), use ctor
JID::empty(), use operator bool()
Tag::empty(), use operator bool()
XDelayedDelivery::XDelayedDelivery( JID, string, string ), the spec is deprecated, use DelayedDelivery
DelayedDelivery::setBody(), typo, use setReason()
version 0.9.4.1 released: 15 Aug 2007
- ClientBase: fix TLS wrapper instantiation
version 0.9.4 released: 14 Aug 2007
- ChatStateHandler: make sure to never send the same chat state twice in a row
- Tag: make ctors explicit
- ClientBase: added setTls( TLSPolicy ) to allow enforcing of TLS
- ClientBase: deprecated setTls( bool )
- conform to XEP-0170 (Recommended Order of Stream Feature Negotiation)
- ConnectionTCPBase: avoid race condition in cleanup()
- ConnectionTCPBase: reset byte counters on disconnect
- DataFormBase: added addField( DataFormFieldType, … )
- DataFormField: added addOption( string, string )
- MUCRoom: fix potential crash in dtor
- SHA: fix potential crash in hex()
- MUCRoom: fix detection of nick changes
- UniqueMUCRoom: fix creation of unique room names
- XPath: support expressions like /abc[@foo=’bar’]/def[@bar=’foo’]
- MessageFilter: enabled writing of custom MessageFilters
- ChatStateFilter: made members protected
- MessageSession: added resetResource()
- Search: made members protected
- DNS: re-use server port if setsockopt() is available
- XPath: accept any characters in string literals
- Tag: deprecated relax() and escape()
version 0.9.3 released: 18 Jul 2007
- SOCKS5BytestreamManager: include error child in IQ of type error
- allow a default value to be set for data form fields of type FieldTypeListSingle (thanks to Roelof Naude)
- DelayedDelivery: fixed SE type
- Registration: fixed error handling
- Parser: disallow “, ‘ and > again for full XMPP compliance
- XPath: accept @ in string literals
version 0.9.2 released: 23 Jun 2007
- Parser: accept ‘ and > in attribute values and cdata (reverted in 0.9.3)
- Parser: log parse errors
- SIManager, SIProfileFT: return requested stream’s id (SID)
- SIProfileFTHandler: new argument: stream’s ID (SID)
version 0.9.1 released: 20 Jun 2007
- MessageSession: fix potential crash when ClientBase deletes MessageSessions in its dtor
- DNS: increase verbosity if no SRV record found
- ClientBase: avoid double call of onDisconnect() under rare circumstances
- ClientBase: reply with ‘service-unavailable’ to unhandled IQs
- documentation updates and fixes
- ClientBase: avoid disconnect loop if TLS failed
- Client: added Session Creation event
version 0.9 released: 17 Jun 2007
- rewrote XML parser (no dependency on iksemel anymore)
- XEP-0045 (Multi-User Chat)
- XEP-0065 (SOCKS5 Bytestreams)
- XEP-0095 (Stream Initiation)
- XEP-0096 (File Transfer)
- added StanzaExtensions: XEP-0027 (Current Jabber OpenPGP Usage) abstraction, XEP-0066 (Out of Band Data) abstraction, XEP-0091 (Delayed Delivery) abstraction, XEP-0153 (vCard-Based Avatars) abstraction, XEP-0203 (Delayed Delivery) abstraction
- SOCKS5 proxy support (RFC 1928), incl. username/password auth (RFC 1929)
- HTTP proxy support, incl. Basic auth support
- Tag: basic XPath support
- fixed/finished native TLS support on win32 (thanks to Tobias Markmann)
- added msec timeout to recv()
- Client: fetch roster immediately after requesting roster:delimiter
- Registration: allow registration with services
- implement dataforms as list of pointers to DataformFields
- ClientBase: cleaner Stanza deleting
- Adhoc: full Adhoc support
- Disco::getDiscoItems() and ::getDiscoInfo() take JIDs instead of std::strings
- Tag: added virtual void addChild( const Tag *child )
- DataForm: added ::type()
- RosterManager: take JIDs in un/subscribe()/add()
- RosterListener: announce JIDs, not std::strings
- DataFormBase: added addField() to add a single field
- DNS: SRV record resolving on win32 (thanks to Marc Rousseau)
- Client: removed setInitialPriority() and setAutoPresence() in favour of setPresence()
- support for SASL authorization id != authentication id
- Disco: added removeFeature()
- Tag: added setAttributes()
- merged patch by Marc Rousseau to distiguish between incoming and outgoing Tags/Stanzas
- moved several structs and enums into gloox namespace (mostly from *Handlers)
- move Resource into gloox namespace (from RosterItem)
- MessageEventFilter: fixed a bug where error messages triggered events
- MessageEventFilter: honor feature-not-implemented error
- Connection: included server name in dns error message (–> ‘server.tld: connection refused’)
- ClientBase: onDisconnect() gets called if the connection got refused or DNS error occurred
- statistics interface (connection/compression/encryption statistics and status, etc)
- Tag: added ‘TagList findChildren( std::string& )’
- Disco: lifted limit of one DiscoNodeHandler per Node
- Parser: install parser.h
- Tag: added operator== & operator!=
- ClientBase: added setCompression( bool ) to switch stream compression on/off
- renamed Stanza::show() –> Stanza::presence()
- RosterListener: moved Roster to gloox namespace
- RosterListener: new handleRosterPresence() replaces itemUn/Available() and presenceUpdated()
- RosterListener: added handleSelfPresence()
- RosterListener: added ‘handle’ prefix to function names
- MessageHandler: handleMessage() takes optional MessageSession arg
- DiscoNodeHandler: added DiscoNodeItem to properly represent a disco#item
- ClientBase: removed setAutoMessageSession() in favor of registerMessageSessionHandler()
- PrivacyItem: renamed enum members from ALL_UPPER_CASE to MixedCase
- PrivateXMLHandler: renamed enum members from ALL_UPPER_CASE to MixedCase
- MessageSession: added filtering by message type
- AdhocHandler: added ‘handleAdhoc’ prefix
- Adhoc: handle Disco errors
- removed unmaintained Dev-C++ project (in favor of Code::Blocks project)
- ClientBase: added whitespacePing()
- DNS: cleanup
- TagHandler: now receives Tag, not Stanza
- Parser: cleanup, now uses TagHandler
- ClientBase: added removeIDHandler() to cancel trackID() operations
- added DataFormField( const std::string&, const std::string&, const std::string&, DataFormFieldType );
- ClientBase: added setSASLMechanisms()
- revamped and modularized the entire connection backend
- Adhoc: added JID to Adhoc item (thanks to Roelof Naude)
- MUCRoom: fixed memleak (thanks to Roelof Naude)
- ClientBase: added registerPresenceHandler( const JID& jid, PresenceHandler *ph )
- MUCRoomParticipant: added ‘status’ member to hold the presence’s status message
- ClientBase/MessageSession: conform to XEP-0201
- ClientBase: don’t delete a MessageSession manually, use ClientBase::disposeMessageSession()
- MessageSession: don’t delete a MessageFilter manually, use MessageSession::disposeMessageFilter()
- JID: added fullJID() & bareJID(), returning JID objects
- Stanza: added setThread()
- MUCRoomParticipant: added status member
- VCardManager: allow cancellation of VCard operations
- ConnectionListener/Client/Component: added stream events/onStreamEvent()
- ClientBase: removed fileDescriptor(). Use ConnectionTCP instead.
- Search::search(): Dataform *form –> const DataForm& form
- Registration: fixed createAccount( const DataForm& form ) to do something useful
- ported to Win CE/Mobile (experimental). see README.wince
- ClientBase::setServer: update’s Connection(Base)’s server as well
- VCard: const *List& *() –> *List& *() to allow modification
- Disco: minor spec compliance fixes
- Adhoc: minor spec compliance fixes
- Tag: added ctors to easily create a single attribute
- ConnectionTCP: protected send() and recv() with simple Mutexes
- GCC 4.3 compile fixes
- OpenSSL: check cert dates
- Parser: don’t throw parse error on incoming
- SIProfileFT: fixed ranged file transfers
- Disco: more spec compliance fixes
- DataFormField: added addValue()
- Stanza: removed clone(), use: new Stanza( Tag* ); Tag::clone() is not affected
- RosterManager: added cancel()
- RosterManager: split unsubscribe() into unsubscribe() + remove()
- Client: added presence(), status()
- RosterListener: added handleRosterError()
- PrivacyListHandler: handle unknown errors
- TLSOpenSSL: don’t throw handshake errors if the connection was closed by the server
- allow manual deletion of MessageSessions again (thanks to Martin Milata) (reverted in 0.9.1)
version 0.8.9 released: 08 Aug 2007
- Registration: fixed error handling
version 0.8.8 released: 24 Apr 2007
- ClientBase/Client/NonSaslAuth: made re-connect-safe
- MessageEventFilter: fixed sending of MessageEventCancel
- MessageEventFilter: fixed handling of IDs
- ChatStateFilter: fixed hypothetical revival of chat states
- Connection: fixed timeout conversion
- Connection: fixed ‘valid from’ and ‘valid to’ with gnutls
- compile fix for gcc 4.3 (thanks to Martin Michlmayr)
- Registration: fixed createAccount( const DataForm& form ) to do something useful
version 0.8.7 released: 06 Mar 2007
- ClientBase: allow cancellation of ID tracking
- VCardManager: allow cancellation of VCard operations
- ClientBase: avoid onDisconnect() being called twice
version 0.8.6 released: 14 Dec 2006
- Tag: proper escaping of names/attributes/cdata (thanks to Marc Rousseau)
- VCardManager: call handleVCard if VCard is empty
- ClientBase: some disconnect fixes (thanks to Marc Rousseau)
- Adhoc: de-registration of commands
version 0.8.5 released: 10 Nov 2006
- RosterManager: keep Roster up-to-date even if no RosterListener is registered
- ClientBase: only log stanzas if actually sent
- ClientBase: more correct return value on disconnect
version 0.8.4 released: 18 Sep 2006
- compile fix for Mac OS X (thanks to Geoff Schmidt)
version 0.8.3 released: 14 Sep 2006
- ClientBase: added whitespace ping()
- VCard: fixed typo (vcard –> vCard)
version 0.8.2 released: 11 Sep 2006
- find dn_skipname on Mac OS X (thanks to Geoff Schmidt)
- look for libgnutls-config in specified path, if given
- fixed compilation on SkyOS
- maybe-fixed resolver on HPUX
- experimental native TLS support on win32
version 0.8.1 released: 28 Jul 2006
- async inbandbytestreams ack
- fixed memory leak in RosterItem
- RosterManager: don’t sync self contact to server
- PrivacyManager: give a privacy list a proper name (thanks to Chris Bond)
- InBandBytestreams: ack closing with correct ID
- DataForm: fixed few minor field handling bugs
- Client: allow lazy username provisioning
version 0.8 released: 08 Apr 2006
- added an extensible message session abstraction
- added automatic MessageSession creation facilities upon incoming messages
- XEP-0022 (Message Events)
- XEP-0047 (In-Band Bytestreams)
- XEP-0054 (vcard-temp)
- XEP-0085 (Chat State Notifications)
- ‘ported’ to Linux on Arm (Intel XScale on gumstix in this case)
- RosterManager: returning true from RosterListener::unsubscriptionRequest() makes the RosterManager no longer remove the item from the roster. It is unsubscribed from only. Use unsubscribe( jid, msg, true ) to remove it manually.
- RosterListener: renamed itemChanged() –> presenceUpdated()
- RosterListener: added nonrosterPresenceReceived()
- revamped logging system, introducing per-ClientBase log instance
- Tag: renamed addAttrib() –> addAttribute()
- renamed enum members from ALL_UPPER_CASE to MixedCase
- RosterItem & RosterListener: more const & return values and parameters
- RosterItem: support for multiple resources, introducing RosterItem::Resource
- Stanza: added int priority()
- SASL EXTERNAL and support for client key/cert
- RosterManager: added RosterItem* getRosterItem( const JID& jid )
- added extern “C” const char* gloox_version()
- Tag: made findChild(…) return 0 instead of new Tag (reverted change from 0.7.6)
- Tag: added addAttribute( const std::string, int )
- revamped MessageSession to accept external MessageFilters
- Disco: added const StringList& features()
- allow for immediate re-connect() after disconnect()
- fixed compilation with gcc 4.1
- semi-fixed missing onDisconnect() call if file descriptor has been fetched and stream error occured
version 0.7.6.1 released: 10 Feb 2006
- fixed OpenSSL check on MinGW
version 0.7.6 released: 07 Feb 2006
- fixed alignment issues on ARM
- more const’ness where possible (thanks to Marc Rousseau)
- configure checks for res_querydomain et.al.
- doc updates
- Tag: added findChild( name, attr, value )
- Tag: made findChild(…) return new Tag instead of 0
- DataForm (XEP-0004) awareness for Registration class
- workaround for iksemel’s base64 bug, SASL Plain with GTalk and SASL Digest-MD5 with Wildfire now possible
- XMPP version requirement relaxed for Components
- added __declspec( dllimport ) on win32 (thanks to Low Weng Liong)
- fixed OpenSSL lib dependency on MinGW (thanks to Low Weng Liong)
- ‘ported’ to Syllable
version 0.7.5 released: 05 Jan 2006
- fixed a crash occuring if no DNS servers could be reached
- added virtual destructors to *Handlers
- fixed ” bug
- various documentation updates
version 0.7.4 released: 15 Dec 2005
- RosterListener: add asynchronous subscription request notification
- LastActivity: Fix bug were stanza was not sent
- NonSaslAuth: don’t confuse auth failure reason
- Connection: return correct disconnect reason if non-SASL auth fails in non-blocking connect mode
- RosterManager: handle ‘early presence’ correctly
- when using OpenSSL: imply: no cert == invalid cert
- RosterItem: added statusMsg()
version 0.7.3 released: 10 Dec 2005
- added optional OpenSSL support
version 0.7.2 released: 06 Dec 2005
- RosterManager: fixed a problem with servers not supporting private XML storage
version 0.7.1 released: 24 Nov 2005
- ported to NetBSD 2.1
- RosterManager: use the group’s name, not ‘group’ (thanks to Maciej Paszta)
- RosterManager: update/set an item’s name
- include config.h.win in distribution
- Stanza: allow presence broadcasting in createPresenceStanza()
- Client: allow registration with server which supports SASL ANONYMOUS
- Client: init m_jid::server for registration
version 0.7 released: 02 Nov 2005
- XEP-0004 (Data Forms) (complete, experimental)
- XEP-0013 (Flexible Offline Message Retrieval) (complete)
- XEP-0083 (Nested Roster Groups) (complete)
- XEP-0138 (Stream Compression) (complete, experimental)
- removed pkg-config dependency (in check for iksemel)
- fixed pkg-config file (all libs)
- RosterItem: added status(); made setStatus() take a PresenceStatus
- RosterManager: added self-contact (optional; hard-wired in Client for now)
- Disco: no need to register the handler to receive query results (still necessary for ‘set’s)
- PrivateXML: no need to register the handler to store or receive private XML
- added IQ error handling in PrivateXML class
- port to Win32; SRV lookups do not work. See README.win32 for more information.
- some MacOS X #include fixes
- added Tag::clone() and Stanza::clone()
- added static functions to Stanza to create common packet types (IQ, Message, Presence, Subscription)
- gloox-config script
- call onDisconnect() in non-blocking connect() mode
- added debug notice about remote server not being XMPP compliant
- added an API docs notice about unsupported legacy SSL connections to port 5223
- fixed a presence related bug in Stanza, where presence always was reported as ‘available’ (thanks to Luis Cidoncha)
- made code ISO C++ compliant (-pedantic et al.)
- various API doc fixes
- many more virtuals in the handler interfaces instead of empty functions
- export raw file descriptor
- got rid of libm(ath) dependency (by using ostringstream)
- always use pre-increment instead of post-increment in for-loops
- export classes on w32
- let configure check for libresolv
- don’t use resolver functions on SkyOS for now
- made ClientBase::streamErrorAppCondition() const
- added ClientBase::removeConnectionListener()
- added namespace checking for SASL success
version 0.6.3 released: 15 Oct 2005
- fixed #includes for MacOS
version 0.6.2 released: 23 Sep 2005
- added a pkg-config file
version 0.6.1 released: 22 Sep 2005
- fixed Makefile.ams for make distcheck
- removed unused iksemel types and includes
- made void ClientBase::send( const std::string& ) private
- made void ClientBase::send( Tag* ) virtual
- Tag constructor: parent must know about its new child
- avoid non-constant array sizes in getID() et al.
version 0.6 released: 02 Sep 2005
- support for SASL Anonymous mechanism
- XEP-0012 (Last Activity) (experimental)
- full XMPP Core compliance
- almost full XMPP IM compliance
- various bugfixes and corrections
version 0.5 released: 28 Aug 2005
- xml:lang for initial stream
- xml:lang support for subject, body and status of message and presence stanzas, respectively
- added ability to specify a server to connect to which is different from the JID’s domain part
- XMPP version check
- recognition of all stream errors as defined in RFC 3920, including xml:lang of the text element
- recognition of all SASL/Non-SASL error conditions as defined in RFC 3920 and XEP-0078
- added a LogHandler for external (non-tty) logging (thanks to Konstantin Klyagin)
- re-introduction of non-blocking connect (thanks to Konstantin Klyagin)
- recognition of all stanza errors as defined in RFC 3920, including xml:lang of the text element
- only include non-empty attributes
- prefer child elements over cdata when returning a tag’s xml, prevents empty log if whitespace was sent
- correctly detect availability presence
- take autoPresence etc. into account when doing non-SASL auth
- in the XEP-0092 (Software Version) implementation: OS support; create a valid ‘result’ type of packet
- ability to force non-SASL auth even if not announced
version 0.4 released: 25 Aug 2005
- fixed some memory leaks
- renamed classes: JClient -> Client, JComponent -> Component
- got rid of the Iksemelmm wrapper classes
- added native Tag and Stanza classes
- added a (dummy) Parser class which currently only converts from Iksemel types to gloox native types
- natively handle connection (send & recv), incl. TLS/SSL
- added tag filter
- fixed roster management (somehow everything but the jid in the initial roster was ignored)
- process resource binding response
- process session creation response
- added forgotten ‘autojoin’ attribute to bookmark storage
- got rid of the thread
- TLS/SSL certificate verification
- changed license to GNU GPL
version 0.3.2 released: 09 Aug 2005
- fixed namespace bugs
- fixed fallback port handling
version 0.3.1 released: 09 Aug 2005
- fixed a bug related to bare JID in JClient constructor
version 0.3 released: 08 Aug 2005
- wrapped everything into the ‘gloox’ namespace
- revision of XEP-0030 (Service Discovery) implementation
- revision of XEP-0050 (Ad-hoc Commands) implementation
- revision of XEP-0049 (Private XML Storage) implementation
- XEP-0048 (Bookmark Storage)
- XEP-0145 (Annotations)
- XEP-0078 (Non-SASL Authentication)
- XEP-0114 (Jabber Component Protocol)
- SRV lookups
- roster management
- privacy lists
version 0.2 released: 11 Jul 2005
- prepping of JIDs
- XEP-0077 (In-Band Registration)
- headers are installed (no guarantee for API stability, though)
version 0.1 released 04 May 2005
- initial public release
- XEP-0030 (Service Discovery)
- XEP-0049 (Private XML Storage)
- XEP-0050 (Ad-hoc Commands)
- XEP-0092 (Software Version)