v1.0.3 -- 22 Jul 2013 --------------------- - Changed license to GPLv3 - removed space from VS project name (--> gloox-1.0) - VCardUpdate: fixed handling of empty hash (#203) - VCardUpdate: added hasPhoto() to inidicate whether there was a photo tag (#203) - compilation fixed when using getaddrinfo (patch by Roy van Dam) - Receipt: recognize id attribute (patch by DÃdac Pérez) (#208) - MessageSession: added MS::send( string& ) to properly provide a base for MUCMS::send( string& ) (#206) - really fixed memory leak in prep::idna() - gloox.vcproj: removed not-yet-present tlsgnutlsserver.cpp/.h v1.0.2 -- 05 Jul 2013 --------------------- - SOCKS5Bytestream: Don't wait for incoming data, notify about open stream immediately upon connection (patch by Erik Horemans) - fixed/updated Code::Blocks and VS project files (fixes #197, #198) - fixed memory leak in ClientBase (fixes #204) - fixed memory leak in prep::idna() v1.0.1 -- 29 Jun 2013 --------------------- - Added support for Serverless Messaging (XEP-0174) - TLSOpenSSLServer: compilation fix - don't bail on DNS TCP queries - fixed µs timeout value (now defaults to 1.000.000) - omit port in initial greeting (usually -1 anyway) - fixed SHA1 hashes of 55 byte strings (#164) - fixed CFLAGS and LIBS in pkg-config file (#163) - fixed SOCKS5Bytestream double close notification - tell gcrypt that we're using pthreads (if available) - ClientBase: send IQ error response for unsupported features - ClientBase: fixed potential infinite loop on IQ error - ClientBase: fixed NTLM auth - ClientBase, SEF: mutex-protected SE handling - PubSub: added 'subscribe & configure' - PubSub: added optional subid - SOCKS5BytestreamServer: expose local socket - RosterManager: don't use string-comparison on JIDs; use JID class - NonSASLAuth: fixed resource usage by deprecating ClientBase::m_selectedResource - InBandBytestream: don't call handler in dtor - util: fixed long2string() - fixed a few leaks in GnutTLS client code (#181) - VCard: made getters const (#186) (binary-incompatible change!) - PubsubManager: fixed using wrong Tag (#190) - Search: fixed search() (#193) - DNS: fix socket leak if no network connection is available (#192) - PubsubManager: unconditionally call handleItemPublication() (#194) - configure: Added -lgcrypt (dependency of GNUTLS) v1.0 -- 31 Oct 2009 --------------------- general changes and additions: - XEP-0020 (Feature Negotiation) wrapper - XEP-0060 (Publish-Subscribe) - XEP-0071 (XHTML-IM) wrapper - XEP-0115 (Entity Capabilities) - XEP-0124 (BOSH) - XEP-0172 (User Nickname) - XEP-0184 (Message Receipts) - XEP-0199 (XMPP Ping) - XEP-0206 (XMPP Over BOSH) - integrated XEP-0047 (In-Band Bytestreams) with XEP-0096 (File Transfer) - integrated XEP-0066 (Out-of-Band Data) with XEP-0096 (File Transfer) - added IQ, Message, Subscription, Presence classes - added SASL error malformed-request from RFC 3920bis - added StanzaExtension and ported all XEPs - DataForm: removed 'Form' prefix from DataForm::DataFormType enum members - DataForm: removed 'Field' prefix from DataForm::FieldType enum members - JID: made setters return success/failure - Parser: feed() returns -1 on success, parse error position otherwise - Parser and Tag: support mixed content xml - Parser: XML namespace support - ConnectionListener: added onResourceBind( resource ) to notify about successfully bound resources - ConnectionListener: onResourceBindError() takes pointer to Error object - ConnectionListener: onSessionCreateError() takes pointer to Error object - Client: support for binding and unbinding of additional resources - SIProfileFTHandler: handleFTRequest() doesn't pass an id anymore, just a sid - SIProfileFT: acceptFTRequest() and declineFTRequest() don't take an id argument anymore, just a sid - Tag: check input for XML conformance - Tag: made findTag(), findTagList(), findCData() const - RosterItem: SubscriptionEnum moved to gloox namespace; renamed to SubscriptionType - MessageSession::send(): added StanzaExtensionList parameter - added SASL NTLM authentication (experimental, windows only) - added VC++ Express 2008 project file, updated Code::Blocks and MSVC++ project files deprecated: - MUCRoomHandler::handleMUCMessage( MUCRoom*, string, string, bool, string, bool ), use handleMUCMessage( MUCRoom*, Message&, bool ) removed: - class XDelayedDelivery, use DelayedDelivery - JID::fullJID(), use ctor - JID::empty(), use operator bool() - Tag::empty(), use operator bool() - Stanza::createMessageStanza(), Stanza::createPresenceStanza(), Stanza::createIqStanza(), Stanza::createSubscriptionStanza(), use Message, Presence, IQ, Subscription instead ... and many more... v0.9.9.12 -- 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 v0.9.9.11 -- 22 Oct 2009 ------------------------ - fixed potential crash in SOCKS5BytestreamManager v0.9.9.10 -- 19 Oct 2009 ------------------------ - fixed potential crash in Rostermanager::fill() (when reusing the RosterManager) - fixed gnutls check in configure.ac (using pkg-config) v0.9.9.9 -- 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 v0.9.9.8 -- 16 Aug 2009 ----------------------- - support tls zlib compression with openssl (wrong magic number used) - fixed setting client cert/key in gnutls - properly exported InstantMUCRoom and UniqueMUCRoom (GLOOX_API) - added MUCRoom::setRoomConfig() v0.9.9.7 -- 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 v0.9.9.6 -- 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 v0.9.9.5 -- 22 Mar 2008 ----------------------- - added Parser::reset() - added Client::login() - fixed detection of res_query (Gentoo bug #212316) v0.9.9.4 -- 05 Mar 2008 ----------------------- - MUCRoom: don't leak a MessageSession on presence error - compile fix for gcc 4.3 (thanks to Cyril Brulebois) v0.9.9.3 -- 18 Jan 2008 ----------------------- - MUCRoom: properly recover after nick name conflict - TLSSChannel: properly recover after disconnect v0.9.9.2 -- 17 Jan 2008 ----------------------- - fix for the gcc 4.3 compile fix v0.9.9.1 -- 16 Jan 2008 ----------------------- - gcc 4.3 compile fix v0.9.9 -- 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 v0.9.8 -- 07 Dec 2007 --------------------- - Client: clear list of presence exts in removePresenceExtensions() - SIManager: fixed ID tracking - MUCRoom: fixed bit clearing - MessageEventFilter: fixed bit clearing v0.9.7 -- 13 Nov 2007 --------------------- - InbandBytestreamManager: marked as deprecated - InbandBytestreamManager: fixed ID tracking - MessageSession: added setThreadID() - better overall MinGW support v0.9.6.1 -- 25 Oct 2007 ----------------------- - win32 build fix v0.9.6 -- 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 v0.9.5 -- 27 Sep 2007 --------------------- general changes and additions: - PrivacyManager: do not allow store()'ing of empty lists (aka removeList) - PrivacyManager: properly handle the error case in 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() v0.9.4.1 -- 15 Aug 2007 ----------------------- - ClientBase: fix TLS wrapper instantiation v0.9.4 -- 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() v0.9.3 -- 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 v0.9.2 -- 23 Jun 2007 --------------------- - Parser: accept ' and > in attribute values and cdata - Parser: log parse errors - SIManager, SIProfileFT: return requested stream's id (SID) - SIProfileFTHandler: new argument: stream's ID (SID) v0.9.1 -- 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 v0.9 -- 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 - added msec timeout to recv() - Client: fetch roster immediately after requesting roster:delimiter - delete() --> delete - 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() - HTTP proxy support, incl. Basic auth support - Tag: basic XPath support - 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& name, const std::string& label = "", const std::string& value = "", DataFormFieldType type = FieldTypeTextSingle ); - 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 - SOCKS5 proxy support (RFC 1928), incl. username/password auth (RFC 1929) - 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 </stream> - 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) v0.8.8-sic -- 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 v0.8.7-sic -- 06 Mar 2007 ------------------------- - ClientBase: allow cancellation of ID tracking - VCardManager: allow cancellation of VCard operations - ClientBase: ugly fix to avoid onDisconnect() being called twice v0.8.6-sic -- 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-registrataion of commands - Adhoc: supply IQ id in handleAdhocCommand() v0.8.5-sic -- 10 Nov 2006 ------------------------- - JEP-0055 (Jabber Search) - DataForm::tag() returns non-const Tag - enable DataForm to parse <reported> and <item> elements - DataFormBase: FieldList holds pointers to DataFormFields now - DataForm: added simplified ctor - MessageSession::send(): added default for subject param (empty) - MessageSession: allow conversation started with bare JID to 'upgrade' to full JID when reply comes in - 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 v0.8.4-sic -- 18 Sep 2006 ------------------------- - compile fix for Mac OS X (thanks to Geoff Schmidt) v0.8.3-sic -- 14 Sep 2006 ------------------------- - ClientBase: added whitespace ping() - VCard: fixed typo (vcard --> vCard) v0.8.2-sic -- 11 Sep 2006 ------------------------- - find dn_skipname on Mac OS X (thanks to Geoff Schmidt) - look for libgnutls-config in specified path, if given - VCardHandler: return non-const VCard (*) - fixed compilation on SkyOS - maybe-fixed resolver on HPUX - **experimental** native TLS support on win32 (*) these changes render 0.8.2 source incompatible compared to 0.8 v0.8.1-sic -- 28 Jul 2006 ------------------------- - Registration: allow registration with services (*) - async inbandbytestreams ack - fixed memory leak in RosterItem - RosterListener: announce un/available resource in itemUn/Available() (*) - 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 - Adhoc: provide requesting entities JID in the callback (*) - DataForm: fixed few minor field handling bugs - Client: allow lazy username provisioning (*) these changes render 0.8.1 source incompatible compared to 0.8 v0.8 -- 08 Apr 2006 ------------------- - added an extensible message session abstraction - added automatic MessageSession creation facilities upon incoming messages - JEP-0022 (Message Events) - JEP-0047 (In-Band Bytestreams) - JEP-0054 (vcard-temp) - JEP-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() - RosterItem & RosterListener: more const & return values and parameters - RosterItem: support for multiple resources, introducing RosterItem::Resource - Stanza: added 'int priority()' - renamed enum members from ALL_UPPER_CASE to MixedCase - 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 v0.7.6.1 -- 10 Feb 2006 ----------------------- - fixed OpenSSL check on MinGW v0.7.6 -- 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 (JEP-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 v0.7.5 -- 05 Jan 2006 -------------------- - fixed a crash occuring if no DNS servers could be reached - added virtual destructors to *Handlers - fixed " bug - various documentation updates v0.7.4 -- 15 Dec 2005 -------------------- - RosterListener: added asynchronous subscription request notification - LastActivity: fixed 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() v0.7.3 -- 10 Dec 2005 -------------------- - added optional OpenSSL support v0.7.2 -- 06 Dec 2005 -------------------- - RosterManager: fixed a problem with servers not supporting private XML storage v0.7.1 -- 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 v0.7 -- 02 Nov 2005 ------------------- - JEP-0004 (Data Forms) (complete, experimental) - JEP-0013 (Flexible Offline Message Retrieval) (complete) - JEP-0083 (Nested Roster Groups) (complete) - JEP-0138 (Stream Compression) (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 (thanks to Peter Speybrouck & Robert Szeleney) - made ClientBase::streamErrorAppCondition() const - added ClientBase::removeConnectionListener() - namespace checking for SASL success v0.6.3 -- 15 Sep 2005 --------------------- - #include fixes for MacOS X v0.6.2 -- 23 Sep 2005 --------------------- - pkgconfig file v0.6.1 -- 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. v0.6 -- 02 Sep 2005 ------------------- - more namespace checking - extraction of application-specific error condition element of stream & stanza errors - SASL Anonymous mechanism - JEP-0012 (Last Activity) (experimental) - fixes for a couple of small problems reported by Konstantin Klyagin - made checkStreamVersion() a protected virtual - extensive doc update: mainpage - added 'from' attribute to presence stanzas (seems necessary under some circumstances, reported by Johan Bondeson) - disabled sending of ack'ing 'subscribe'/'unsubscribe' in response to 'subscribed'/'unsubscribed' due to problems with jabberd2 v0.5 -- 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 JEP-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 JEP-0092 (Software Version) implementation: OS support, create a valid 'result' type of packet v0.4.1 -- 25 Aug 2005 --------------------- - install missing header files (gloox.h, tag.h, stanza.h) v0.4 -- 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 - a generic tag handler (for non-XMPP:Core elements) - 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 v0.3.2 -- 09 Aug 2005 --------------------- - fixed namespace typos - correctly handle explicitely given port numbers v0.3.1 -- 09 Aug 2005 --------------------- - documentation updates - fixed crash with bare JID in constructor of JClient v0.3 -- 08 Aug 2005 --------------------- - use ID tracking whereever possible/feasible - privacy lists (RFC 3921) - wrapped everything in 'gloox' namespace - JEP-0048 (Bookmark Storage) - JEP-0145 (Annotations) - replaced IQ-Tag handler with better IQ-Namespace handler - removed generic (catch-all) IQ handler - JEP-0114 (Jabber Component Protocol) - unregister *Handlers and *Listeners on destruction (thanks to Ray Keung) - overhauled Private XML Storage - revision of JEP-0050 (Ad-hoc Commands) - revision of JEP-0030 (Service Discovery) - overhauled Roster management - finished RosterItem class - JEP-0078 (Non-SASL Authentication) - SRV lookups (w/o sorting by weight/cost) - fix for JEP-0077 implementation to be compatible with ejabberd 0.9.1 which sends registration values back in the result. v0.2 -- 08 Jul 2005 --------------------- - JEP-0077 (In-Band Registration) - prepping of JIDs according to RFC 3920 v0.1 -- 04 May 2005 --------------------- * initial release with support for - JEP-0030 (Service Discovery) - JEP-0049 (Private XML Storage) - JEP-0050 (Ad-hoc Commands) (providing commands to remote entities is implemented) - JEP-0092 (Software Version) - removed iksemelmm dependency - iq xmlns filter - introduced result handler - extracted disco into separate class