Changelog

2.1.0.05
- Digest MD5 real fix

2.1.0.04
- do not send keep alives when the transport is websockets
- improve websocket error handling

2.1.0.03
- set xmpp domain to default realm in SASL MD5 when not included in step1 from the server

2.1.0.02
- add more error handling on disconnect for Xamarin iOS platform
- refactor clientsocket disconnect

2.1.0.01
- expose Socket and StreamParser in XmppStream

2.1.0.00
- fix namespace of forwarded element (message carbons)
- memory and performance improvements in Xml parser
- fix typo in Discomanager.ClearIdentities
- preserve empty attributes in StreamParser
- make Websockets available
- fix for DigestMd5 authentication when qop value is missing (Openfire 4.11)

2.0.0.22
- fix problem in Enums when NameAttribute is missing on some members. Applies to WinRT and CoreFX

2.0.0.21
- (Win. Mono, Xamarin, CoreFx) add TlsProtocols property to XmppStream. Supported or preferred TLS protocols version can be selected then. We have seen servers where
TLS negotation fails in the .NET stack when TLS 1.2 is included (which is teh default in previous MatriX versions)

2.0.0.20
- fix state param in XmppClient.SendAndAck(XmppXElement el, EventHandler cb, object state)
- add StreamResumption property to allow disabling of stream resumption hen stream management is used. Before it was always set to true automatically.
- change OnTls from field to event in XmppClient
- added OnInitialPresence event to XmppClient. This event can be used to consider a XMPP connection ready for data
      
2.0.0.19
- socket improvements for unity (MONO)
- add SocketConnectTimeout property to XmppStream. Allows to adjust the timeout on socket connect attempts

2.0.0.18
- add fields array peorperty to fieldcontainer to allow more fluent code syntax when building data forms
- add values property to fields to simplify building fields with multiple values
- add PolicyViolation error condition

2.0.0.17
- add more overloads for AddField to FieldContainer
- return null for Jid in XmppXElementWithJidAttribute if not present instead of throwing a NullReferenceException

2.0.0.16
- fix OnRegisterInformation callback (make blocking)

2.0.0.15
- lock compression calls to make it thread safe
- add Options class for Pubsub

2.0.0.14
- added new events to XmppStream to have full access to the stream layer OnStreamStart, OnStreamElement, OnStreamEnd
- added event OnStreamManagementRequest to give the client implementation access and control to Streammangement Acks

2.0.0.13
- RosterManager: make CreateAddStanza and CreateRemoveStanza public
- added XEP-0022: Message Events
- add TlsRequired property to StreamFeatures
- XmppStreamException inherits now from XmppException
- TlsException inherits now from XmppException
- fix threading issues with NameAttribute
- Send sender of Bind events to the XmppClient

2.0.0.12
- add attribute for automatic register of custom protocol classes in the future
- fix NullreferenceException in Enum cache
- WINRT: resolve SRV records also with controlchanneltrigger
- WINRT: handle SRV DNS error on connect when no SRV records are set but ResolveSrv is enabled

2.0.0.11
- added XEP-0308: Last Message Correction

2.0.0.10
- fix actions for ad-hoc commands to lower case

2.0.0.9
- fix SRV resolve bug in WinRT builds (http://forum.ag-software.net/post/9236)
- remove managed Dns code from WinRT becasue there is support for it now in RT
- patch for timespans like +00:00 which .NET cannot parse by default.

2.0.0.8
- Digest MD5 fix for servers which put spaces in the messages
- make CreateDiscoverInformationStanza and CreateDiscoverItemsStanza in DiscoManager public

2.0.0.7
- upgrade WinRT Tls to support Tls 1.1 and 1.2

2.0.0.6
- added items property to  Matrix.Xmpp.PubSub.PubSub
- added RequestAllItems to PubSubManager
- aded light version of MatriX for the full .NET Framework without references to System.Windows.Forms and WPF

2.0.0.5
- WinRT version is also able to resolve SRV records now
- added new FailureConditions (AccountDisabled, CredentialsExpired, EncryptionRequired, MalformedRequest)
- added  XEP-0131: Stanza Headers and Internet Metadata

2.0.0.4
- added resumption support for Stream Management
- renamed event OnStreamManagement to OnStreamManagementEnabled
- added Google Gcm class
- read old jabber style and ISO date in jabber:x:delay
- adjust timing for Enable Stream Management for CISCO XCP server
- adding a Resume overload which can resume a stream for a complete new XmppClient by passing the old stream id and counter

2.0.0.3
- added nickname property to  Matrix.Xmpp.Muc.User.Actor

2.0.0.2
=======
- added Message Carbons XEP-0280

2.0.0.1
=======
- added CancelSubscription to PresenceManager

1.6.0.7
=======
- added ResultSet management to retieve class in message archiving

- fixed Version property in VersionIq (was last before)
- fixed crypto exceptions on FIPS platforms

1.6.0.6
=======
- added objects for message archiving XEP 0136
- added stream feature for Message Archiving

1.6.0.5
=======
- fixed prebind for openfire and other servers which require the "session hack"
- release 1.6.0.1 with prebind fix for Openfire and other servers using the deprectaed session feature
- refactored HTTP tunneling code
- fixed nagscreen for different DPI settings. The command buttons disappeared on some of them.
- workaround for misconfigurations on servers, ignore  streamfeature on BOSH connections
- added ability to create external custom SASL mechanisms

1.6.0.0
===============
- fixed a multithreading bug in the IqFilter class
- added Affiliations proeprty to  Matrix.Xmpp.PubSub.PubSub class
- added XEP-0191 Blocking Command
- fixed a NullReferenceException in WP7 Mango socket codes
- added XEP-0107: User Mood
- added XEP-0118: User Tune
- added GetTagLong to XmppXElement
- fixed a threading bug in teh WIndows Phone version
- added XEP-0009 XML RPC
- added Generic HasTag member to XmppXElement
- added XEP-0233 principal hostname
- added XEP-0258 Security Labels
- added fix for account registration becasue ejabberd seems to offer the register feature even after successful registration and authentication
- added XEP-0079 Advanced Message Processing
- improved StreamParser for prefixed attributes
- Added OnBindStart event, this allows user to send custom data with the bind process
- minor changes in FileTransferManager
- added non Blocking mode to filetransfer manager for full asynchronous accept or deny of incoming files
- added autoinvoke for the OnBind event in XmppClient
- added async/await methods to DiscoManager
- added async/await methods to MucManager
- added async/await methods to RosterManager
- added async/await methods to PubsubManager
- added CISCO-VTG-TOKEN Sasl mechanism
- fixed MD5Cng crypto problem on Windows XP
- fixed UpdateList in PrivacyManager
- added async/await methods to PrivacyManager
- added more async/await methods to MucManager (EnterRoomAsync, ExitRoomAsync)
- added TLS 1.1 and TLS 1.2 support for .NET 4.5 build
- socket connect fix (threading issue) on high load when connecting lots of instances at the same time
- added AddValue for boolean fields to xdata fields
- changed Query from XElement to XmppXElement in XmppXElementWithAddressAndId
- added new constructors to XmppClient which accept a Jid
- added Bidi stream feature
- added Error property to Message
- added server dialback xml elements
- added more Hashing helpers
- option to disable key sequencing in BoshSessionRequestEventargs
- added PinIq for component and server as well
- added keep alive function to WinRT builds
- Tls fix for MONO builds
- added GetAttributeIso8601Date and SetAttributeIso8601Date members in XmppXElement for date attributes
- added srv resolver for Android to get SRV lookups working
- added OnStanzaSent handler to track stanzas left the wire after async send operations
- added functionality to extend SASL authentication with custom external SASL mechanisms
- workaround for misconfigurations on servers, ignore  streamfeature on BOSH connections
- added some more properties for message delivery receipts to the message class (XEP-0184).
- allow lower keep alive values (5-600)
- added support for iOS 64bit universal apps
- many minor changes for Unity patform
- added some more properties for message delivery receipts to the message class (XEP-0184).

Version 1.5.3.0
===============
- added NTLM SASL authentication
- added XEP-0066: Out of Band Data
- added generic IqQuery classes for easier creating of IQ queries for client, server and components
- Added SubmitRoomConfiguration to MucManager
- Added destroy function to MucManager
- Added DeclineInvite to MucManager
- Added DeclineInvite event to MucManager
- Added more overloads to MucManager.ChangeAffiliation
- Added ResultSetmanagement XEP-0059
- Added recursive Element search to XmppXElement
- Added GetJid class for Windows Live Messenger Jid lookups
- Added more overloads to RosterManager for callbacks
- Added RetrieveSubscriptionsList to PubSubManager
- Added old legacy SSL for client connections
- Added ModifyList to MucManager
- replaced spaces by dashes in the default resource string because some xmpp server have problems with resources that contain spaces
- improvements to the socket code in the WinRT version
- added Google XOAuth2 SASL mechanism for OAuth2 authentication with Google
- more WinRT optimisations
- added compiled lambda for type generation
- added TypeGeneration selection to Factory
- aded ContainsRosterItem function to Roster
- added RemoveRosterItem function to Roster
- added OnDeny event to FileTransferManager
- check ProxyHostname also for IP-address in resolver
- XmppClient.Send does not throw Exception anymore, it raises the OnError event now instead.
- added last activity XEP-0012
- added XOob XEP-0066: Out of Band Data
- added GetEnumerator to FileStorage and MemoryStorage
- added Values to FileStorage and MemoryStorage
- added Keys to FileStorage and MemoryStorage
- added Blocksize Property to FileTransferManager
- added ControlChannelTrigger to WinRT version
- 64bit fix in DNS API resolver (srv records)
- added Received property to Message class
- added ReceiptRequested property to Message class
- added XEP-0144 roster item exchange
- added OnRosterExchange event to RosterManager
- fix in XML parser that caused a loop when receiving partial entities in an attribute
- added XEP-0092: Software Version
- added RequestAllSubscriptions to PubSubManager
- added RequestSubscriptions to PubSubManager
- added a Unsubscribe overload to the PubSubManager which allows to pass a subid
- added Text property to  Matrix.Xmpp.Sasl.Failure
- started to add fluent APIs to XmppXElement, Up, Text, AddTag, SetAttribute
- added XData property to Search for easier access to XData forms
- renamed Data to XData in Register class
- fixed a cross thread exception for Windows Phone in the keep alive timer
- added RequestRoster to XmppClient

Version 1.5.0.0
===============
- threading bugfix in OnBeforeSasl
- added privacy lists (XEP-0016)
- added PrivacyIq
- added Privacymanager
- added XPathFiler for Silverlight version
- added more overloads to EnterRoom in Mucmanager
- added BOSH prebind in full version
- added OnCreateWebRequest event to XmppStream where you can pass additonal Webrequest stuff for BOSH conections.
- added approved attribute to roter items, new feature of RFC6121
- added XEP-0055 Jabber Search
- updated for Facebooks OAUTH authentication
- added XEP-0184 Message Delivery Receipts
- fixed MD5 hashing bug (http://archive.msdn.microsoft.com/SilverlightMD5)
- added OnCreateBoshSession event for overwriting Bosh default session request params
- added XEP-0224 user attention
- extended DisoManager, can now automatically reply to info requests, and build the Caps hash. new  methods: AddFeature, RemoveFeature, AddIdentity, Removeidentity, BuildCapsHash, new properties: AutoReplyToDiscoInfo   
- added BookMarkStorageIq
- conplete rewrite and resdesign of the BOSH component (BoshSocket)
- complete rewrite of the BOSH component
- fixed bug in caps hashes
- added File Dictionary
- added storage providers for file and memory
- DiscoManager can now automatically send and request caps
- Discomanager can cache caps to file or memory
- added OnStreamHeader event to allow client and internal components to access the stream header
- added caps to presence
- added on BindError
- added all Html-Im elements definded in the XEP
- added change password to xmppclient
- added geolocation
- added Jingle classes
- added XMucUser Property to Message class
- added see-other-host error class

Version 1.4.0.0
===============
- small fix in disco
- fixed problem when no weight is given for SRV records
- added DIGEST-MD5 to Silverlight and WP7 version
- added OnBeforeSendPresence event to modify outgoing presences with custom content.
- added auth stream feature (XEP-0078)
- added non SASL authentication
- fixed XElement.ToString() for Windows Phone
- added XEP-0033 extended stanza addressing
- optimized BOSH for WP7 and latest Openfire
- added cdata
- updated Silverlight version for Sl4
- added ability in Silverlight to download policy over HTTP (new feature in SL4)
- try to connect to all hosts in the srv records (full .NET version only)
- Added Remove account to XmppClient

Version 1.3.1.0
===============
- added SCRAM-SHA-1 SASL mechanism
- fixed MLink shutdown problem
- added XMPP Pings
- XmppClient does automatically replay to Pings when AutoReplyToPing is true
- added handled propery to IqEventArgs
- reuse IqEventArgs object in the IqFilter now and set Handled to true when the callback is raised.
- not-allowed error parsing was missing
- added xml:lang to XmppXElement
- added XEP-0115: Entity Capabilities
- added XEP-0202: Entity Time
- added classes for XEP-0198 Stream Managment
- added OnBeginSasl event to XmppClient for manual selecting a SASL mechanism in a client
- optimized xml parser and got rid of the time consuming PartialTokenExceptions
- added Facebook's X-FACEBOOK-PLATFORM Sasl mechanism
- Tls for Mobile version is using Bouncy Castle Crypto now

Version 1.3.0.0
===============
- moved RosterManager to Matrix.Xmpp.Client namespace
- added Data Property to OwnerQuery
- added presence filter property to XmppClient
- optimized MessageFilter for multithreading
- optimized PresenceFilter for multithreading
- added xmpp bookmarks
- added private storage
- added Clone member to Jid for fast cloning
- added SASL EXTERNAL
- added PubsubManager.RequestNodeConfiguration
- added PubsubManager.SubmitNodeConfiguration
- added PubSubAffiliations
- added file tranfer (IBB, SI...)
- added Xpath filtering
- added ad hoc commands
- added bookmarks
- added chatstates
- added roster versioning
- updated compression to new namespace in stream features
- added XHtml-IM support
- optimized iq filter to handle only type error and result