Commit Graph

400 Commits (6a3833b27d0b616b48a98ea4ffe71ba5d3b877eb)
 

Author SHA1 Message Date
rcorniere 6a3833b27d Removed last bits of codecov 5 years ago
remicorniere 51db430cff
Merge pull request #130 from remicorniere/master
Removed codeship and codecov. We now use github actions and coveralls.
5 years ago
rcorniere bfe2b7a30f Removed codeship and codecov. We now use github actions and coveralls. 5 years ago
remicorniere a95b53d9ad
Update with coveralls badge. Removed codecov badge 5 years ago
remicorniere 10078e2a1b
Merge pull request #124 from Crypho/github-ci
Setup GitHub actions to run tests
5 years ago
remicorniere 80ba790555
Added coverage
Should detect race conditions, use the same covermove as the current mode in test.sh, and update code coverage on the repo. 
See : https://github.com/marketplace/actions/coveralls-github-action
5 years ago
remicorniere c60edf4771
Added "-race" flag to tests run command
Kind of testing edits on someone else's PR too
5 years ago
Jerome Sautret 3b84cb796e Add 0.3.0 changelog 5 years ago
remicorniere 1822089db6 Tests for Component and code style fixes (#129)
* Tests for Component and code style fixes
5 years ago
Wichert Akkerman 6f35ae4103 Fix triggers 5 years ago
remicorniere 7d89353156 Fix SIGSEGV in xmpp_component (#126)
* SIGSEGV in xmpp_component example with Prosody #126
5 years ago
Mickael Remond 6aa1e668ee
Fix issues after refactor
Relates to #126
5 years ago
Wichert Akkerman 1539e4f193 Setup GitHub actions to run tests 5 years ago
Mickael Remond 47976624c9
Preparing v0.2.0 Changelog before version release 5 years ago
Mickael Remond 4efde692a2
Add placeholder in README for routing packets and get IQ responses 5 years ago
Mickael Remond 08878ed4a2
Update go.sum file 5 years ago
Mickael Remond ce05c3226c
Fix failing tests 5 years ago
Mickael Remond 3e94880916
Merge branch 'master' of https://github.com/FluuxIO/go-xmpp 5 years ago
Wichert Akkerman eda5c23c54 Add SendIQ to StreamClient and Sender
This makes it possible to use SendIQ from PostConnect and route handlers.
5 years ago
Wichert Akkerman a0e74051fd Use a channel based API for SendIQ
This makes sending IQ more idiomatic Go, but more importantly it solves
a problem with contexts that were not being cancelled correctly with
the previous API.

As a side-effect of this change `Route.route` must now be invoked in a
go-routine to prevent deadlocks. This also allows for stanzas to be processed
in parallel, which can result in a nice performance win.
5 years ago
Wichert Akkerman 83bc8581fd Cleanup the IQ result route API
Simplify the API in several ways:

- provide the context to the IQ result handler, making it possible to pass in
  extra context and handle timeouts within the handler.
- pass the stanza in as an IQ type, removing the need to always type-cast it
  in the handler
- remove Router.HandleIqResult and Router.HandleFuncIqResult. Since the router
  is private to Client nobody would ever use these, and they do not really make
  things simpler anyway.
5 years ago
Wichert Akkerman 8088e3fa7e Add Client.SendIQ method 5 years ago
Wichert Akkerman 070934743f Add tests for iq result routes 5 years ago
Wichert Akkerman 6a25856e85 We need to lock isResultRoutes
The map is updated from multiple goroutines, so it needs to be locked.
5 years ago
Wichert Akkerman 8e1dac6ffa Add IQ result routes to the Router
These are used to quickly match IQ result stanzas and invoke a handler
for them. IQ result routes take precendence of normal routes.
5 years ago
Wichert Akkerman 21f6a549db Always add an id to IQ queries 5 years ago
Mickael Remond 1d7db9ceee
Comments clean-up 5 years ago
Wichert Akkerman 0227596f90 Increase size of XML decoder internal buffers
Since a transport (and a streamlogger) does not implement io.ByteReader
xml.Decoder wraps it using `bufio.NewReader(transport)` so it can easily read
bytes one at a time. This has the unfortuante effect of resulting in a panic if
we try to parse a stanza that is larger than the default buffer size of 4096
bytes.

To fix this we wrap the transport using `bufio.NewReaderSize()` with a much
larger buffer size.
5 years ago
Mickael Remond ebb6e845bf
Update requirements to go1.13 as required by new websockets dependencies 5 years ago
Mickael Remond a16483397d
Update test platform to go1.13 5 years ago
Mickael Remond ef2c0b465e
Update examples 5 years ago
Wichert Akkerman 2f8ec7b36f Only try startTls if the connection is not secure 5 years ago
Wichert Akkerman 6da1962962 Correctly open new streams after StartTLS and auth 5 years ago
Wichert Akkerman 33446ad0ba Create a new stream after StartTLS 5 years ago
Wichert Akkerman 390f9b065e Replace readWriter and decoder after StartTLS 5 years ago
Wichert Akkerman 60e2cdd088 Close the transport if NewSession fails
The makes sure we always send the `</stream:stream>` or `<close/>` correctly.
5 years ago
Wichert Akkerman a6709a1f71 Do not try to create a stream logger before we have a net.Conn 5 years ago
Wichert Akkerman 38bdcaec36 Do not copy more bytes than were read 5 years ago
Wichert Akkerman ffadd331dd Add a go function to always read websockets
Websocket need to have a Reader running at all times in order to
allow Ping to work (because a Reader is the only thing that will
correctly handle control frames). To faciliate this a go function
is introduced that will always read from the websocket until it
is cancelled. Read data is passed to the transport via a channel.
5 years ago
Wichert Akkerman 92329b48e6 Transports need to handle open/close stanzas
XMPP and WebSocket transports require different open and close stanzas. To
handle this the responsibility handling those and creating the XML decoder is
moved to the Transport.
5 years ago
Wichert Akkerman 25fd476328 Negotiate xmpp websocket subprotocol 5 years ago
Wichert Akkerman 36e153f981 Allow transports to define their own ping mechanism 5 years ago
Wichert Akkerman d0f2b492ac Fix XMPP TLS config 5 years ago
Wichert Akkerman 87ff01ac68 Fix websocket connect timeout 5 years ago
Wichert Akkerman 01d78a1e5c Fix error result from Transport.Connect errors 5 years ago
Wichert Akkerman 8fb3e33a1f Only do ensurePort for XMPP transport
If we always do this the address gets mangled, breaking the transport
selection.
5 years ago
Wichert Akkerman a189748b9c Fix test for ws connection 5 years ago
Wichert Akkerman 06a76160c8 Use transport factory function 5 years ago
Wichert Akkerman 8db608ccc1 Add IsSecure() to Transport 5 years ago
Wichert Akkerman 7fa4b06705 Move address into transport config
This makes it possible to use a factory function to create a transport of the right type and not having to repeat the address when calling Transport.Connect()
5 years ago