[SCM] Samba Shared Repository - branch master updated -
430cc443901865a5c781ce4ac5cf65b450ccbe61
Jeremy Allison
jra at samba.org
Fri Oct 10 22:56:25 GMT 2008
The branch, master has been updated
via 430cc443901865a5c781ce4ac5cf65b450ccbe61 (commit)
from eada8f8abe6e4b770b7a2e279fc897a4272b6fa5 (commit)
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 430cc443901865a5c781ce4ac5cf65b450ccbe61
Author: Jeremy Allison <jra at samba.org>
Date: Fri Oct 10 15:55:49 2008 -0700
Async is trickier than it looks :-). Don't use a stack variable for a private data ptr.
Jeremy.
-----------------------------------------------------------------------
Summary of changes:
source3/printing/print_cups.c | 24 ++++++++++++++++++------
1 files changed, 18 insertions(+), 6 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source3/printing/print_cups.c b/source3/printing/print_cups.c
index 6fe24e1..1411962 100644
--- a/source3/printing/print_cups.c
+++ b/source3/printing/print_cups.c
@@ -505,24 +505,32 @@ static void cups_async_callback(struct event_context *event_ctx,
"printer list\n"));
}
close(fd);
+ TALLOC_FREE(p);
}
bool cups_cache_reload(void)
{
- int fd = -1;
+ int *p_pipe_fd = TALLOC_P(NULL, int);
+
+ if (!p_pipe_fd) {
+ return false;
+ }
/* Set up an async refresh. */
- if (!cups_pcap_load_async(&fd)) {
+ if (!cups_pcap_load_async(p_pipe_fd)) {
return false;
}
if (!local_pcap_copy) {
/* We have no local cache, wait directly for
* async refresh to complete.
*/
+ DEBUG(10,("cups_cache_reload: sync read on fd %d\n",
+ *p_pipe_fd ));
+
cups_async_callback(smbd_event_context(),
NULL,
EVENT_FD_READ,
- (void *)&fd);
+ (void *)p_pipe_fd);
if (!local_pcap_copy) {
return false;
}
@@ -531,14 +539,18 @@ bool cups_cache_reload(void)
* local copy. */
pcap_cache_replace(local_pcap_copy);
+ DEBUG(10,("cups_cache_reload: async read on fd %d\n",
+ *p_pipe_fd ));
+
/* Trigger an event when the pipe can be read. */
cache_fd_event = event_add_fd(smbd_event_context(),
- NULL, fd,
+ NULL, *p_pipe_fd,
EVENT_FD_READ,
cups_async_callback,
- (void *)&fd);
+ (void *)p_pipe_fd);
if (!cache_fd_event) {
- close(fd);
+ close(*p_pipe_fd);
+ TALLOC_FREE(p_pipe_fd);
return false;
}
}
--
Samba Shared Repository
More information about the samba-cvs
mailing list