for _, f := range t.Fields {
var fn FileNameWithInfo
- err = fn.UnmarshalBinary(f.Data)
+ _, err = fn.Write(f.Data)
if err != nil {
return nil, nil
}
// fields, but shxd sneaks in FieldChatSubject (115) so it's important to filter explicitly for the expected
// field type. Probably a good idea to do everywhere.
if bytes.Equal(field.ID, []byte{0x01, 0x2c}) {
- u, err := ReadUser(field.Data)
- if err != nil {
- return res, err
+ var user User
+ if _, err := user.Write(field.Data); err != nil {
+ return res, fmt.Errorf("unable to read user data: %w", err)
}
- users = append(users, *u)
+
+ users = append(users, user)
}
}
c.UserList = users
TranLogin, nil,
NewField(FieldUserName, []byte(c.Pref.Username)),
NewField(FieldUserIconID, c.Pref.IconBytes()),
- NewField(FieldUserLogin, negateString([]byte(login))),
- NewField(FieldUserPassword, negateString([]byte(password))),
+ NewField(FieldUserLogin, encodeString([]byte(login))),
+ NewField(FieldUserPassword, encodeString([]byte(password))),
),
)
}
"IsReply", t.IsReply,
"type", binary.BigEndian.Uint16(t.Type),
)
- outT, _ := handler(ctx, c, t)
+ outT, err := handler(ctx, c, t)
+ if err != nil {
+ c.Logger.Error("error handling transaction", "err", err)
+ }
for _, t := range outT {
if err := c.Send(t); err != nil {
return err
return c.Connection.Close()
}
-
func (c *Client) HandleTransactions(ctx context.Context) error {
// Create a new scanner for parsing incoming bytes into transaction tokens
scanner := bufio.NewScanner(c.Connection)