| 189 | } |
| 190 | |
| 191 | func (c *StreamClient) Read() (int, error) { |
| 192 | if _, err := io.ReadFull(c.Server, c.RB[:2+16]); err != nil { |
| 193 | return 0, err |
| 194 | } |
| 195 | if _, err := c.sa.Open(c.RB[:0], c.sn, c.RB[:2+16], nil); err != nil { |
| 196 | return 0, err |
| 197 | } |
| 198 | l := int(binary.BigEndian.Uint16(c.RB[:2])) |
| 199 | if _, err := io.ReadFull(c.Server, c.RB[2+16:2+16+l+16]); err != nil { |
| 200 | return 0, err |
| 201 | } |
| 202 | NextNonce(c.sn) |
| 203 | if _, err := c.sa.Open(c.RB[:2+16], c.sn, c.RB[2+16:2+16+l+16], nil); err != nil { |
| 204 | return 0, err |
| 205 | } |
| 206 | NextNonce(c.sn) |
| 207 | return l, nil |
| 208 | } |
| 209 | |
| 210 | func (c *StreamClient) Clean() { |
| 211 | x.BP12.Put(c.cn) |