#Changelog
All notable changes to this project will be documented in this file.
#Unreleased
#Breaking
- sasl2: remove experimental package
- xmpp: remove option to make STARTTLS feature optional
#Added
- xmpp:
ConnectionState
method
#Fixed
- sasl2: using TeeIn/TeeOut no longer breaks SCRAM based SASL mechanisms
- xmpp: using TeeIn/TeeOut no longer breaks SCRAM based SASL mechanisms
- xmpp: stream negotiation no longer fails when the only required features
cannot yet be negotiated because they depend on optional features
#v0.16.0 — 2020-03-08
#Breaking
- xmpp: the end element is now included in the token stream passed to handlers
- xmpp: SendElement now wraps the entire stream, not just the first element
#Added
- receipts: new package implementing XEP-0333: Chat Markers
- roster: add handler and mux option for roster pushes
#Fixed
- mux: fix broken
Decode
and possible infinite loop due to cutting off the
last token in a buffered XML token stream
- roster: work around a bug in Go 1.13 where
io.EOF
may be returned from the
XML decoder
#v0.15.0 — 2020-02-28
#Breaking
- all: dropped support for versions of Go before 1.13
- mux: move
Wrap{IQ,Presence,Message}
functions to methods on the stanza types
#Added
- mux: ability to select handlers by stanza payload
- mux: new handler types and API
- ping: a function for easily encoding pings and handling errors
- ping: a handler and mux option for responding to pings
- stanza: ability to convert stanzas to/from
xml.StartElement
- stanza: API to simplify replying to IQs
- uri: new package for parsing XMPP URI's and IRI's
- xtime: new package for handling XEP-0202: Entity Time and XEP-0082: XMPP Date and Time Profiles
#Fixed
- dial: if a port number is present in a JID it was previously ignored
#v0.14.0 — 2019-08-18
#Breaking
- ping: remove
IQ
function and replace with struct based API
#Added
- ping: add
IQ
struct based encoding API
#Changed
- stanza: a zero value
IQType
now marshals as "get"
- xmpp: read timeouts are now returned instead of ignored
#Fixed
- dial: fix broken fallback to domainpart
- xmpp: allow whitespace keepalives
- roster: the iterator now correctly closes the underlying TokenReadCloser
- xmpp: fix bug where stream processing could stop after an IQ was received
#v0.13.0 — 2019-07-27
#Breaking
- xmpp: change
Handler
to take an xmlstream.TokenReadEncoder
- xmpp: replace
EncodeToken
and Flush
with TokenWriter
- xmpp: replace
Token
with TokenReader
#Added
- examples/echobot: add graceful shutdown on SIGINT
- xmpp:
Encode
and EncodeElement
methods
#Changed
- xmpp: calls to
Serve
no longer return io.EOF
on success
#Fixed
- examples/echobot: calling
Send
from within the handler resulted in deadlock
- xmpp: closing the input stream was racy, resulting in invalid XML
#v0.12.0
#Breaking
- dial: moved network dialing types and functions into new package.
- dial: use underlying net.Dialer's DNS Resolver in Dialer.
- stanza: change API of
WrapIQ
and WrapPresence
to not abuse pointers
- xmpp: add new
SendIQ
API and remove response from Send
and SendElement
- xmpp: new API for writing custom tokens to a session
#Fixed
- xmpp: let
Session.Close
operate concurrently with SendElement
et al.