Skip to content

Instantly share code, notes, and snippets.

@cure
Created October 27, 2020 21:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cure/639ebbd6a7d7b72f7546975e2ae55096 to your computer and use it in GitHub Desktop.
Save cure/639ebbd6a7d7b72f7546975e2ae55096 to your computer and use it in GitHub Desktop.
diff --git a/src/tuntap/iface.go b/src/tuntap/iface.go
index bd849c7..e33c4f9 100644
--- a/src/tuntap/iface.go
+++ b/src/tuntap/iface.go
@@ -54,24 +54,28 @@ type tunReader struct {
}
func (r *tunReader) _read() {
- // Get a slice to store the packet in
- recvd := util.ResizeBytes(util.GetBytes(), int(r.tun.mtu)+TUN_OFFSET_BYTES)
- // Wait for a packet to be delivered to us through the TUN adapter
- n, err := r.tun.iface.Read(recvd, TUN_OFFSET_BYTES)
- if n <= TUN_OFFSET_BYTES || err != nil {
- r.tun.log.Errorln("Error reading TUN:", err)
- ferr := r.tun.iface.Flush()
- if ferr != nil {
- r.tun.log.Errorln("Unable to flush packets:", ferr)
+ for {
+ // Get a slice to store the packet in
+ recvd := util.ResizeBytes(util.GetBytes(), int(r.tun.mtu)+TUN_OFFSET_BYTES)
+ // Wait for a packet to be delivered to us through the TUN adapter
+ r.tun.log.Errorln("################### about to enter r.tun.iface.Read ##############")
+ n, err := r.tun.iface.Read(recvd, TUN_OFFSET_BYTES)
+ r.tun.log.Errorf("******************* Read %d bytes from tunnel *********************\n", n)
+ if n <= TUN_OFFSET_BYTES || err != nil {
+ r.tun.log.Errorln("Error reading TUN:", err)
+ ferr := r.tun.iface.Flush()
+ if ferr != nil {
+ r.tun.log.Errorln("Unable to flush packets:", ferr)
+ }
+ util.PutBytes(recvd)
+ } else {
+ r.tun.handlePacketFrom(r, recvd[TUN_OFFSET_BYTES:n+TUN_OFFSET_BYTES], err)
}
- util.PutBytes(recvd)
- } else {
- r.tun.handlePacketFrom(r, recvd[TUN_OFFSET_BYTES:n+TUN_OFFSET_BYTES], err)
}
- if err == nil {
+ /* if err == nil {
// Now read again
r.Act(nil, r._read)
- }
+ } */
}
func (tun *TunAdapter) handlePacketFrom(from phony.Actor, packet []byte, err error) {
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment