From 40362c46806d033316e859db772f46c5652fbea3 Mon Sep 17 00:00:00 2001 From: Håkon Nessjøen Date: Tue, 2 Nov 2010 18:09:32 +0100 Subject: Simplified the way parseControlPacket is looped/called --- mactelnet.c | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) (limited to 'mactelnet.c') diff --git a/mactelnet.c b/mactelnet.c index 652023b..2175d65 100644 --- a/mactelnet.c +++ b/mactelnet.c @@ -153,9 +153,9 @@ void handlePacket(unsigned char *data, int data_len) { /* Handle data packets */ if (pkthdr.ptype == MT_PTYPE_DATA) { struct mt_packet odata; + struct mt_mactelnet_control_hdr cpkt; int plen=0,result=0; - int rest = 0; - unsigned char *p = data; + int success = 0; /* Always transmit ACKNOWLEDGE packets in response to DATA packets */ plen = initPacket(&odata, MT_PTYPE_ACK, srcmac, dstmac, sessionkey, pkthdr.counter + (data_len - MT_HEADER_LEN)); @@ -170,18 +170,10 @@ void handlePacket(unsigned char *data, int data_len) { return; } - /* Calculate how much more there is in the packet */ - rest = data_len - MT_HEADER_LEN; - p += MT_HEADER_LEN; + /* Parse controlpacket data */ + success = parseControlPacket(data + MT_HEADER_LEN, data_len - MT_HEADER_LEN, &cpkt); - while (rest > 0) { - int read = 0; - struct mt_mactelnet_control_hdr cpkt; - - /* Parse controlpacket data */ - read = parseControlPacket(p, rest, &cpkt); - p += read; - rest -= read; + while (success) { /* If we receive encryptionkey, transmit auth data back */ if (cpkt.cptype == MT_CPTYPE_ENCRYPTIONKEY) { @@ -209,6 +201,9 @@ void handlePacket(unsigned char *data, int data_len) { /* Add resize signal handler */ signal(SIGWINCH, sig_winch); } + + /* Parse next controlpacket */ + success = parseControlPacket(NULL, 0, &cpkt); } } else if (pkthdr.ptype == MT_PTYPE_ACK) { -- cgit v1.2.3