From 9d00888b7602718f6b6954a51a8bfd468b5573fb Mon Sep 17 00:00:00 2001 From: Jochen Dolze Date: Fri, 26 Mar 2010 23:03:00 +0100 Subject: Fixed buffer full bug, added queue debugging (-v -v) --- queue.cpp | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) (limited to 'queue.cpp') diff --git a/queue.cpp b/queue.cpp index fd015b2..a50e925 100644 --- a/queue.cpp +++ b/queue.cpp @@ -14,17 +14,29 @@ cMarkAdPaketQueue::cMarkAdPaketQueue(const char *Name, int Size) memset(&pktinfo,0,sizeof(pktinfo)); pktinfo.pkthdr=-1; maxqueue=Size; - name=strdup(Name); + if (Name) + { + name=strdup(Name); + } + else + { + name=NULL; + } buffer=(uchar *) malloc(Size+1); if (!buffer) maxqueue=0; scanner=0xFFFFFFFF; scannerstart=-1; percent=-1; + mpercent=0; } cMarkAdPaketQueue::~cMarkAdPaketQueue() { - if (name) free(name); + if (name) + { + tsyslog("buffer usage: %-15s %3i%%",name,mpercent); + free(name); + } if (buffer) free(buffer); } @@ -67,16 +79,25 @@ bool cMarkAdPaketQueue::Put(uchar *Data, int Size) if (!buffer) return false; if ((inptr) && (inptr==outptr)) inptr=outptr=0; - if (((inptr+Size)>maxqueue) && (name)) + if ((inptr+Size)>maxqueue) { - esyslog("buffer %s full",name); - inptr=outptr=0; + if (name) + { + esyslog("buffer %s full",name); + } + else + { + esyslog("buffer full"); + } + Clear(); + return false; } memcpy(&buffer[inptr],Data,Size); inptr+=Size; int npercent=(int) ((inptr*100)/maxqueue); + if (npercent>mpercent) mpercent=npercent; if ((npercent>90) && (name) && (npercent!=percent)) { -- cgit v1.2.3