equal
deleted
inserted
replaced
473 "bind"}}} |
473 "bind"}}} |
474 if res != "" { |
474 if res != "" { |
475 msg.Any.Any = &Unrecognized{XMLName: xml.Name{Local: |
475 msg.Any.Any = &Unrecognized{XMLName: xml.Name{Local: |
476 "resource"}, Chardata: res} |
476 "resource"}, Chardata: res} |
477 } |
477 } |
|
478 f := func(st Stanza) bool { |
|
479 if st.XType() == "error" { |
|
480 log.Println("Resource binding failed") |
|
481 return false |
|
482 } |
|
483 bind := st.XChild() |
|
484 if bind == nil { |
|
485 log.Println("nil resource bind") |
|
486 return false |
|
487 } |
|
488 jidEle := bind.Any |
|
489 if jidEle == nil { |
|
490 log.Println("nil resource") |
|
491 return false |
|
492 } |
|
493 jidStr := jidEle.Chardata |
|
494 if jidStr == "" { |
|
495 log.Println("empty resource") |
|
496 return false |
|
497 } |
|
498 jid := new(JID) |
|
499 if !jid.Set(jidStr) { |
|
500 log.Println("Can't parse JID %s", jidStr) |
|
501 return false |
|
502 } |
|
503 cl.Jid = *jid |
|
504 log.Printf("Bound resource: %s", cl.Jid.String()) |
|
505 return true |
|
506 } |
|
507 cl.HandleStanza(msg.Id, f) |
478 cl.xmlOut <- msg |
508 cl.xmlOut <- msg |
479 } |
509 } |
480 |
510 |
481 func (cl *Client) HandleStanza(id string, f func(Stanza) bool) { |
511 func (cl *Client) HandleStanza(id string, f func(Stanza) bool) { |
482 h := &stanzaHandler{id: id, f: f} |
512 h := &stanzaHandler{id: id, f: f} |