Added debug so if zero length messages get sent we successfully remove
authorJeremy Allison <jra@samba.org>
Mon, 2 Oct 2000 19:28:26 +0000 (19:28 +0000)
committerJeremy Allison <jra@samba.org>
Mon, 2 Oct 2000 19:28:26 +0000 (19:28 +0000)
them (this can happen if smbd processes are shut down at the wrong time).
Jeremy.
(This used to be commit c1de97f96b8c5ad8e5f01a0d17c6387733769442)

source3/rpc_server/srv_spoolss_nt.c
source3/tdb/tdb.c

index 89963890391635b1a0dad28ed1499f4b6c3580a4..6e222b23867dfe9861a16b9f70d14c912cfaefca 100644 (file)
@@ -591,6 +591,13 @@ void srv_spoolss_receive_message(int msg_type, pid_t src, void *buf, size_t len)
        *printer = '\0';
        fstrcpy(printer,buf);
 
+       if (len == 0) {
+               DEBUG(0,("srv_spoolss_receive_message: got null message !\n"));
+               return;
+       }
+
+       DEBUG(10,("srv_spoolss_receive_message: Got message about printer %s\n", printer ));
+
        find_printer = (Printer_entry *)ubi_dlFirst(&Printer_list);
 
        /* Iterate the printer list. */
@@ -631,6 +638,8 @@ static BOOL srv_spoolss_sendnotify(POLICY_HND *handle)
                fstrcpy(printer, "");
 
        /*srv_spoolss_receive_message(printer);*/
+       DEBUG(10,("srv_spoolss_sendnotify: Sending message about printer %s\n", printer ));
+
        message_send_all(MSG_PRINTER_NOTIFY, printer, strlen(printer) + 1); /* Null terminate... */
 
        return True;
index c653c79d681f5e0e7486c2e568ae17a9152203d1..d9401d95d4c655b6fa270a47538fa0d7237ecd6c 100644 (file)
@@ -696,9 +696,12 @@ TDB_DATA tdb_fetch(TDB_CONTEXT *tdb, TDB_DATA key)
        rec_ptr = tdb_find(tdb, key, hash, &rec);
 
        if (rec_ptr) {
-               ret.dptr = tdb_alloc_read(tdb,
-                                         rec_ptr + sizeof(rec) + rec.key_len,
+               if (rec.data_len)
+                       ret.dptr = tdb_alloc_read(tdb,
+                                                 rec_ptr + sizeof(rec) + rec.key_len,
                                          rec.data_len);
+               else
+                       ret.dptr = NULL;
                ret.dsize = rec.data_len;
        }
        
@@ -1106,7 +1109,8 @@ int tdb_store(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA dbuf, int flag)
 
        memcpy(p, &rec, sizeof(rec));
        memcpy(p+sizeof(rec), key.dptr, key.dsize);
-       memcpy(p+sizeof(rec)+key.dsize, dbuf.dptr, dbuf.dsize);
+       if (dbuf.dsize)
+               memcpy(p+sizeof(rec)+key.dsize, dbuf.dptr, dbuf.dsize);
 
        if (tdb_write(tdb, rec_ptr, p, sizeof(rec)+key.dsize+dbuf.dsize) == -1)
                goto fail;