Skip to content

Commit c55ef61

Browse files
Merge pull request #2 from AudriusButkevicius/small-reads
Handle small reads
2 parents 730b0de + ff3c123 commit c55ef61

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed

conn.go

+6-2
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,13 @@ func (r *FilteredConn) ReadFrom(b []byte) (n int, addr net.Addr, err error) {
7676
case <-timeout:
7777
return 0, nil, errTimeout
7878
case pkt := <-r.recvBuffer:
79-
copy(b[:pkt.n], pkt.buf)
79+
n := pkt.n
80+
if l := len(b); l < n {
81+
n = l
82+
}
83+
copy(b, pkt.buf[:n])
8084
bufPool.Put(pkt.buf[:maxPacketSize])
81-
return pkt.n, pkt.addr, pkt.err
85+
return n, pkt.addr, pkt.err
8286
case <-r.closed:
8387
return 0, nil, errClosed
8488
}

filter.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -124,12 +124,13 @@ next:
124124
select {
125125
case conn.recvBuffer <- pkt:
126126
default:
127+
bufPool.Put(pkt.buf[:maxPacketSize])
127128
atomic.AddUint64(&d.overflow, 1)
128129
}
129130
goto next
130131
}
131132
}
132-
133+
bufPool.Put(pkt.buf[:maxPacketSize])
133134
atomic.AddUint64(&d.dropped, 1)
134135
}
135136
}

0 commit comments

Comments
 (0)