manage normal close in response to close frame
This commit is contained in:
parent
ca3b83abee
commit
fff5d068d1
|
@ -157,7 +157,9 @@ func clientReader(c *client){
|
||||||
msgErr := msg.check(frag != nil)
|
msgErr := msg.check(frag != nil)
|
||||||
// fmt.Printf("> %.3f us\n", float64(time.Now().UnixNano()-s0)/1e3)
|
// fmt.Printf("> %.3f us\n", float64(time.Now().UnixNano()-s0)/1e3)
|
||||||
|
|
||||||
if msgErr == ErrInvalidPayload {
|
if msgErr == CloseFrame {
|
||||||
|
break
|
||||||
|
} else if msgErr == ErrInvalidPayload {
|
||||||
closeStatus = INVALID_PAYLOAD
|
closeStatus = INVALID_PAYLOAD
|
||||||
break
|
break
|
||||||
} else if msgErr != nil {
|
} else if msgErr != nil {
|
||||||
|
@ -300,7 +302,7 @@ func (c *client) close(status MessageError, clientACK bool){
|
||||||
/* (4) Send message */
|
/* (4) Send message */
|
||||||
msg.Send(c.io.sock)
|
msg.Send(c.io.sock)
|
||||||
// if err != nil {
|
// if err != nil {
|
||||||
// fmt.Printf("[close] send error (%s0\n", err)
|
// fmt.Printf("[close] send error (%s0\n", err)
|
||||||
// }
|
// }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,6 +14,7 @@ var ErrInvalidSize = fmt.Errorf("Received invalid payload size")
|
||||||
var ErrInvalidPayload = fmt.Errorf("Received invalid utf8 payload")
|
var ErrInvalidPayload = fmt.Errorf("Received invalid utf8 payload")
|
||||||
var ErrInvalidCloseStatus = fmt.Errorf("Received invalid close status")
|
var ErrInvalidCloseStatus = fmt.Errorf("Received invalid close status")
|
||||||
var ErrInvalidOpCode = fmt.Errorf("Received invalid OpCode")
|
var ErrInvalidOpCode = fmt.Errorf("Received invalid OpCode")
|
||||||
|
var CloseFrame = fmt.Errorf("Received close Frame")
|
||||||
|
|
||||||
|
|
||||||
// Maximum Header Size = Final/OpCode + isMask/Length + Length + Mask
|
// Maximum Header Size = Final/OpCode + isMask/Length + Length + Mask
|
||||||
|
@ -291,7 +292,7 @@ func (m *Message) check(fragment bool) error{
|
||||||
return ErrInvalidCloseStatus
|
return ErrInvalidCloseStatus
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return CloseFrame
|
||||||
|
|
||||||
case PING:
|
case PING:
|
||||||
return nil
|
return nil
|
||||||
|
|
Loading…
Reference in New Issue