Remove fastpolling, discard chunk on packetloss
This commit is contained in:
parent
4bcc25da64
commit
824f5fda90
13
dns.c
13
dns.c
|
@ -42,6 +42,8 @@ int packetpos;
|
||||||
int packetlen;
|
int packetlen;
|
||||||
uint16_t chunkid;
|
uint16_t chunkid;
|
||||||
|
|
||||||
|
uint16_t pingid;
|
||||||
|
|
||||||
static int
|
static int
|
||||||
readname(char *packet, char *dst, char *src)
|
readname(char *packet, char *dst, char *src)
|
||||||
{
|
{
|
||||||
|
@ -137,6 +139,7 @@ open_dns(const char *host, const char *domain)
|
||||||
|
|
||||||
// Init chunk id
|
// Init chunk id
|
||||||
chunkid = 0;
|
chunkid = 0;
|
||||||
|
pingid = 0;
|
||||||
|
|
||||||
return fd;
|
return fd;
|
||||||
}
|
}
|
||||||
|
@ -181,12 +184,12 @@ void
|
||||||
dns_ping(int dns_fd)
|
dns_ping(int dns_fd)
|
||||||
{
|
{
|
||||||
if (dns_sending()) {
|
if (dns_sending()) {
|
||||||
// Resend latest chunk
|
printf("No reply on chunk, discarding\n");
|
||||||
printf("No reply on chunk, resending\n");
|
lastlen = 0;
|
||||||
dns_send_chunk(dns_fd);
|
packetpos = 0;
|
||||||
} else {
|
packetlen = 0;
|
||||||
dns_write(dns_fd, 0, "", 0);
|
|
||||||
}
|
}
|
||||||
|
dns_write(dns_fd, ++pingid, "", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
16
dnstun.c
16
dnstun.c
|
@ -35,11 +35,6 @@
|
||||||
|
|
||||||
#define FRAMESIZE (64*1024)
|
#define FRAMESIZE (64*1024)
|
||||||
|
|
||||||
#define POLL_MAX 4
|
|
||||||
|
|
||||||
static int poll_sec[] = {1, 0, 0, 0, 0};
|
|
||||||
static int poll_usec[] = {0, 400000, 200000, 100000, 50000};
|
|
||||||
|
|
||||||
int running = 1;
|
int running = 1;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -52,21 +47,15 @@ tunnel(int tun_fd, int dns_fd)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
int read;
|
int read;
|
||||||
int fastpoll;
|
|
||||||
fd_set fds;
|
fd_set fds;
|
||||||
struct timeval tv;
|
struct timeval tv;
|
||||||
struct tun_frame *frame;
|
struct tun_frame *frame;
|
||||||
|
|
||||||
frame = malloc(FRAMESIZE);
|
frame = malloc(FRAMESIZE);
|
||||||
fastpoll = 0;
|
|
||||||
|
|
||||||
while (running) {
|
while (running) {
|
||||||
if (fastpoll > 0) {
|
tv.tv_sec = 1;
|
||||||
fastpoll--;
|
tv.tv_usec = 0;
|
||||||
printf("Fast poll %d\n", fastpoll);
|
|
||||||
}
|
|
||||||
tv.tv_sec = poll_sec[fastpoll];
|
|
||||||
tv.tv_usec = poll_usec[fastpoll];
|
|
||||||
|
|
||||||
FD_ZERO(&fds);
|
FD_ZERO(&fds);
|
||||||
if (!dns_sending())
|
if (!dns_sending())
|
||||||
|
@ -105,7 +94,6 @@ tunnel(int tun_fd, int dns_fd)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
write_tun(tun_fd, frame, read + 4);
|
write_tun(tun_fd, frame, read + 4);
|
||||||
fastpoll = POLL_MAX;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue