(b []byte)
| 1036 | type messageReader struct{ c *Conn } |
| 1037 | |
| 1038 | func (r *messageReader) Read(b []byte) (int, error) { |
| 1039 | c := r.c |
| 1040 | if c.messageReader != r { |
| 1041 | return 0, io.EOF |
| 1042 | } |
| 1043 | |
| 1044 | for c.readErr == nil { |
| 1045 | |
| 1046 | if c.readRemaining > 0 { |
| 1047 | if int64(len(b)) > c.readRemaining { |
| 1048 | b = b[:c.readRemaining] |
| 1049 | } |
| 1050 | n, err := c.br.Read(b) |
| 1051 | c.readErr = hideTempErr(err) |
| 1052 | if c.isServer { |
| 1053 | c.readMaskPos = maskBytes(c.readMaskKey, c.readMaskPos, b[:n]) |
| 1054 | } |
| 1055 | rem := c.readRemaining |
| 1056 | rem -= int64(n) |
| 1057 | c.setReadRemaining(rem) |
| 1058 | if c.readRemaining > 0 && c.readErr == io.EOF { |
| 1059 | c.readErr = errUnexpectedEOF |
| 1060 | } |
| 1061 | return n, c.readErr |
| 1062 | } |
| 1063 | |
| 1064 | if c.readFinal { |
| 1065 | c.messageReader = nil |
| 1066 | return 0, io.EOF |
| 1067 | } |
| 1068 | |
| 1069 | frameType, err := c.advanceFrame() |
| 1070 | switch { |
| 1071 | case err != nil: |
| 1072 | c.readErr = hideTempErr(err) |
| 1073 | case frameType == TextMessage || frameType == BinaryMessage: |
| 1074 | c.readErr = errors.New("websocket: internal error, unexpected text or binary in Reader") |
| 1075 | } |
| 1076 | } |
| 1077 | |
| 1078 | err := c.readErr |
| 1079 | if err == io.EOF && c.messageReader == r { |
| 1080 | err = errUnexpectedEOF |
| 1081 | } |
| 1082 | return 0, err |
| 1083 | } |
| 1084 | |
| 1085 | func (r *messageReader) Close() error { |
| 1086 | return nil |
no test coverage detected