summaryrefslogtreecommitdiff
path: root/queue.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'queue.cpp')
-rw-r--r--queue.cpp31
1 files changed, 26 insertions, 5 deletions
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))
{