fix TUN read pkt

pull/91/head
despair 6 years ago
parent 65ff1ba991
commit 551bf0d2bf

@ -174,11 +174,12 @@ namespace llarp
asio_evt_pkt* pkt = new asio_evt_pkt;
pkt->sz = sz;
pkt->write = true;
_doserrno = 0;
int e = 0;
r = WriteFile(fd.tun, data, sz, &x, &pkt->pkt);
if(r) // we returned immediately
return x;
else if(_doserrno == ERROR_IO_PENDING)
e = GetLastError();
if(e == ERROR_IO_PENDING)
return sz;
else
return -1;

@ -139,8 +139,8 @@ namespace llarp
if(t->before_write)
{
t->before_write(t);
ev_io::flush_write();
}
ev_io::flush_write();
}
bool
@ -397,11 +397,14 @@ struct llarp_win32_loop : public llarp_ev_loop
llarp::LogWarn("incomplete async io operation: got ", size,
" bytes, expected ", pkt->sz, " bytes");*/
if(!pkt->write)
ev->read(readbuf, sizeof(readbuf));
ev->read(readbuf, size);
else
{
ev->flush_write();
printf("write tun\n");
}
++result;
delete pkt;
delete pkt;
}
if(result != -1)

@ -399,7 +399,7 @@ tuntap_sys_set_ipv4(struct device *dev, t_tun_in_addr *s, uint32_t mask)
dns.length = 4;
dns.value[0] =
htonl(0x7F000001); /* apparently this doesn't show in network properties,
but it works 🤷🏻 */
but it works */
dns.value[1] = 0;
ret = DeviceIoControl(dev->tun_fd, TAP_IOCTL_CONFIG_DHCP_SET_OPT, &dns,
@ -431,7 +431,7 @@ tuntap_read(struct device *dev, void *buf, size_t size)
{
DWORD x;
BOOL r;
_doserrno = 0;
int e = 0;
struct asio_evt_pkt *pkt = getTunEventPkt();
pkt->write = FALSE;
pkt->sz = size;
@ -440,8 +440,8 @@ tuntap_read(struct device *dev, void *buf, size_t size)
r = ReadFile(dev->tun_fd, buf, (DWORD)size, &x, &pkt->pkt);
if(r)
return x;
if(_doserrno && _doserrno != 997)
e = GetLastError();
if(e && e != 997)
{
tuntap_log(TUNTAP_LOG_ERR,
(const char *)formated_error(L"%1%0", _doserrno));
@ -449,8 +449,8 @@ tuntap_read(struct device *dev, void *buf, size_t size)
}
}
else
return size;
return -1; // unreachable
return -1; // unreachable
return size;
}
int
@ -522,4 +522,4 @@ tuntap_set_ifname(struct device *dev, const char *name)
tuntap_log(TUNTAP_LOG_NOTICE,
"Your system does not support tuntap_set_ifname()");
return -1;
}
}
Loading…
Cancel
Save