File: ChangeLog

package info (click to toggle)
gloox 1.0.18-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 6,732 kB
  • ctags: 6,556
  • sloc: cpp: 45,479; sh: 11,344; makefile: 1,018
file content (932 lines) | stat: -rw-r--r-- 37,554 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
v1.0.18 -- 10 Nov 2016
----------------------
- TLSOpenSSL: fixed wildcard certificate support (#262)
- Pubsub::Event: fixed potential NULL dereference (#257)
- ConnectionTCPServer: fixed listening on local socket
- Adhoc: fixed memory leak (thanks to Erik Horemans)
- documentation fixes (Adhoc::Plugin, StanzaExtension)
- ConnectionTLS: delete old connection in setConnectionImpl() (thanks to Erik Horemans) and clarify this in the documentation
- Tag: Android compilation fix (thanks to Erik Horemans)
- ConnectionSOCKS5Proxy: improved compatibility (thanks to Erik Horemans)
- util: Android compilation fix (thanks to Erik Horemans)
- Client, ClientBase: avoid 'from' attribute when doing resource binding (#265)
- MUCRoom: allow empty message body if extension is present (#264) (thanks to Tom Quackenbush)
- ConnectionBOSH: initialize 'hold' to 1 to improve compatibility (#238)
- ConnectionTCPServer: actually accept incoming connections



v1.0.17 -- 23 Aug 2016
----------------------
Note: This release is not binary compatible with previous releases. It is source compatible.

- MingW compile fixes (thanks to Florian Niebel)
- properly use winsock2 (thanks to Kau)
- a few fixes for uclibc++ compatibility (thanks to Erik Horemans)
- Message: removed bogus hard-coded namespace to fix component use



v1.0.16 -- 16 Jul 2016
----------------------
- PubSubManager: properly include publish options (thanks to Iban Ulov)
- PubSubManager: properly parse subscriptions in ctor (thanks to Joe Best)
- Resource: fixed high memory usage when receiving presence stanzas (#259) (thanks to Manuel)



v1.0.15 -- 25 Apr 2016
----------------------
- Error: fix copy ctor (thanks to Olivier Tchilinguirian)
- ClientBase: properly fix handling of MUC invitation declines (wrong in 1.0.14) (thanks to Martin Hillmeier and Matias Snellingen) (#248)
- MUCRoom: handle SendRoomConfig (thanks to Matias Snellingen) (#253)
- soversion bump, missed that for 1.0.14 (thanks to Vincent Cheng)
- TLSGNUTLSClient: fixed off-by-one error in certificate verification
- IPv6 fixes



v1.0.14 -- 11 Aug 2015
----------------------
Note: This release is not binary compatible with previous releases. It is source compatible.

- IOData: make it possible to pass more than one element as in/out/error data
- Client: fix resetting of presence status text
- TLSSChannel: fix memory leak (thanks to Alexander Weisner)
- Error: added setAppError() to set application-specific error message
- PubSub::Item: added setPayload(), setID()
- Adhoc: return clone of plugin
- PubSub::Manager: fix finding of subscription type (thanks to BillHoo)
- ChatStateFilter: fix enable logic (thanks to Ivan Shmakov)
- MessageEvent: added parsing of <id/> (thanks to Ivan Shmakov)
- MessageEvent: added id() (thanks to Ivan Shmakov)
- ClientBase: handle MUC invitation declines properly (thanks to Matias Snellingen)
- DNS: IPv6 fix (thanks to garimacoe) (#249)
- DelayedDelivery: propagate internal state properly (#251)
- PubSub::Manager: fix GetSubscriberList and GetAffiliateList



v1.0.13 -- 01 Feb 2015
----------------------
Note: This release is not binary compatible with previous releases. It is source compatible.

- fixed compilation with libressl (thanks to Heiko Becker)
- added IO Data (XEP-0244)
- serialise access to compressionZlib::cleanup for thread safety (thanks to Stephen Hilliard)
- prevent infinite loop in Tag::setCData() (thanks to Stephen Hilliard)
- TLSOpenSSL: memory leak on every client connection attempt (thanks to Stephen Hilliard)
- Client: initialize m_smWanted to avoid connection failures (thanks to Stephen Hilliard)



v1.0.12 -- 12 Nov 2014
----------------------
- TLSOpenSSLClient/Server: disabled SSLv3, Google & co. finally support TLS



v1.0.11 -- 13 Sep 2014
----------------------
- GnuTLS: updated use of priority API
- LinkLocal*: compile fixes for MSVC 2008 (thanks to Serhiy M. Vasylenko)
- fixed Debian bug #746857, worked around #758899
- fixed memory leak (#240)
- fixed compatibility with recent GnuTLS  versions, fixed GnuTLS check (thanks to Andreas Metzler) (#231)
- Jingle::Session: fixed state error (thanks to leerymatthew) (#236)



v1.0.10 -- 09 Apr 2014
---------------------
- TLSSChannel: use malloc/realloc/free instead of their legacy Local* variants (fixes #222)
- VCard: remove \r from vcard photos. Fixes a recent change Facebook made to their vcard pictures (patch by Fernando Sanchez)
- Jingle: fixed replying; distinguish between 'from' and 'initiator'; added Jingle::Session::setInitiator()
- Jingle: fixed ::ICEUDP to actually add candidates; added ::Session::initiator(), ::setHandler(), ::sessionAccept( PluginList ); fixed storing of new sessions in ::SessionManager (patches by Erich Keane)
- Jingle: removed Jingle::setInitiator() and ::setResponder() (now provided by ctor)
- AtomicRefCount: fixed compilation on iOS (patch by Erich Keane)
- Jingle::Plugin: added JinglePluginType, pluginType(), and findPlugin() to easily look for and retrieve specific plugins
- ConnectionBOSH: fixed return value for recv() (patch by Sudarshan Prasad)
- Parser: get rid of bogus isValid() (fixes #180, #224)



v1.0.9 -- 15 Oct 2013
---------------------
- changed colon to dash in uid generation to possibly fix #191
- added Channel Binding (needed for SASL SCRAM-SHA-1-PLUS) to SChannel on win32 (untested)
- fixed SCRAM-SHA-1-PLUS



v1.0.8 -- 15 Oct 2013
---------------------
- ConnectionTLS: make stacked TLS/SSL connections work again with HTTP proxies
- added SASL SCRAM-SHA-1/SCRAM-SHA-1-PLUS authentication mechanisms (GnuTLS & OpenSSL only) (#201)
- properly seed the RNG
- SHA::hex(): finalize() only once



v1.0.7.1 -- 11 Oct 2013
---------------------
- fixed/updated the win32 project files



v1.0.7 -- 11 Oct 2013
---------------------
- added Jingle (XEP-0166)
- added Jingle ICE-UDP Transport (XEP-0176)
- added Jingle File Transfer (XEP-0234)
- fixed compilation in iOS7 SDK (thanks to Kurt Vermeersch)
- fixed bug in stanza handling/counting related to Stream Management (patch by Norbert Riedlin)
- added protected ClientBase::stanzasSent() to return sent stanzas (if Stream Management enabled)



v1.0.6 -- 04 Sep 2013
---------------------
- ClientBase: removed check for empty message body --> messages of type chat with empty bodies will be passed on to listeners - required for Message Carbons
- MessageSession: removed check for empty message body --> messages of type chat with empty bodies will be passed on to listeners - required for Message Carbons
- don't send presence after stream resumption
- added ClientBase::sendQueue()
- documentation updates and fixes



v1.0.5 -- 02 Sep 2013
---------------------
- added support for Stanza Forwarding (XEP-0297)
- added support for Message Carbons (XEP-0280)



v1.0.4 -- 30 Aug 2013
---------------------
- added support for Stream Management (XEP-0198)
- Fix some iterator usage for portability related to erase (patch by Daniel Bowen)
- Ensure setting a connection does not leave a deleted value in the member variable for a time (patch by Daniel Bowen)
- Add operator< and relatives to JID so that it can be in a map (patch by Daniel Bowen)
- Sandboxing on Apple doesn't like getprotobyname (patch by Daniel Bowen)
- MessageSession::send(): removed default argument of 2nd parameter to remove ambiguity of MS::send( string ) (#206) (source incompatible!)
- VCard: renamed setPhoto( string ) to setPhotoUri( string ) (#166) (source and binary incompatible)



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 GnuTLS 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 &quot; 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