From 564a2379860271e8d75cba55c7202bd1404a6520 Mon Sep 17 00:00:00 2001 From: "Alexander \"PapaTutuWawa" Date: Sat, 1 Apr 2023 12:51:26 +0200 Subject: [PATCH] feat(xep): Set the resource if SASL2 resulted in a resource --- packages/moxxmpp/lib/src/negotiators/sasl2.dart | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/packages/moxxmpp/lib/src/negotiators/sasl2.dart b/packages/moxxmpp/lib/src/negotiators/sasl2.dart index e27398b..5a4dc6f 100644 --- a/packages/moxxmpp/lib/src/negotiators/sasl2.dart +++ b/packages/moxxmpp/lib/src/negotiators/sasl2.dart @@ -1,4 +1,5 @@ import 'package:collection/collection.dart'; +import 'package:moxxmpp/src/jid.dart'; import 'package:moxxmpp/src/namespaces.dart'; import 'package:moxxmpp/src/negotiators/namespaces.dart'; import 'package:moxxmpp/src/negotiators/negotiator.dart'; @@ -233,6 +234,15 @@ class Sasl2Negotiator extends XmppFeatureNegotiatorBase { // We're done attributes.setAuthenticated(); attributes.removeNegotiatingFeature(saslXmlns); + + // Check if we also received a resource with the SASL2 success + final jid = JID.fromString( + nonza.firstTag('authorization-identifier')!.innerText(), + ); + if (!jid.isBare()) { + attributes.setResource(jid.resource); + } + return const Result(NegotiatorState.done); } else if (nonza.tag == 'challenge') { // We still have to negotiate