Skip to content

Commit

Permalink
Disconnect websocket on error
Browse files Browse the repository at this point in the history
  • Loading branch information
tulir committed Dec 19, 2023
1 parent c520244 commit 89a35f3
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 4 deletions.
13 changes: 9 additions & 4 deletions internal/provider/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@ func (p *provider) WebsocketLoop() {

registerCode := ""

Loop:
for {
_, message, err := p.ws.ReadMessage()
if err != nil {
Expand All @@ -127,20 +128,24 @@ func (p *provider) WebsocketLoop() {
var request registerCommandData
if err := json.Unmarshal(rawCommand.Data, &request); err != nil {
p.log.Err(err).Msg("Failed to decode register request")
break
break Loop
}
response, err := RegisterProvider(request, p)
if err != nil {
p.log.Err(err).Msg("Failed to register provider")
break
buf, err := json.Marshal(RawCommand[errorData]{Command: "response", Data: errorData{"invalid token"}, ReqID: rawCommand.ReqID})
if err == nil {
p.ws.WriteMessage(websocket.TextMessage, buf)
}
break Loop
}
p.log.Debug().Msg("Registered provider")

// Send back register response before setting the flag (ws is single writer)
buf, err := json.Marshal(RawCommand[registerCommandData]{Command: "response", Data: *response, ReqID: rawCommand.ReqID})
if err != nil {
p.log.Err(err).Msg("Failed to encode register response")
break
break Loop
}
p.ws.WriteMessage(websocket.TextMessage, buf)

Expand All @@ -150,7 +155,7 @@ func (p *provider) WebsocketLoop() {
buf, err := json.Marshal(RawCommand[struct{}]{Command: "pong", ReqID: rawCommand.ReqID})
if err != nil {
p.log.Err(err).Msg("Failed to encode ping response")
break
break Loop
}
p.ws.WriteMessage(websocket.TextMessage, buf)
case "response":
Expand Down
4 changes: 4 additions & 0 deletions internal/provider/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,7 @@ type registerCommandData struct {
Code string `json:"code"`
Secret string `json:"secret"`
}

type errorData struct {
Error string `json:"error"`
}

0 comments on commit 89a35f3

Please sign in to comment.