123456789101112131415161718192021222324252627282930313233343536373839 |
- package libbox
- import (
- "encoding/binary"
- "io"
- E "github.com/sagernet/sing/common/exceptions"
- "github.com/sagernet/sing/common/varbin"
- )
- func readError(reader io.Reader) error {
- var hasError bool
- err := binary.Read(reader, binary.BigEndian, &hasError)
- if err != nil {
- return err
- }
- if hasError {
- errorMessage, err := varbin.ReadValue[string](reader, binary.BigEndian)
- if err != nil {
- return err
- }
- return E.New(errorMessage)
- }
- return nil
- }
- func writeError(writer io.Writer, wErr error) error {
- err := binary.Write(writer, binary.BigEndian, wErr != nil)
- if err != nil {
- return err
- }
- if wErr != nil {
- err = varbin.Write(writer, binary.BigEndian, wErr.Error())
- if err != nil {
- return err
- }
- }
- return nil
- }
|