• Stable v0.21.2 c43e76b1f5

    v0.21.2

    SamWhited released this 4 months ago | 44 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
     
  • Stable v0.21.1 7113e3f879

    v0.21.1

    SamWhited released this 6 months ago | 71 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
     
  • Stable v0.21.0 e76b53fd80

    v0.21.0

    SamWhited released this 6 months ago | 74 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
     
  • Stable v0.20.0 a2421055d2

    v0.20.0

    SamWhited released this 11 months ago | 160 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
     
  • Stable v0.19.0 e4b506fd93

    v0.19.0

    SamWhited released this 1 year ago | 282 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
     
  • Stable v0.18.0 a7ac61e4ef

    v0.18.0

    SamWhited released this 2 years ago | 0 commits to master 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
     
  • Stable v0.17.1 e65fd25d85

    v0.17.1

    SamWhited released this 2 years ago | 201 commits to master 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
     
  • Stable v0.17.0 335b1c869b

    v0.17.0

    SamWhited released this 2 years ago | 225 commits to master 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
     
  • Stable v0.16.0 24fae7e84a

    v0.16.0

    SamWhited released this 2 years ago | 275 commits to master since this release

    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
    Downloads
     
  • Stable v0.15.0 dd65895b62

    v0.15.0

    SamWhited released this 2 years ago | 294 commits to master since this release

    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
    Downloads