X-Git-Url: https://git.r.bdr.sh/rbdr/mobius/blobdiff_plain/0ed5132769e88cb385b5240986b706430f0ccd72..a55350daaf83498b7a237c027ad0dd2377f06fee:/hotline/client_conn.go diff --git a/hotline/client_conn.go b/hotline/client_conn.go index e21d8b1..0a7768f 100644 --- a/hotline/client_conn.go +++ b/hotline/client_conn.go @@ -54,7 +54,7 @@ func (cc *ClientConn) sendAll(t int, fields ...Field) { } func (cc *ClientConn) handleTransaction(transaction Transaction) error { - requestNum := binary.BigEndian.Uint16(transaction.Type) + requestNum := binary.BigEndian.Uint16(transaction.Type[:]) if handler, ok := TransactionHandlers[requestNum]; ok { for _, reqField := range handler.RequiredFields { field := transaction.GetField(reqField.ID) @@ -81,7 +81,7 @@ func (cc *ClientConn) handleTransaction(transaction Transaction) error { transactions, err := handler.Handler(cc, &transaction) if err != nil { - return err + return fmt.Errorf("error handling transaction: %w", err) } for _, t := range transactions { cc.Server.outbox <- t @@ -168,10 +168,10 @@ func (cc *ClientConn) notifyOthers(t Transaction) (trans []Transaction) { func (cc *ClientConn) NewReply(t *Transaction, fields ...Field) Transaction { return Transaction{ IsReply: 0x01, - Type: []byte{0x00, 0x00}, + Type: [2]byte{0x00, 0x00}, ID: t.ID, clientID: cc.ID, - ErrorCode: []byte{0, 0, 0, 0}, + ErrorCode: [4]byte{0, 0, 0, 0}, Fields: fields, } } @@ -181,9 +181,9 @@ func (cc *ClientConn) NewErrReply(t *Transaction, errMsg string) Transaction { return Transaction{ clientID: cc.ID, IsReply: 0x01, - Type: []byte{0, 0}, + Type: [2]byte{0, 0}, ID: t.ID, - ErrorCode: []byte{0, 0, 0, 1}, + ErrorCode: [4]byte{0, 0, 0, 1}, Fields: []Field{ NewField(FieldError, []byte(errMsg)), },