package xmpp import ( "encoding/xml" "log" ) func runStreamPair(s *session) { openStream(s) defer closeStream(s) 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 } } } func openStream(s *session) { 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 closeStream(s *session) { err := s.ed.encodeToken(s.streamEnd) if err != nil { log.Println("Could not encode stream end!") } }