-
v0.21.4 Stable
released this
2023-01-12 14:07:47 +00:00 | 26 commits to main since this releaseAdded
- xmpp: add
UpdateAddr
to set the JID during resource binding - pubsub: various namespaces and generated types
- version: add handler and mux option for software version requests
- blocklist: the ability to report users for spam or abuse
Breaking
- ibr2: the deprecated ibr2 package has been removed, no replacement has been
provided as it implemented an experimental version of the protocol that was
not recommended for use
Fixed
- xmpp: authentication no longer fails if the remote server offers channel
binding - xmpp: better error messages are returned when performing StartTLS
- blocklist: the blocklist functions now use the correct namespace and are
compatible with most servers
Downloads
- xmpp: add
-
v0.21.3 Stable
released this
2022-08-18 11:36:23 +00:00 | 57 commits to main since this releaseAdded
- ibb: the
Expect
method can be used to accept only pre-negotiated IBB
sessions - roster: the ability to set/delete roster items on entities other than the
account usingSetIQ
andDeleteIQ
- upload: new package implementing file transfer by uploading to an HTTP server
- xmpp: support SCRAM authentication with channel binding over TLS 1.3 using
RFC 9266
Breaking
- compress: the compress package has been removed; users of this package can
find a drop in replacement at mellium.im/legacy/compress - ibb: the
Listener
type is now a pointer type
Deprecated
- ibr2: deprecate legacy version of the extensible in-band registration protocol
Fixed
- component: ensure that the stream namespace is set on the session so that the
mux
package and anything else matching on namespaces can be used with
component connections - internal/discover: a resource leak where XRD response bodies were unlimited in
size and could waste bandwidth until the context was canceled even though the
XRD files should never be large - internal/discover: a resource leak where the XRD response body was not closed
until the context timed out - xmpp: a bug where resource binding would respond as if it were a
client-to-server connection even on server-to-server streams
Downloads
- ibb: the
-
v0.21.2 Stable
released this
2022-04-07 12:52:11 +00:00 | 105 commits to main since this releaseAdded
- bookmarks: new package implementing XEP-0402: PEP Native Bookmarks
- crypto: new package implementing XEP-0300: Use of Cryptographic Hash
Functions in XMPP and XEP-0414: Cryptographic Hash Function Recommendations
for XMPP - disco: add support for calculating and receiving XEP-0115: Entity
Capabilities hashes - mux: add ability to advertise features and identities that do not correspond
to a handler - xmpp: ability to create informational-only stream features
Deprecated
- compress: the
compress
package has been deprecated and copied to the
legacy
module aslegacy/compress
, it will be removed entirely in a
future release
Fixed
- websocket: rewrote WebSocket discovery to remove TXT record lookups and fix
broken XRD file lookups - pubsub: the IQ passed in by the user was not respected in
DeleteIQ
- mux: fix a possible crash if a whitespace keepalive is encountered
All Changes: https://github.com/mellium/xmpp/compare/v0.21.1...v0.21.2
Downloads
-
v0.21.1 Stable
released this
2022-02-11 18:07:27 +00:00 | 132 commits to main since this releaseThis release contains a fix for a security issue in the
websocket
package. The issue has been assigned CVE ID CVE-2022-24968.Downloads
-
v0.21.0 Stable
released this
2022-02-08 14:24:19 +00:00 | 135 commits to main since this releaseBreaking
- xmpp: the deprecated methods
InSID
andOutSID
have been dropped in favor
ofIn
andOut
Added:
- carbons: add
WrapReceived
andWrapSent
functions - forward: add
Unwrap
function - ibb: new package implementing XEP-0047: In-Band Bytestreams
- internal/integration/slixmpp: Slixmpp support for integration tests
- pubsub: new package implementing parts of XEP-0060: Publish-Subscribe and
XEP-0163: Personal Eventing Protocol - stanza: add
NSError
,NSClient
, andNSServer
constants
Fixed
- xmpp: IQ error responses are now sent to the original entity, not to
ourselves - mux: unhandled IQ result stanzas with no payload no longer result in an error
- mux: responses are no longer sent for unhandled IQ result stanzas
Downloads
- xmpp: the deprecated methods
-
v0.20.0 Stable
released this
2021-09-26 12:46:12 +00:00 | 221 commits to main since this releaseSecurity
- all: update the default TLS config to disable TLS < 1.2
Breaking
- disco: the
Feature
,Identity
, andItem
types have been moved to the
info
anditems
packages - mux: make namespace checking stricter by adding argument to
New
- roster: rename
version
attribute tover
- roster: the
Push
callback now takes the roster version - roster:
FetchIQ
now takes aroster.IQ
instead of astanza.IQ
so that the
version can be set - styling: decoding tokens now uses an iterator pattern
- stanza: added stanza namespace argument to
Is
,AddID
, andAddOriginID
- xmpp: the
WebSocket
option onStreamConfig
has been removed in favor of
websocket.Negotiator
- xmpp: the
IterIQ
andIterIQElement
methods onSession
now return the
start element token associated with the IQ payload - xmpp:
Negotiator
now takes a stream config function instead of a
StreamConfig
struct
Added
- blocklist: new package implementing XEP-0191: Blocking Command
- carbons: new package implementing XEP-0280: Message Carbons
- commands: new package implementing XEP-0050: Ad-Hoc Commands
- history: implement XEP-0313: Message Archive Management
- form: add
Len
andRaw
methods to form data - muc: new package implementing XEP-0045: Multi-User Chat and XEP-0249: Direct MUC Invitations
- mux:
mux.ServeMux
now implementsinfo.FeatureIter
,info.IdentityIter
,
form.Iter
, anditems.Iter
- roster: the roster
Iter
now returns the roster version being iterated over
from theVersion
method - roster: if a
stanza.Error
is returned from thePush
handler it is now sent
in response to the original roster push. - stanza: implement XEP-0203: Delayed Delivery
- stanza: more general
UnmarshalError
function that doesn't focus on IQs - stanza: add
Error
method toPresence
andMessage
- stanza: errors now return text if present instead of condition when converting
to a string - websocket: add
Negotiator
to replace theWebSocket
option on the stream
config - disco: new
disco.Handler
option to configure amux.ServeMux
to respond to
disco#info requests - disco/info: new package containing the former
disco.Feature
and
disco.Identity
types - xmpp: add
In()
andOut()
methods toSession
for fetching stream info
Fixed
- form: calling
Set
after unmarshaling into an uninitialized form no longer
panics - form: unmarshaling into an existing form now resets the stored values to
prevent data leaks across forms - paging: when unmarshaling sets, index is an attribute, not a child element
- roster: the roster version is now always included, even if empty, to signal
that we support roster versioning - roster: the handler now responds with an IQ result if the roster
Push
handler does not return an error - stanza: unmarshaling error IQs now works even if the error is not the first
child in the payload - styling: pre-block start tokens with no newline had nonsensical formatting
- xmpp: empty IQ iters no longer return EOF when there is no payload
- xmpp:
UnmarshalIQ
andUnmarshalIQElement
no longer return an XML error
on responses with no payload
Deprecated
- xmpp: the
InSID
andOutSID
methods onSession
Downloads
-
v0.19.0 Stable
released this
2021-05-02 12:39:25 +00:00 | 343 commits to main since this releaseBreaking
- color: change list of color vision deficiencies from uint8 to a new type
- disco: rename
GetItems
andGetItemsIQ
toFetchItems
andFetchItemsIQ
to signal that they return an iterator - xmpp: remove unused argument from
DialSession
- jid: splitting a JID no longer trims trailing dots from the domainpart
Added
- delay: new package implementing XEP-0203: Delayed Delivery
- disco: new package implementing XEP-0030: Service Discovery
- jid: normalization of domainparts for display purposes
- paging: new package implementing XEP-0059: Result Set Management
- stanza: new functions
AddID
andAddOriginID
to support unique and stable
stanza IDs - stanza: ability to compare errors with
errors.Is
- stanza: add
Is
function to check if an XMLName is a valid stanza name - stanza: new
Wrap
method onError
- stanza: new
UnmarshalIQError
function - styling: satisfy
fmt.Stringer
for theStyle
type - version: new package implementing XEP-0092: Software Version
- xmpp: satisfy
fmt.Stringer
for theSessionState
type - xmpp: new
UnmarshalIQ
,UnmarshalIQElement
,IterIQ
, andIterIQElement
methods - xtime: times can now be marshaled and unmarshaled as XML attributes
Fixed
- form: if no field type is set the correct default (text-single) is used
- jid: JIDs created with
New
now trim trailing dots from the domainpart - xmpp: unknown IQ error responses are now sent to the correct address
- xmpp: fixed DOS where reads/writes never timed out on
Dial*
functions
Downloads
-
v0.18.0 Stable
released this
2021-02-14 13:38:43 +00:00 | 428 commits to main since this releaseBreaking
- component:
NewClientSession
has been split in toNewSession
and
ReceiveSession
- mux: fixed the signature of the
IQFunc
option to differentiate it from the
normalIQ
option - stream: the
SeeOtherHost
function signature has changed now that payload is
available for all stream errors - stream: the
TokenReader
method signature has changed to make it match the
xmlstream.Marshaler
interface - stream: renamed
ErrorNS
toNSError
for consistency - xmpp: the
Negotiator
type signature has changed - xmpp: the
StreamConfig.Features
field is now a callback instead of a slice - xmpp: the
StreamFeature
type'sParse
function now takes an xml.Decoder
instead of anxml.TokenReader
- xmpp: IQs sent during stream negotiation are now matched against registered
stream features based on the namespace of their payload - xmpp: the session negotiation functions have been renamed and revamped, see
the main package docs for a comprehensive overview - xtime: change the
Time
type to fix unmarshaling
Added
- internal/integration/mcabber: Mcabber support for integration tests
- oob: implementations of
xmlstream.Marshaler
andxmlstream.WriterTo
for the
typesIQ
,Query
, and Data - receipts: add
Request
andRequested
to add receipt requests to messages
without waiting on a response - roster: add
Set
andDelete
functions for roster management - roster: support multiple groups
- s2s: added a new package implementing Bidi
- stanza: add
Error
method on theIQ
type - stream: new
InnerXML
andApplicationError
methods onError
provide a way
to easily construct customized stream errors - stream: ability to compare errors with
errors.Is
- stream: support adding human-readable text to errors
- stream: add
Info
block for use by customNegotiators
- styling: add
Disable
andUnstyled
to support disabling styling on some
messages - websocket: added a new package for dialing WebSocket connections
- xmpp:
SetReadDeadline
andSetWriteDeadline
are now proxied even if the
underlying connection is not anet.Conn
- xmpp: all sent stanzas are now given randomly generated IDs if no ID was
provided (not just IQs) - xmpp: the start token that triggers a call to
Negotiate
is now no longer
popped from the stream before the actual call toNegotiate
for server side
stream features - xmpp: a
SASLServer
stream feature for authenticating users - xmpp: two methods for getting the stream IDs,
InSID
andOutSID
- xmpp: a new state bit,
s2s
to indicate whether the session is a
server-to-server connection
Changed
- dial: resolving SRV records for XMPP over implicit or opportunistic TLS is
now done concurrently to make the initial connection faster - dial: the fallback for dialing an XMPP connection when no SRV records exist is
now more robust - xmpp: stanzas sent over S2S connections now always have the "from" attribute
set - xmpp: the default negotiator now supports negotiating the WebSocket
subprotocol when theWebSocket
option is set
Fixed
- component: the
NewSession
function (previouslyNewClientSession
) now
correctly marks the connection as having been received or initiated - component: the wrong error is no longer returned if Prosody sends an error
immediately after the start of a stream with no ID - dial: dialing an XMPP connection where no xmpps SRV records exist no longer
results in an error (fallback works correctly) - roster: fix infinite loop marshaling lists of items
- stream: errors are now unmarshaled correctly
- xmpp: the Encode methods no longer sometimes duplicate the xmlns attribute
- xmpp: stream errors are now unmarshaled and returned from
Serve
and during
session negotiation - xmpp: XML tokens written directly to the session are now always flushed to the
underlying connection when the token writer is closed - xmpp: stream feature parse functions can no longer read beyond the end of the
feature element - xmpp: the resource binding feature was previously broken for server sessions.
- xmpp: the "to" and "from" attributes on incoming streams are now verified and
an error is returned if they change between stream restarts - xmpp: empty "from" attributes are now removed before marshaling so that a
default value can be set (if applicable)
Downloads
- component:
-
v0.17.1 Stable
released this
2020-11-21 05:24:16 +00:00 | 629 commits to main since this releaseBreaking
- roster: remove workaround for a bug in Go versions prior to 1.14 which is now
the earliest supported version - xmpp: the
Encode
andEncodeElement
methods now take a context and respect
its deadline
Added
- internal/integration: new package for writing integration tests
- internal/integration/ejabberd: Ejabberd support for integration tests
- internal/integration/prosody: Prosŏdy support for integration tests
- internal/xmpptest: new
ClientServer
for testing two connected sessions - xmpp: new
EncodeIQ
andEncodeIQElement
methods
Fixed
- stanza: converting stanzas with empty to/from attributes no longer fails
- xmpp: fixed data race that could result in invalid session state and lead to
writes on a closed session and other state related issues - xmpp: the
Send
andSendElement
methods now respect the context deadline
Downloads
- roster: remove workaround for a bug in Go versions prior to 1.14 which is now
-
v0.17.0 Stable
released this
2020-11-11 13:24:52 +00:00 | 653 commits to main since this releaseBreaking
- sasl2: removed experimental package
- xmpp: removed option to make STARTTLS feature optional
Added
- styling: new package implementing XEP-0393: Message Styling
- xmpp:
ConnectionState
method
Fixed
- roster: iters that have errored no longer panic when closed
- 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
Downloads