Changelog for Old Versions

version 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 released: 22 Oct 2009

  • fixed potential crash in SOCKS5BytestreamManager

version released: 19 Oct 2009

  • fixed potential crash in Rostermanager::fill() (when reusing the RosterManager)
  • fixed gnutls check in (using pkg-config)

version released: 23 Sep 2009

  • fixed SChannel on NT4
  • fixed tests for FreeBSD
  • preliminary workaround for connection problems when using recent OpenSSL + gtalk
  • accept DLL_EXPORT

version 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 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 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 released: 22 Mar 2008

  • added Parser::reset()
  • added Client::login()
  • fixed detection of res_query (Gentoo bug #212316)

version released: 05 Mar 2008

  • MUCRoom: don’t leak a MessageSession on presence error
  • compile fix for gcc 4.3 (thanks to Cyril Brulebois)

version released: 18 Jan 2008

  • MUCRoom: properly recover after nick name conflict
  • TLSSChannel: properly recover after disconnect

version released: 17 Jan 2008

  • fix for gcc 4.3 compile fix

version 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 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 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 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
  • 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 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)