summaryrefslogtreecommitdiff
path: root/source3/nmbd
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2016-09-23 12:22:53 -0700
committerVolker Lendecke <vl@samba.org>2016-09-24 19:52:08 +0200
commit36b67729a6fc8518da71944db3fac6d9236b9348 (patch)
tree03b22acb8bb658f06fd15584c1ff016204e18695 /source3/nmbd
parentcca25c8f75147873280464eaf2699ff449f609ad (diff)
downloadsamba-36b67729a6fc8518da71944db3fac6d9236b9348.tar.gz
s3: nmbd: Add a talloc_stackframe().
We will use this to create real tevent timer and fd events. This will allow us to eventually remove source3/lib/events.c dependency and make nmbd purely tevent based. Bug: https://bugzilla.samba.org/show_bug.cgi?id=12283 Signed-off-by: Jeremy Allison <jra@samba.org> Reviewed-by: Volker Lendecke <vl@samba.org>
Diffstat (limited to 'source3/nmbd')
-rw-r--r--source3/nmbd/nmbd_packets.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/source3/nmbd/nmbd_packets.c b/source3/nmbd/nmbd_packets.c
index caef1db3785..c0c4925d5b0 100644
--- a/source3/nmbd/nmbd_packets.c
+++ b/source3/nmbd/nmbd_packets.c
@@ -1917,10 +1917,12 @@ bool listen_for_packets(struct messaging_context *msg, bool run_election)
int dns_pollidx = -1;
#endif
struct processed_packet *processed_packet_list = NULL;
+ TALLOC_CTX *frame = talloc_stackframe();
if ((fds == NULL) || rescan_listen_set) {
if (create_listen_pollfds(&fds, &attrs, &listen_number)) {
DEBUG(0,("listen_for_packets: Fatal error. unable to create listen set. Exiting.\n"));
+ TALLOC_FREE(frame);
return True;
}
rescan_listen_set = False;
@@ -1934,6 +1936,7 @@ bool listen_for_packets(struct messaging_context *msg, bool run_election)
fds = talloc_realloc(NULL, fds, struct pollfd, listen_number);
if (fds == NULL) {
+ TALLOC_FREE(frame);
return true;
}
num_sockets = listen_number;
@@ -1943,6 +1946,7 @@ bool listen_for_packets(struct messaging_context *msg, bool run_election)
if (dns_fd != -1) {
fds = talloc_realloc(NULL, fds, struct pollfd, num_sockets+1);
if (fds == NULL) {
+ TALLOC_FREE(frame);
return true;
}
attrs = talloc_realloc(NULL,
@@ -1951,6 +1955,7 @@ bool listen_for_packets(struct messaging_context *msg, bool run_election)
num_sockets + 1);
if (attrs == NULL) {
TALLOC_FREE(fds);
+ TALLOC_FREE(frame);
return true;
}
dns_pollidx = num_sockets;
@@ -1972,6 +1977,7 @@ bool listen_for_packets(struct messaging_context *msg, bool run_election)
/* Process a signal and timer events now... */
if (run_events_poll(nmbd_event_context(), 0, NULL, 0)) {
+ TALLOC_FREE(frame);
return False;
}
@@ -1991,10 +1997,12 @@ bool listen_for_packets(struct messaging_context *msg, bool run_election)
pollrtn = poll(fds, num_sockets, timeout);
if (run_events_poll(nmbd_event_context(), pollrtn, fds, num_sockets)) {
+ TALLOC_FREE(frame);
return False;
}
if (pollrtn == -1) {
+ TALLOC_FREE(frame);
return False;
}
@@ -2089,6 +2097,7 @@ bool listen_for_packets(struct messaging_context *msg, bool run_election)
}
free_processed_packet_list(&processed_packet_list);
+ TALLOC_FREE(frame);
return False;
}