diff options
author | Gerald Carter <jerry@samba.org> | 2004-06-23 15:46:01 +0000 |
---|---|---|
committer | Gerald Carter <jerry@samba.org> | 2004-06-23 15:46:01 +0000 |
commit | 0f1f13c55b0821ac359ebe3a551133efb979cc81 (patch) | |
tree | ffe281c208b971e20aaee3d1d656d8107fe3c169 /source/rpc_server | |
parent | 4fc890c6011547f304f0bba81aa50bbf65b628bd (diff) | |
download | samba-0f1f13c55b0821ac359ebe3a551133efb979cc81.tar.gz samba-0f1f13c55b0821ac359ebe3a551133efb979cc81.tar.xz samba-0f1f13c55b0821ac359ebe3a551133efb979cc81.zip |
r1230: (merges from HP PSA) fixing a couple of caching bugs in the printing code. (a) make sure to clear jobs_changed list when deleting a job and, (b) invalidate the printer handle cache when we get a notification that something has changed on that printer
Diffstat (limited to 'source/rpc_server')
-rw-r--r-- | source/rpc_server/srv_spoolss_nt.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/source/rpc_server/srv_spoolss_nt.c b/source/rpc_server/srv_spoolss_nt.c index a6d47a46c32..d8c6b5350c4 100644 --- a/source/rpc_server/srv_spoolss_nt.c +++ b/source/rpc_server/srv_spoolss_nt.c @@ -5,7 +5,7 @@ * Copyright (C) Luke Kenneth Casson Leighton 1996-2000, * Copyright (C) Jean François Micouleau 1998-2000, * Copyright (C) Jeremy Allison 2001-2002, - * Copyright (C) Gerald Carter 2000-2003, + * Copyright (C) Gerald Carter 2000-2004, * Copyright (C) Tim Potter 2001-2002. * * This program is free software; you can redistribute it and/or modify @@ -312,6 +312,7 @@ void invalidate_printer_hnd_cache( char *printername ) for ( p=printers_list; p; p=p->next ) { if ( p->printer_type==PRINTER_HANDLE_IS_PRINTER + && p->printer_info && StrCaseCmp(p->dev.handlename, printername)==0) { DEBUG(10,("invalidating printer_info cache for handl:\n")); @@ -1188,6 +1189,12 @@ static void receive_notify2_message_list(int msg_type, pid_t src, void *msg, siz ZERO_STRUCT( notify ); notify2_unpack_msg( ¬ify, &msg_tv, msg_ptr, msg_len ); msg_ptr += msg_len; + + /* we don't know if the change was from us or not so kill + any cached printer objects */ + + if ( notify.type == PRINTER_NOTIFY_TYPE ) + invalidate_printer_hnd_cache( notify.printer ); /* add to correct list in container */ |