mirror of
https://github.com/samba-team/samba.git
synced 2025-01-12 09:18:10 +03:00
04248c2cfa
Since commit eada8f8a
, updates to the cups pcap cache are performed
asynchronously - cups_cache_reload() forks a child process to request
cups printer information and notify the parent smbd on completion.
Currently printer shares are reloaded immediately following the call to
cups_cache_reload(), this occurs prior to smbd receiving new cups pcap
information from the child process. Such behaviour can result in stale
print shares as outlined in bug 7836.
This fix ensures print shares are only reloaded after new pcap data has
been received.
Pair-Programmed-With: Lars Müller <lars@samba.org>
56 lines
2.0 KiB
C
56 lines
2.0 KiB
C
/*
|
|
Unix SMB/CIFS implementation.
|
|
printcap headers
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
struct pcap_cache;
|
|
|
|
/* The following definitions come from printing/pcap.c */
|
|
|
|
bool pcap_cache_add_specific(struct pcap_cache **ppcache, const char *name, const char *comment);
|
|
void pcap_cache_destroy_specific(struct pcap_cache **ppcache);
|
|
bool pcap_cache_add(const char *name, const char *comment);
|
|
bool pcap_cache_loaded(void);
|
|
void pcap_cache_replace(const struct pcap_cache *cache);
|
|
void pcap_printer_fn_specific(const struct pcap_cache *, void (*fn)(const char *, const char *, void *), void *);
|
|
void pcap_printer_fn(void (*fn)(const char *, const char *, void *), void *);
|
|
|
|
/* The following definitions come from printing/print_aix.c */
|
|
|
|
bool aix_cache_reload(void);
|
|
|
|
/* The following definitions come from printing/print_cups.c */
|
|
|
|
bool cups_cache_reload(struct tevent_context *ev,
|
|
struct messaging_context *msg_ctx,
|
|
void (*post_cache_fill_fn)(struct tevent_context *,
|
|
struct messaging_context *));
|
|
bool cups_pull_comment_location(TALLOC_CTX *mem_ctx,
|
|
const char *printername,
|
|
char **comment,
|
|
char **location);
|
|
|
|
/* The following definitions come from printing/print_iprint.c */
|
|
|
|
bool iprint_cache_reload(void);
|
|
|
|
/* The following definitions come from printing/print_svid.c */
|
|
|
|
bool sysv_cache_reload(void);
|
|
|
|
/* The following definitions come from printing/print_standard.c */
|
|
bool std_pcap_cache_reload(const char *pcap_name);
|