diff options
author | xengineering <me@xengineering.eu> | 2023-06-28 10:28:44 +0200 |
---|---|---|
committer | xengineering <me@xengineering.eu> | 2023-06-28 10:28:44 +0200 |
commit | 9afa580f3f3207ac449be86c1a305cb716b77f76 (patch) | |
tree | 93429d634b17291fe970dc4ae32e84ec18f7bef1 /xmpp/session.go | |
parent | c600e10faf59e96be6b0ad440bd4c5d8cc13d38a (diff) | |
parent | 4b4fe72fdb100df492b1df1960775ff8b98d6dfc (diff) | |
download | limox-9afa580f3f3207ac449be86c1a305cb716b77f76.tar limox-9afa580f3f3207ac449be86c1a305cb716b77f76.tar.zst limox-9afa580f3f3207ac449be86c1a305cb716b77f76.zip |
Merge branch 'stream-pair'
This adds the source file xmpp/stream_pair.go with the central function
runStreamPair(). This function is called once by a session and could
call itself. That way an initial stream and nested streams are
implemented and closed via return and defer.
Diffstat (limited to 'xmpp/session.go')
-rw-r--r-- | xmpp/session.go | 46 |
1 files changed, 1 insertions, 45 deletions
diff --git a/xmpp/session.go b/xmpp/session.go index e0819da..f14cd34 100644 --- a/xmpp/session.go +++ b/xmpp/session.go @@ -49,26 +49,9 @@ func (s *session) run() { go s.ed.run() defer func() { s.ed.terminator <- true }() - s.openStream() - defer s.closeStreams() - - s.sasl() - s.out <- SessionConnect{} - for { - select { - case data := <-s.in: - switch data.(type) { - case SessionShouldDisconnect: - return - default: - log.Printf("Unknown data '%d'!\n", data) - } - case _ = <-s.rx: - // TODO route received XML token here - } - } + runStreamPair(s) } func (s *session) startTransport() error { @@ -88,30 +71,3 @@ func (s *session) startTransport() error { return nil } - -func (s *session) openStream() { - start := xml.StartElement{ - xml.Name{"jabber:client", "stream:stream"}, - []xml.Attr{ - xml.Attr{xml.Name{"", "from"}, s.jid}, - xml.Attr{xml.Name{"", "to"}, domainpart(s.jid)}, - xml.Attr{xml.Name{"", "version"}, "1.0"}, - xml.Attr{xml.Name{"", "xml:lang"}, "en"}, - xml.Attr{xml.Name{"", "xmlns:stream"}, "http://etherx.jabber.org/streams"}, - }, - } - - s.streamEnd = start.End() - - err := s.ed.encodeToken(start) - if err != nil { - log.Println("Could not encode stream start!") - } -} - -func (s *session) closeStreams() { - err := s.ed.encodeToken(s.streamEnd) - if err != nil { - log.Println("Could not encode stream end!") - } -} |