@@ -1804,7 +1804,8 @@ cdef class CommitMessage(Message):
1804
1804
cdef class ConnectMessage(Message):
1805
1805
cdef:
1806
1806
bytes connect_string_bytes
1807
- uint16_t connect_string_len
1807
+ uint16_t connect_string_len, redirect_data_len
1808
+ bint read_redirect_data_len
1808
1809
ConnectionCookie cookie
1809
1810
Description description
1810
1811
uint8_t packet_flags
@@ -1814,15 +1815,19 @@ cdef class ConnectMessage(Message):
1814
1815
1815
1816
cdef int process(self , ReadBuffer buf) except - 1 :
1816
1817
cdef:
1817
- uint16_t redirect_data_length, protocol_version, protocol_options
1818
+ uint16_t protocol_version, protocol_options
1818
1819
const char_type * redirect_data
1819
1820
bytes db_uuid
1820
1821
if buf._current_packet.packet_type == TNS_PACKET_TYPE_REDIRECT:
1821
- buf.read_uint16(& redirect_data_length)
1822
+ if not self .read_redirect_data_len:
1823
+ buf.read_uint16(& self .redirect_data_len)
1824
+ self .read_redirect_data_len = True
1822
1825
buf.wait_for_packets_sync()
1823
- redirect_data = buf._get_raw(redirect_data_length)
1824
- self .redirect_data = \
1825
- redirect_data[:redirect_data_length].decode()
1826
+ redirect_data = buf._get_raw(self .redirect_data_len)
1827
+ if self .redirect_data_len > 0 :
1828
+ self .redirect_data = \
1829
+ redirect_data[:self .redirect_data_len].decode()
1830
+ self .read_redirect_data_len = False
1826
1831
elif buf._current_packet.packet_type == TNS_PACKET_TYPE_ACCEPT:
1827
1832
buf.read_uint16(& protocol_version)
1828
1833
buf.read_uint16(& protocol_options)
0 commit comments