diff options
author | Andreas Schneider <asn@samba.org> | 2011-09-05 14:35:55 +0200 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2011-09-05 17:59:47 +0200 |
commit | 3e8c665465f0fa650f5f5193206e109200ea7795 (patch) | |
tree | a677f811ddb2ad9c41e09e3e7c926b05cd6cb2da | |
parent | 303962e3708266810996cde496a6f87b7b4c4bc6 (diff) | |
download | samba-3e8c665465f0fa650f5f5193206e109200ea7795.tar.gz samba-3e8c665465f0fa650f5f5193206e109200ea7795.tar.bz2 samba-3e8c665465f0fa650f5f5193206e109200ea7795.zip |
s3-smbd: Rename reload_printers() and add documentation.
Autobuild-User: Andreas Schneider <asn@cryptomilk.org>
Autobuild-Date: Mon Sep 5 17:59:47 CEST 2011 on sn-devel-104
-rw-r--r-- | source3/printing/queue_process.c | 4 | ||||
-rw-r--r-- | source3/printing/spoolssd.c | 2 | ||||
-rw-r--r-- | source3/smbd/proto.h | 4 | ||||
-rw-r--r-- | source3/smbd/server.c | 2 | ||||
-rw-r--r-- | source3/smbd/server_reload.c | 21 |
5 files changed, 22 insertions, 11 deletions
diff --git a/source3/printing/queue_process.c b/source3/printing/queue_process.c index bd26b02031..7b2972d2c0 100644 --- a/source3/printing/queue_process.c +++ b/source3/printing/queue_process.c @@ -339,7 +339,7 @@ bool printing_subsystem_init(struct tevent_context *ev_ctx, ret = printing_subsystem_queue_tasks(ev_ctx, msg_ctx); /* Publish nt printers, this requires a working winreg pipe */ - pcap_cache_reload(ev_ctx, msg_ctx, &reload_printers); + pcap_cache_reload(ev_ctx, msg_ctx, &delete_and_reload_printers); return ret; } @@ -368,5 +368,5 @@ void printing_subsystem_update(struct tevent_context *ev_ctx, return; } - pcap_cache_reload(ev_ctx, msg_ctx, &reload_printers); + pcap_cache_reload(ev_ctx, msg_ctx, &delete_and_reload_printers); } diff --git a/source3/printing/spoolssd.c b/source3/printing/spoolssd.c index 63b3f80cff..5ea14c9f7a 100644 --- a/source3/printing/spoolssd.c +++ b/source3/printing/spoolssd.c @@ -131,7 +131,7 @@ static void update_pcap(struct tevent_context *ev_ctx, struct messaging_context *msg_ctx) { change_to_root_user(); - reload_printers(ev_ctx, msg_ctx); + delete_and_reload_printers(ev_ctx, msg_ctx); } static void pcap_updated(struct messaging_context *msg, diff --git a/source3/smbd/proto.h b/source3/smbd/proto.h index d271d7f043..8edd69507c 100644 --- a/source3/smbd/proto.h +++ b/source3/smbd/proto.h @@ -964,8 +964,8 @@ void init_sec_ctx(void); struct event_context *smbd_event_context(void); struct messaging_context *smbd_messaging_context(void); struct memcache *smbd_memcache(void); -void reload_printers(struct tevent_context *ev, - struct messaging_context *msg_ctx); +void delete_and_reload_printers(struct tevent_context *ev, + struct messaging_context *msg_ctx); bool reload_services(struct messaging_context *msg_ctx, int smb_sock, bool test); void exit_server(const char *const explanation); diff --git a/source3/smbd/server.c b/source3/smbd/server.c index 26e3c86edf..ecda47c644 100644 --- a/source3/smbd/server.c +++ b/source3/smbd/server.c @@ -88,7 +88,7 @@ static void smb_pcap_updated(struct messaging_context *msg, DEBUG(10,("Got message saying pcap was updated. Reloading.\n")); change_to_root_user(); - reload_printers(ev_ctx, msg); + delete_and_reload_printers(ev_ctx, msg); } /******************************************************************* diff --git a/source3/smbd/server_reload.c b/source3/smbd/server_reload.c index 6639c4a8f6..0c2ea2c5b1 100644 --- a/source3/smbd/server_reload.c +++ b/source3/smbd/server_reload.c @@ -31,11 +31,22 @@ #include "messages.h" #include "lib/param/loadparm.h" -/**************************************************************************** - purge stale printers and reload from pre-populated pcap cache -**************************************************************************/ -void reload_printers(struct tevent_context *ev, - struct messaging_context *msg_ctx) +/** + * @brief Purge stale printers and reload from pre-populated pcap cache. + * + * This function should normally only be called as a callback on a successful + * pcap_cache_reload() or after a MSG_PRINTER_CAP message is received. + * + * This function can cause DELETION of printers and drivers from our registry, + * so calling it on a failed pcap reload may REMOVE permanently all printers + * and drivers. + * + * @param[in] ev The event context. + * + * @param[in] msg_ctx The messaging context. + */ +void delete_and_reload_printers(struct tevent_context *ev, + struct messaging_context *msg_ctx) { struct auth_session_info *session_info = NULL; struct spoolss_PrinterInfo2 *pinfo2 = NULL; |