1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-12 09:18:10 +03:00
Commit Graph

25 Commits

Author SHA1 Message Date
Jeremy Allison
0c67efdd68 Fix bug 7462 - Non-standard SA_RESETHAND is used in ...lib/tevent/tevent_signal.c
Make SA_RESETHAND conditional on its existance.

Autobuild-User: Jeremy Allison <jra@samba.org>
Autobuild-Date: Mon Aug  1 22:03:45 CEST 2011 on sn-devel-104
2011-08-01 22:03:45 +02:00
Volker Lendecke
e36e67fe04 tevent: Do not use talloc_autofree_context 2010-10-08 21:11:45 +02:00
Bo Yang
8c8bb51de1 s3: signals are processed twice in child.
Signed-off-by: Bo Yang <boyang@samba.org>
2010-02-09 17:05:58 +08:00
Stefan Metzmacher
4b7a6b1f8f tevent: prefix types and defined with tevent_ and TEVENT_
This fixes the build warnings on some build-farm hosts.

metze
2009-12-20 14:21:50 +01:00
Jeremy Allison
295fec2b46 NULL is not a valid event context.
Jeremy.
2009-10-01 16:18:33 -07:00
Rusty Russell
455d44d961 lib/tevent: a cleaner fix for be4ac22784 segv
Revert 23abcd2318 and fix logic bug.

The current code loops through the event contexts, when it sees a different
one, it notifies the current one (ev) and updates ev to point to the new one.

This is dumb, because:
(1) ev starts as NULL, so this code crashes, and
(2) The final context will not be notified.

The correct fix for this is to update ev to the new one, then notify it.
Volker's fix works because we currently always have one event context.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2009-09-22 10:50:28 +02:00
Stefan Metzmacher
d13dfbeb6c tevent: make sure we don't set errno within the signal handler function.
metze
2009-09-21 05:54:41 +02:00
Jeremy Allison
c97698e762 Another part of the fix for bug 6651 - smbd SIGSEGV when breaking oplocks.
SA_INFO_QUEUE_COUNT *MUST* be a power of 2, in order for the ring buffer
wrap to work correctly at the 32 bit boundary. Thanks to Petr
Vandrovec <petr@vandrovec.name> for this.
2009-09-03 07:38:21 -07:00
Volker Lendecke
23abcd2318 tevent: Fix a segfault upon the first signal
When the first signal arrives, tevent_common_signal_handler() crashed: "ev" is
initialized to NULL, so the first "write(ev->pipe_fds[1], &c, 1);" dereferences
NULL.

Rusty, Tridge, please check. Also, can you tell me a bit more about the
environment you tested this in? I'd be curious to see where this survived.

Thanks,

Volker
2009-08-29 09:49:08 +02:00
Rusty Russell
be4ac22784 lib/tevent: handle tevent_common_add_signal on different event contexts.
I don't know if this is a problem in real life.

The code assumes there's only one tevent_context; all signals will notify
the first event context.  That's counter-intuitive if you ever use more
than one, and there's nothing else in this code which prevents it AFAICT.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2009-08-28 14:09:09 +10:00
Rusty Russell
6abb637e3e lib/tevent: fix race with signals and tevent_common_add_signal
We carefully preserve the old signal handler, but we replace it before
we've set up everything; in particular, if we fail setting up the
pipe_hack we could write a NUL char to stdout (fd 0), instead of
calling the old signal handler.

Replace the signal handler as the very last thing we do.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2009-08-28 14:03:41 +10:00
Rusty Russell
4279879c98 lib/tevent: remove spectacularly complicated manual subtraction
To be completely honest, I don't quite know whether to laugh or cry at
this one:

	1 + (0xFFFFFFFF & ~(s.seen - s.count))
	== 1 + (~(s.seen - s.count))		# s.seen, s.count are uint32_t
	== s.count - s.seen			# -A == ~A + 1

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2009-08-28 13:08:01 +10:00
Günther Deschner
965a079535 tevent: avoid using reserved c++ word.
Guenther
2009-08-24 14:31:02 +02:00
Jeremy Allison
ba52f18bfe Fix for bug 6651 - smbd SIGSEGV when breaking oplocks.
Based on a patch submitted by Petr Vandrovec <petr@vandrovec.name>.
Multiple pending signals with siginfo_t's weren't being handled correctly
leading to smbd abort with kernel oplock signals.
Jeremy
2009-08-21 15:07:25 -07:00
Stefan Metzmacher
6211162d3e lib/tevent: change to LGPLv3+
metze
2009-02-16 08:53:25 +01:00
Volker Lendecke
d39849ddcd Fix a warning and a bug: pipe(2) can fail 2009-02-14 22:00:44 +01:00
Volker Lendecke
01aff219dd Add two variable assignments to shut up gcc 2009-02-14 22:00:43 +01:00
Stefan Metzmacher
920f8b1568 tevent: change SA_INFO_QUEUE_COUNT from 10 to 100
The samba3 aio code requires lp_max_mux() with a default of 50
and the samba3 linux oplock code requires 100.

May we could make the size dynamic later.

metze
2009-01-27 15:28:06 +01:00
Stefan Metzmacher
3347ed7e6e tevent: rename signal handler functions to start with tevent_common_
This makes debugging with gdb easier.

metze
2009-01-20 00:40:40 +01:00
Stefan Metzmacher
b24924d6a6 tevent: keep a linked list of signal events
metze
2009-01-05 22:44:53 +01:00
Stefan Metzmacher
227f799dee tevent: pass down handler_name and location to the backend layer
metze
2009-01-02 18:16:52 +01:00
Stefan Metzmacher
0ffed7d992 tevent: use libreplace headers instead of system headers
metze
2009-01-02 18:16:49 +01:00
Stefan Metzmacher
183c379fe5 s4:lib/tevent: rename structs
list=""
list="$list event_context:tevent_context"
list="$list fd_event:tevent_fd"
list="$list timed_event:tevent_timer"

for s in $list; do
	o=`echo $s | cut -d ':' -f1`
	n=`echo $s | cut -d ':' -f2`
	r=`git grep "struct $o" |cut -d ':' -f1 |sort -u`
	files=`echo "$r" | grep -v source3 | grep -v nsswitch | grep -v packaging4`
	for f in $files; do
		cat $f | sed -e "s/struct $o/struct $n/g" > $f.tmp
		mv $f.tmp $f
	done
done

metze
2008-12-29 20:46:40 +01:00
Stefan Metzmacher
46eda79090 s4:lib/tevent: add lib/events/ compat and let things compile
metze
2008-12-17 13:31:29 +01:00
Stefan Metzmacher
504f8816e3 s4:lib/events: move to toplevel directory as lib/tevent/
This commit will not compile on its own.

metze
2008-12-17 13:31:28 +01:00