Sfoglia il codice sorgente

Set correct simple ack

tags/0.9
9seconds 7 anni fa
parent
commit
71614ee615
2 ha cambiato i file con 7 aggiunte e 7 eliminazioni
  1. 6
    7
      wrappers/mtproto_abridged.go
  2. 1
    0
      wrappers/mtproto_proxy.go

+ 6
- 7
wrappers/mtproto_abridged.go Vedi File

44
 	if _, err := io.CopyN(buf, m.conn, 1); err != nil {
44
 	if _, err := io.CopyN(buf, m.conn, 1); err != nil {
45
 		return nil, errors.Annotate(err, "Cannot read message length")
45
 		return nil, errors.Annotate(err, "Cannot read message length")
46
 	}
46
 	}
47
-	msgLength := uint8(buf.Bytes()[0])
47
+	msgLength := uint32(buf.Bytes()[0])
48
 	buf.Reset()
48
 	buf.Reset()
49
 
49
 
50
 	m.logger.Debugw("Packet first byte",
50
 	m.logger.Debugw("Packet first byte",
59
 		msgLength -= mtprotoAbridgedQuickAckLength
59
 		msgLength -= mtprotoAbridgedQuickAckLength
60
 	}
60
 	}
61
 
61
 
62
-	msgLength32 := uint32(msgLength)
63
 	if msgLength == mtprotoAbridgedSmallPacketLength {
62
 	if msgLength == mtprotoAbridgedSmallPacketLength {
64
 		if _, err := io.CopyN(buf, m.conn, 3); err != nil {
63
 		if _, err := io.CopyN(buf, m.conn, 3); err != nil {
65
 			return nil, errors.Annotate(err, "Cannot read the correct message length")
64
 			return nil, errors.Annotate(err, "Cannot read the correct message length")
66
 		}
65
 		}
67
 		number := utils.Uint24{}
66
 		number := utils.Uint24{}
68
 		copy(number[:], buf.Bytes())
67
 		copy(number[:], buf.Bytes())
69
-		msgLength32 = utils.FromUint24(number)
68
+		msgLength = utils.FromUint24(number)
70
 	}
69
 	}
71
-	msgLength32 *= 4
70
+	msgLength *= 4
72
 
71
 
73
 	m.logger.Debugw("Packet length",
72
 	m.logger.Debugw("Packet length",
74
-		"length", msgLength32,
73
+		"length", msgLength,
75
 		"simple_ack", m.opts.ReadHacks.SimpleAck,
74
 		"simple_ack", m.opts.ReadHacks.SimpleAck,
76
 		"quick_ack", m.opts.ReadHacks.QuickAck,
75
 		"quick_ack", m.opts.ReadHacks.QuickAck,
77
 		"counter", m.readCounter,
76
 		"counter", m.readCounter,
78
 	)
77
 	)
79
 
78
 
80
 	buf.Reset()
79
 	buf.Reset()
81
-	buf.Grow(int(msgLength32))
82
-	if _, err := io.CopyN(buf, m.conn, int64(msgLength32)); err != nil {
80
+	buf.Grow(int(msgLength))
81
+	if _, err := io.CopyN(buf, m.conn, int64(msgLength)); err != nil {
83
 		return nil, errors.Annotate(err, "Cannot read message")
82
 		return nil, errors.Annotate(err, "Cannot read message")
84
 	}
83
 	}
85
 
84
 

+ 1
- 0
wrappers/mtproto_proxy.go Vedi File

80
 		return nil, errors.Errorf("Incorrect data of simple ack: %d", len(data))
80
 		return nil, errors.Errorf("Incorrect data of simple ack: %d", len(data))
81
 	}
81
 	}
82
 	data = data[8:12]
82
 	data = data[8:12]
83
+	m.req.Options.WriteHacks.SimpleAck = true
83
 
84
 
84
 	m.logger.Debugw("Read RPC_SIMPLE_ACK",
85
 	m.logger.Debugw("Read RPC_SIMPLE_ACK",
85
 		"counter", m.readCounter,
86
 		"counter", m.readCounter,

Loading…
Annulla
Salva