summaryrefslogtreecommitdiff
path: root/xmpp/router.go
diff options
context:
space:
mode:
Diffstat (limited to 'xmpp/router.go')
-rw-r--r--xmpp/router.go10
1 files changed, 6 insertions, 4 deletions
diff --git a/xmpp/router.go b/xmpp/router.go
index 839f870..9d69033 100644
--- a/xmpp/router.go
+++ b/xmpp/router.go
@@ -12,7 +12,7 @@ import (
// entry of the routingTable.
type routingTable []struct {
name xml.Name
- handler func([]xml.Token)
+ handler func(*session, []xml.Token)
}
// getRoutingTable returns the routing table used in
@@ -22,14 +22,16 @@ type routingTable []struct {
// variable would have the problem that it could be altered during execution.
func getRoutingTable() routingTable {
return routingTable{
- // TODO fill with entries
+ {xml.Name{`http://etherx.jabber.org/streams`, `features`}, streamFeaturesHandler},
+ {xml.Name{`urn:ietf:params:xml:ns:xmpp-sasl`, `success`}, saslSuccessHandler},
+ {xml.Name{`urn:ietf:params:xml:ns:xmpp-sasl`, `failure`}, saslFailureHandler},
}
}
// route determines the correct handler function for the given XML element by a
// given routingTable. In addition it executes the determined handler function.
// If no handler function is found an error message is send via the log module.
-func route(e []xml.Token, t routingTable) {
+func route(s *session, e []xml.Token, t routingTable) {
var name xml.Name
// TODO a stronger definition of an XML element (as here
@@ -50,7 +52,7 @@ func route(e []xml.Token, t routingTable) {
for _, r := range t {
if name == r.name {
- r.handler(e)
+ r.handler(s, e)
return
}
}