X-Git-Url: https://git.r.bdr.sh/rbdr/mobius/blobdiff_plain/ea2027a385e006ac5186e38f7f391dc20df338e7..6729b2be6c22a37bb21863cc1a9ae4abe299f89d:/hotline/client.go diff --git a/hotline/client.go b/hotline/client.go index e812d1d..3969e26 100644 --- a/hotline/client.go +++ b/hotline/client.go @@ -290,7 +290,7 @@ func handleGetFileNameList(ctx context.Context, c *Client, t *Transaction) (res for _, f := range t.Fields { var fn FileNameWithInfo - err = fn.UnmarshalBinary(f.Data) + _, err = fn.Write(f.Data) if err != nil { return nil, nil } @@ -405,11 +405,12 @@ func handleClientGetUserNameList(ctx context.Context, c *Client, t *Transaction) // 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 @@ -580,8 +581,8 @@ func (c *Client) LogIn(login string, password string) error { 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))), ), ) } @@ -625,7 +626,10 @@ func (c *Client) HandleTransaction(ctx context.Context, t *Transaction) error { "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 @@ -646,7 +650,6 @@ func (c *Client) Disconnect() error { 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)