Surface peer errors to event bus #235
|
@ -86,7 +86,8 @@ func (e *Engine) eventHandler() {
|
||||||
log.Debugf("Sending Message to Peer.....")
|
log.Debugf("Sending Message to Peer.....")
|
||||||
ppc := e.connectionsManager.GetPeerPeerConnectionForOnion(ev.Data[event.RemotePeer])
|
ppc := e.connectionsManager.GetPeerPeerConnectionForOnion(ev.Data[event.RemotePeer])
|
||||||
if ppc != nil && ppc.GetState() == AUTHENTICATED {
|
if ppc != nil && ppc.GetState() == AUTHENTICATED {
|
||||||
ppc.SendPacket([]byte(ev.Data[event.Data]))
|
err := ppc.SendPacket([]byte(ev.Data[event.Data]))
|
||||||
|
e.eventManager.Publish(event.NewEvent(event.SendMessageToPeerError, map[event.Field]string{event.RemotePeer: ev.Data[event.RemotePeer], event.Error: err.Error()}))
|
||||||
} else {
|
} else {
|
||||||
e.eventManager.Publish(event.NewEvent(event.SendMessageToPeerError, map[event.Field]string{event.RemotePeer: ev.Data[event.RemotePeer], event.Error: "peer is offline or the connection has yet to finalize"}))
|
e.eventManager.Publish(event.NewEvent(event.SendMessageToPeerError, map[event.Field]string{event.RemotePeer: ev.Data[event.RemotePeer], event.Error: "peer is offline or the connection has yet to finalize"}))
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@ package connections
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"cwtch.im/cwtch/protocol/connections/peer"
|
"cwtch.im/cwtch/protocol/connections/peer"
|
||||||
|
"errors"
|
||||||
"git.openprivacy.ca/openprivacy/libricochet-go"
|
"git.openprivacy.ca/openprivacy/libricochet-go"
|
||||||
"git.openprivacy.ca/openprivacy/libricochet-go/channels"
|
"git.openprivacy.ca/openprivacy/libricochet-go/channels"
|
||||||
"git.openprivacy.ca/openprivacy/libricochet-go/connection"
|
"git.openprivacy.ca/openprivacy/libricochet-go/connection"
|
||||||
|
@ -33,18 +34,19 @@ func (ppc *PeerPeerConnection) GetState() ConnectionState {
|
||||||
}
|
}
|
||||||
|
|
||||||
// SendPacket sends data packets on the optional data channel
|
// SendPacket sends data packets on the optional data channel
|
||||||
func (ppc *PeerPeerConnection) SendPacket(data []byte) {
|
func (ppc *PeerPeerConnection) SendPacket(data []byte) error {
|
||||||
ppc.WaitTilAuthenticated()
|
ppc.WaitTilAuthenticated()
|
||||||
ppc.connection.Do(func() error {
|
return ppc.connection.Do(func() error {
|
||||||
channel := ppc.connection.Channel("im.cwtch.peer.data", channels.Outbound)
|
channel := ppc.connection.Channel("im.cwtch.peer.data", channels.Outbound)
|
||||||
if channel != nil {
|
if channel != nil {
|
||||||
peerchannel, ok := channel.Handler.(*peer.CwtchPeerDataChannel)
|
peerchannel, ok := channel.Handler.(*peer.CwtchPeerDataChannel)
|
||||||
if ok {
|
if ok {
|
||||||
log.Debugf("Sending packet\n")
|
log.Debugf("Sending packet\n")
|
||||||
peerchannel.SendMessage(data)
|
peerchannel.SendMessage(data)
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return errors.New("failed to send packet to peer")
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue