diff options
author | Jeremy Allison <jra@samba.org> | 2000-11-17 00:48:02 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2000-11-17 00:48:02 +0000 |
commit | 29e6b9cdd089eccc6ed0877d8bad8eb193e339e1 (patch) | |
tree | 266df73bbb8eba905e2ba1cf8d7fa8bd98b07675 /source3 | |
parent | 901c3224deb650826f418313e2c7e76602403788 (diff) | |
download | samba-29e6b9cdd089eccc6ed0877d8bad8eb193e339e1.tar.gz samba-29e6b9cdd089eccc6ed0877d8bad8eb193e339e1.tar.bz2 samba-29e6b9cdd089eccc6ed0877d8bad8eb193e339e1.zip |
Delete queue on empty.
Jeremy.
(This used to be commit 6e18a2aa58bc485e3c803ff357acc1b7fe6d95e1)
Diffstat (limited to 'source3')
-rw-r--r-- | source3/lib/messages.c | 9 |
1 files 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); |