From 29e6b9cdd089eccc6ed0877d8bad8eb193e339e1 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Fri, 17 Nov 2000 00:48:02 +0000 Subject: Delete queue on empty. Jeremy. (This used to be commit 6e18a2aa58bc485e3c803ff357acc1b7fe6d95e1) --- source3/lib/messages.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/source3/lib/messages.c b/source3/lib/messages.c index 8b50533610..8f181f0982 100644 --- a/source3/lib/messages.c +++ b/source3/lib/messages.c @@ -278,9 +278,14 @@ static BOOL message_recv(int *msg_type, pid_t *src, void **buf, size_t *len) *msg_type = rec.msg_type; *src = rec.src; - memmove(dbuf.dptr, dbuf.dptr+sizeof(rec)+rec.len, dbuf.dsize - (sizeof(rec)+rec.len)); + if (dbuf.dsize - (sizeof(rec)+rec.len) > 0) + memmove(dbuf.dptr, dbuf.dptr+sizeof(rec)+rec.len, dbuf.dsize - (sizeof(rec)+rec.len)); dbuf.dsize -= sizeof(rec)+rec.len; - tdb_store(tdb, kbuf, dbuf, TDB_REPLACE); + + if (dbuf.dsize == 0) + tdb_delete(tdb, kbuf); + else + tdb_store(tdb, kbuf, dbuf, TDB_REPLACE); free(dbuf.dptr); tdb_unlockchain(tdb, kbuf); -- cgit