fix: Increase scanner buffer size to 5MB and add error logging to prevent silent capture failures
This commit is contained in:
@@ -103,6 +103,11 @@ func (c *Capturer) IsRunning() bool {
|
|||||||
|
|
||||||
func (c *Capturer) processStream(r io.Reader) {
|
func (c *Capturer) processStream(r io.Reader) {
|
||||||
scanner := bufio.NewScanner(r)
|
scanner := bufio.NewScanner(r)
|
||||||
|
// Increase buffer size to handle large packets
|
||||||
|
const maxCapacity = 5 * 1024 * 1024 // 5MB
|
||||||
|
buf := make([]byte, 0, 64*1024)
|
||||||
|
scanner.Buffer(buf, maxCapacity)
|
||||||
|
|
||||||
var buffer strings.Builder
|
var buffer strings.Builder
|
||||||
inSIPMessage := false
|
inSIPMessage := false
|
||||||
var msgNetInfo *NetInfo
|
var msgNetInfo *NetInfo
|
||||||
@@ -159,6 +164,12 @@ func (c *Capturer) processStream(r io.Reader) {
|
|||||||
if buffer.Len() > 0 {
|
if buffer.Len() > 0 {
|
||||||
c.parseAndEmit(buffer.String(), msgNetInfo)
|
c.parseAndEmit(buffer.String(), msgNetInfo)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if err := scanner.Err(); err != nil {
|
||||||
|
if c.OnError != nil {
|
||||||
|
c.OnError(fmt.Errorf("scanner error: %w", err))
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Capturer) processErrors(r io.Reader) {
|
func (c *Capturer) processErrors(r io.Reader) {
|
||||||
|
|||||||
@@ -125,6 +125,11 @@ func (c *LocalCapturer) Close() error {
|
|||||||
|
|
||||||
func (c *LocalCapturer) processStream(r io.Reader) {
|
func (c *LocalCapturer) processStream(r io.Reader) {
|
||||||
scanner := bufio.NewScanner(r)
|
scanner := bufio.NewScanner(r)
|
||||||
|
// Increase buffer size to handle large packets (default is 64KB)
|
||||||
|
const maxCapacity = 5 * 1024 * 1024 // 5MB
|
||||||
|
buf := make([]byte, 0, 64*1024)
|
||||||
|
scanner.Buffer(buf, maxCapacity)
|
||||||
|
|
||||||
var buffer strings.Builder
|
var buffer strings.Builder
|
||||||
inSIPMessage := false
|
inSIPMessage := false
|
||||||
var msgNetInfo *NetInfo
|
var msgNetInfo *NetInfo
|
||||||
@@ -199,6 +204,13 @@ func (c *LocalCapturer) processStream(r io.Reader) {
|
|||||||
if buffer.Len() > 0 {
|
if buffer.Len() > 0 {
|
||||||
c.parseAndEmit(buffer.String(), msgNetInfo)
|
c.parseAndEmit(buffer.String(), msgNetInfo)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if err := scanner.Err(); err != nil {
|
||||||
|
logger.Error("Scanner error: %v", err)
|
||||||
|
if c.OnError != nil {
|
||||||
|
c.OnError(fmt.Errorf("scanner error: %w", err))
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *LocalCapturer) processErrors(r io.Reader) {
|
func (c *LocalCapturer) processErrors(r io.Reader) {
|
||||||
|
|||||||
Reference in New Issue
Block a user