@@ -1804,7 +1804,8 @@ cdef class CommitMessage(Message):
18041804cdef class ConnectMessage(Message):
18051805 cdef:
18061806 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
18081809 ConnectionCookie cookie
18091810 Description description
18101811 uint8_t packet_flags
@@ -1814,15 +1815,19 @@ cdef class ConnectMessage(Message):
18141815
18151816 cdef int process(self , ReadBuffer buf) except - 1 :
18161817 cdef:
1817- uint16_t redirect_data_length, protocol_version, protocol_options
1818+ uint16_t protocol_version, protocol_options
18181819 const char_type * redirect_data
18191820 bytes db_uuid
18201821 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
18221825 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
18261831 elif buf._current_packet.packet_type == TNS_PACKET_TYPE_ACCEPT:
18271832 buf.read_uint16(& protocol_version)
18281833 buf.read_uint16(& protocol_options)
0 commit comments