Skip to content

Commit 1e92089

Browse files
authored
Merge pull request #155 from remicorniere/Stream_Management_Patch
Stream Management
2 parents 22ba8d1 + 7850d07 commit 1e92089

28 files changed

+1898
-153
lines changed

CHANGELOG.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,21 @@
11
# Fluux XMPP Changelog
22

3+
## v0.5.0
4+
5+
### Changes
6+
7+
- Added support for XEP-0198 (Stream management)
8+
- Added message queue : when using "SendX" methods on a client, messages are also stored in a queue. When requesting
9+
acks from the server, sent messages will be discarded, and unsent ones will be sent again. (see https://xmpp.org/extensions/xep-0198.html#acking)
10+
- Added support for stanza_errors (see https://xmpp.org/rfcs/rfc3920.html#def C.2. Stream error namespace and https://xmpp.org/rfcs/rfc6120.html#schemas-streamerror)
11+
- Added separate hooks for connection and reconnection on the client. One can now specify different actions to get triggered on client connect
12+
and reconnect, at client init time.
13+
- Client state update is now thread safe
14+
- Changed the Config struct to use pointer semantics
15+
- Tests
16+
- Refactoring, including removing some Fprintf statements in favor of Marshal + Write and using structs from the library
17+
instead of strings
18+
319
## v0.4.0
420

521
### Changes

_examples/go.sum

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,9 @@ github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/9
9999
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
100100
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
101101
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
102+
github.com/processone/mpg123 v1.0.0 h1:o2WOyGZRM255or1Zc/LtF/jARn51B+9aQl72Qace0GA=
102103
github.com/processone/mpg123 v1.0.0/go.mod h1:X/FeL+h8vD1bYsG9tIWV3M2c4qNTZOficyvPVBP08go=
104+
github.com/processone/soundcloud v1.0.0 h1:/+i6+Yveb7Y6IFGDSkesYI+HddblzcRTQClazzVHxoE=
103105
github.com/processone/soundcloud v1.0.0/go.mod h1:kDLeWpkRtN3C8kIReQdxoiRi92P9xR6yW6qLOJnNWfY=
104106
github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
105107
github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso=
@@ -155,6 +157,7 @@ golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73r
155157
golang.org/x/net v0.0.0-20190110200230-915654e7eabc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
156158
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
157159
golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
160+
golang.org/x/net v0.0.0-20190620200207-3b0461eec859 h1:R/3boaszxrf1GEUWTVDzSKVwLmSJpwZ1yqXm8j0v2QI=
158161
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
159162
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
160163
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=

_examples/xmpp_echo/xmpp_echo.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ func main() {
2828
router := xmpp.NewRouter()
2929
router.HandleFunc("message", handleMessage)
3030

31-
client, err := xmpp.NewClient(config, router, errorHandler)
31+
client, err := xmpp.NewClient(&config, router, errorHandler)
3232
if err != nil {
3333
log.Fatalf("%+v", err)
3434
}

_examples/xmpp_jukebox/xmpp_jukebox.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ func main() {
5454
handleIQ(s, p, player)
5555
})
5656

57-
client, err := xmpp.NewClient(config, router, errorHandler)
57+
client, err := xmpp.NewClient(&config, router, errorHandler)
5858
if err != nil {
5959
log.Fatalf("%+v", err)
6060
}

_examples/xmpp_oauth2/xmpp_oauth2.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ func main() {
2828
router := xmpp.NewRouter()
2929
router.HandleFunc("message", handleMessage)
3030

31-
client, err := xmpp.NewClient(config, router, errorHandler)
31+
client, err := xmpp.NewClient(&config, router, errorHandler)
3232
if err != nil {
3333
log.Fatalf("%+v", err)
3434
}

_examples/xmpp_pubsub_client/xmpp_ps_client.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ func main() {
3838
log.Println("Received a message ! => \n" + string(data))
3939
})
4040

41-
client, err := xmpp.NewClient(config, router, func(err error) { log.Println(err) })
41+
client, err := xmpp.NewClient(&config, router, func(err error) { log.Println(err) })
4242
if err != nil {
4343
log.Fatalf("%+v", err)
4444
}

_examples/xmpp_websocket/xmpp_websocket.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ func main() {
2626
router := xmpp.NewRouter()
2727
router.HandleFunc("message", handleMessage)
2828

29-
client, err := xmpp.NewClient(config, router, errorHandler)
29+
client, err := xmpp.NewClient(&config, router, errorHandler)
3030
if err != nil {
3131
log.Fatalf("%+v", err)
3232
}

auth.go

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,20 @@ func authPlain(socket io.ReadWriter, decoder *xml.Decoder, mech string, user str
6060
raw := "\x00" + user + "\x00" + secret
6161
enc := make([]byte, base64.StdEncoding.EncodedLen(len(raw)))
6262
base64.StdEncoding.Encode(enc, []byte(raw))
63-
_, err := fmt.Fprintf(socket, "<auth xmlns='%s' mechanism='%s'>%s</auth>", stanza.NSSASL, mech, enc)
63+
64+
a := stanza.SASLAuth{
65+
Mechanism: mech,
66+
Value: string(enc),
67+
}
68+
data, err := xml.Marshal(a)
69+
if err != nil {
70+
return err
71+
}
72+
n, err := socket.Write(data)
6473
if err != nil {
6574
return err
75+
} else if n == 0 {
76+
return errors.New("failed to write authSASL nonza to socket : wrote 0 bytes")
6677
}
6778

6879
// Next message should be either success or failure.

0 commit comments

Comments
 (0)