diff options
author | Masaq- <tilt@techie.com> | 2019-01-30 22:42:00 +0000 |
---|---|---|
committer | Masaq- <tilt@techie.com> | 2019-01-30 22:42:00 +0000 |
commit | 020634e1e84ab6063b0b403432002073bdaffe09 (patch) | |
tree | ef496ad9e4f2eb49bed999c469df5812c90ecf56 /src/ptunnel.c | |
parent | e5d53acbe1c11d9437648071f550d14e19439f01 (diff) |
short command line options -w -a -t
Diffstat (limited to 'src/ptunnel.c')
-rw-r--r-- | src/ptunnel.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/src/ptunnel.c b/src/ptunnel.c index 6f9fdc7..456a747 100644 --- a/src/ptunnel.c +++ b/src/ptunnel.c @@ -558,14 +558,22 @@ void* pt_proxy(void *args) { if (cur->state == kProxy_start) { pt_log(kLog_verbose, "Sending proxy request.\n"); cur->last_ack = time_as_double(); - uint16_t extended_options[3]; - extended_options[0] = htons(cur->window_size); - extended_options[1] = htons(cur->ack_interval*1000); - extended_options[2] = htons(cur->resend_interval*1000); - queue_packet(fwd_sock, cur->pkt_type, (char *)extended_options, sizeof(extended_options), cur->id_no, cur->id_no, + uint16_t *extended_options = 0; + size_t extended_options_size = 0; + if (opts.window_size || opts.ack_interval || opts.resend_interval) { + extended_options = calloc(3, sizeof(uint16_t)); + extended_options_size = 3*sizeof(uint16_t); + extended_options[0] = htons(opts.window_size); + extended_options[1] = htons(opts.ack_interval); + extended_options[2] = htons(opts.resend_interval); + } + queue_packet(fwd_sock, cur->pkt_type, (char *)extended_options, extended_options_size, cur->id_no, cur->id_no, &cur->my_seq, cur->send_ring, &cur->send_idx, &cur->send_wait_ack, cur->dst_ip, cur->dst_port, cur->state | cur->type_flag, &cur->dest_addr, cur->next_remote_seq, &cur->send_first_ack, &cur->ping_seq, cur->window_size); + if (extended_options) { + free(extended_options); + } cur->xfer.icmp_out++; cur->state = kProto_data; } |