• v0.21.4 dba923e3f2

    v0.21.4 Stable

    SamWhited released this 2023-01-12 14:07:47 +00:00 | 26 commits to main since this release

    Added

    • 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
     
  • v0.21.3 364629c395

    v0.21.3 Stable

    SamWhited released this 2022-08-18 11:36:23 +00:00 | 57 commits to main since this release

    Added

    • 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 using SetIQ and DeleteIQ
    • 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
     
  • v0.21.2 c43e76b1f5

    v0.21.2 Stable

    SamWhited released this 2022-04-07 12:52:11 +00:00 | 105 commits to main since this release

    Added

    Deprecated

    • compress: the compress package has been deprecated and copied to the
      legacy module as legacy/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 7113e3f879

    v0.21.1 Stable

    SamWhited released this 2022-02-11 18:07:27 +00:00 | 132 commits to main since this release

    This 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 e76b53fd80

    v0.21.0 Stable

    SamWhited released this 2022-02-08 14:24:19 +00:00 | 135 commits to main since this release

    Breaking

    • xmpp: the deprecated methods InSID and OutSID have been dropped in favor
      of In and Out

    Added:

    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
     
  • v0.20.0 a2421055d2

    v0.20.0 Stable

    SamWhited released this 2021-09-26 12:46:12 +00:00 | 221 commits to main since this release

    Security

    • all: update the default TLS config to disable TLS < 1.2

    Breaking

    • disco: the Feature, Identity, and Item types have been moved to the
      info and items packages
    • mux: make namespace checking stricter by adding argument to New
    • roster: rename version attribute to ver
    • roster: the Push callback now takes the roster version
    • roster: FetchIQ now takes a roster.IQ instead of a stanza.IQ so that the
      version can be set
    • styling: decoding tokens now uses an iterator pattern
    • stanza: added stanza namespace argument to Is, AddID, and AddOriginID
    • xmpp: the WebSocket option on StreamConfig has been removed in favor of
      websocket.Negotiator
    • xmpp: the IterIQ and IterIQElement methods on Session 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 and Raw methods to form data
    • muc: new package implementing XEP-0045: Multi-User Chat and XEP-0249: Direct MUC Invitations
    • mux: mux.ServeMux now implements info.FeatureIter, info.IdentityIter,
      form.Iter, and items.Iter
    • roster: the roster Iter now returns the roster version being iterated over
      from the Version method
    • roster: if a stanza.Error is returned from the Push 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 to Presence and Message
    • stanza: errors now return text if present instead of condition when converting
      to a string
    • websocket: add Negotiator to replace the WebSocket option on the stream
      config
    • disco: new disco.Handler option to configure a mux.ServeMux to respond to
      disco#info requests
    • disco/info: new package containing the former disco.Feature and
      disco.Identity types
    • xmpp: add In() and Out() methods to Session 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 and UnmarshalIQElement no longer return an XML error
      on responses with no payload

    Deprecated

    • xmpp: the InSID and OutSID methods on Session
    Downloads
     
  • v0.19.0 e4b506fd93

    v0.19.0 Stable

    SamWhited released this 2021-05-02 12:39:25 +00:00 | 343 commits to main since this release

    Breaking

    • color: change list of color vision deficiencies from uint8 to a new type
    • disco: rename GetItems and GetItemsIQ to FetchItems and FetchItemsIQ
      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 and AddOriginID 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 on Error
    • stanza: new UnmarshalIQError function
    • styling: satisfy fmt.Stringer for the Style type
    • version: new package implementing XEP-0092: Software Version
    • xmpp: satisfy fmt.Stringer for the SessionState type
    • xmpp: new UnmarshalIQ, UnmarshalIQElement, IterIQ, and IterIQElement
      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 a7ac61e4ef

    v0.18.0 Stable

    SamWhited released this 2021-02-14 13:38:43 +00:00 | 428 commits to main since this release

    Breaking

    • component: NewClientSession has been split in to NewSession and
      ReceiveSession
    • mux: fixed the signature of the IQFunc option to differentiate it from the
      normal IQ 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 to NSError 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's Parse function now takes an xml.Decoder
      instead of an xml.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 and xmlstream.WriterTo for the
      types IQ, Query, and Data
    • receipts: add Request and Requested to add receipt requests to messages
      without waiting on a response
    • roster: add Set and Delete functions for roster management
    • roster: support multiple groups
    • s2s: added a new package implementing Bidi
    • stanza: add Error method on the IQ type
    • stream: new InnerXML and ApplicationError methods on Error 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 custom Negotiators
    • styling: add Disable and Unstyled to support disabling styling on some
      messages
    • websocket: added a new package for dialing WebSocket connections
    • xmpp: SetReadDeadline and SetWriteDeadline are now proxied even if the
      underlying connection is not a net.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 to Negotiate for server side
      stream features
    • xmpp: a SASLServer stream feature for authenticating users
    • xmpp: two methods for getting the stream IDs, InSID and OutSID
    • 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 the WebSocket option is set

    Fixed

    • component: the NewSession function (previously NewClientSession) 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
     
  • v0.17.1 e65fd25d85

    v0.17.1 Stable

    SamWhited released this 2020-11-21 05:24:16 +00:00 | 629 commits to main since this release

    Breaking

    • roster: remove workaround for a bug in Go versions prior to 1.14 which is now
      the earliest supported version
    • xmpp: the Encode and EncodeElement 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 and EncodeIQElement 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 and SendElement methods now respect the context deadline
    Downloads
     
  • v0.17.0 335b1c869b

    v0.17.0 Stable

    SamWhited released this 2020-11-11 13:24:52 +00:00 | 653 commits to main since this release

    Breaking

    • sasl2: removed experimental package
    • xmpp: removed option to make STARTTLS feature optional

    Added

    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