summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIru Cai <mytbk920423@gmail.com>2018-05-17 17:06:24 +0800
committerIru Cai <mytbk920423@gmail.com>2018-05-21 09:33:52 +0800
commitcced25ca036d5ac33e0d1f19ccbc7a12ce1f95db (patch)
treef3b3bddd34ba87629796b8ad46c9a78c26e612d7
parent7e12cd48525b92a7b7090738c03d10d5e616a92e (diff)
downloadfqterm-cced25ca036d5ac33e0d1f19ccbc7a12ce1f95db.tar.xz
make a cleaner parseData
-rw-r--r--src/protocol/internal/fqterm_ssh2_packet.cpp19
1 files changed, 5 insertions, 14 deletions
diff --git a/src/protocol/internal/fqterm_ssh2_packet.cpp b/src/protocol/internal/fqterm_ssh2_packet.cpp
index 75a2cc4..5493623 100644
--- a/src/protocol/internal/fqterm_ssh2_packet.cpp
+++ b/src/protocol/internal/fqterm_ssh2_packet.cpp
@@ -122,22 +122,13 @@ void FQTermSSH2PacketReceiver::parseData(buffer *input) {
// 4. get every field of the ssh packet.
packet_len = buffer_get_u32(input);
-
- std::vector<u_char> data(packet_len);
-
- buffer_get(input, &data[0], packet_len);
- if (is_mac_)
- buffer_consume(input, mac->dgstSize);
-
- int padding_len = data[0];
-
+ uint8_t padding_len = buffer_get_u8(input);
real_data_len_ = packet_len - 1 - padding_len;
-
buffer_clear(&recvbuf);
- buffer_append(&recvbuf, &data[0] + 1, real_data_len_);
-
- FQ_TRACE("ssh2packet", 9) << "Receive " << real_data_len_ << " bytes payload:\n"
- << dumpHexString << std::string((char *)&data[0] + 1, real_data_len_);
+ buffer_append(&recvbuf, buffer_data(input), real_data_len_);
+ buffer_consume(input, packet_len - 1);
+ if (is_mac_)
+ buffer_consume(input, mac->dgstSize);
// 5. notify others a ssh packet is parsed successfully.
packet_type_ = buffer_get_u8(&recvbuf);