sfrench/samba-autobuild/.git
11 years agowaf: add -fstack-protector to LDFLAGS if detected.
Ira Cooper [Wed, 6 Mar 2013 00:54:43 +0000 (00:54 +0000)]
waf: add -fstack-protector to LDFLAGS if detected.

If we compile with -fstack-protector, we should link
with it.

Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Autobuild-User(master): Andrew Bartlett <abartlet@samba.org>
Autobuild-Date(master): Wed Mar  6 04:06:04 CET 2013 on sn-devel-104

11 years agoDocumentation: Add a warning to "socket options"
Scott Lovenberg [Tue, 5 Mar 2013 00:09:12 +0000 (19:09 -0500)]
Documentation: Add a warning to "socket options"

 Add a warning to the "socket options" section of the
 smb.conf man page that changing socket options can be
 dangerous to performance.  Hopefully this will cut down on
 users reporting poor performance after changing socket
 options.

Signed-off-by: Scott Lovenberg <scott.lovenberg@gmail.com>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
11 years agoMake sure to set umask() before calling mkstemp().
Andreas Schneider [Mon, 25 Feb 2013 16:34:21 +0000 (17:34 +0100)]
Make sure to set umask() before calling mkstemp().

Reviewed-by: David Disseldorp <ddiss@samba.org>
Autobuild-User(master): David Disseldorp <ddiss@samba.org>
Autobuild-Date(master): Wed Mar  6 01:16:34 CET 2013 on sn-devel-104

11 years agos4-libregistry: Improve NULL handling of name.
Andreas Schneider [Mon, 25 Feb 2013 16:16:45 +0000 (17:16 +0100)]
s4-libregistry: Improve NULL handling of name.

Reviewed-by: David Disseldorp <ddiss@samba.org>
11 years agodsdb: Check for pointers before we deference them.
Andreas Schneider [Mon, 25 Feb 2013 14:48:20 +0000 (15:48 +0100)]
dsdb: Check for pointers before we deference them.

Reviewed-by: David Disseldorp <ddiss@samba.org>
11 years agogensec: recv_handler can't be NULL at that point.
Andreas Schneider [Mon, 25 Feb 2013 14:41:23 +0000 (15:41 +0100)]
gensec: recv_handler can't be NULL at that point.

We probably want to segfault here if it is NULL.

Reviewed-by: David Disseldorp <ddiss@samba.org>
11 years agos4-libregistry: Fix path check and improve while loops.
Andreas Schneider [Mon, 25 Feb 2013 14:13:19 +0000 (15:13 +0100)]
s4-libregistry: Fix path check and improve while loops.

Reviewed-by: David Disseldorp <ddiss@samba.org>
11 years agos4-libregistry: Make sure we don't dereference a NULL pointer.
Andreas Schneider [Mon, 25 Feb 2013 14:01:18 +0000 (15:01 +0100)]
s4-libregistry: Make sure we don't dereference a NULL pointer.

Reviewed-by: David Disseldorp <ddiss@samba.org>
11 years agos4-client: Make sure entry is a valid string.
Andreas Schneider [Mon, 25 Feb 2013 13:58:45 +0000 (14:58 +0100)]
s4-client: Make sure entry is a valid string.

Reviewed-by: David Disseldorp <ddiss@samba.org>
11 years agowinbind: Fix no memory check in _wbint_PingDc().
Andreas Schneider [Mon, 25 Feb 2013 13:55:48 +0000 (14:55 +0100)]
winbind: Fix no memory check in _wbint_PingDc().

Reviewed-by: David Disseldorp <ddiss@samba.org>
11 years agokrb5_wrap: Make sure we don't dereference a NULL pointer.
Andreas Schneider [Mon, 25 Feb 2013 13:52:23 +0000 (14:52 +0100)]
krb5_wrap: Make sure we don't dereference a NULL pointer.

Reviewed-by: David Disseldorp <ddiss@samba.org>
11 years agos3-daemons: Set the comment field of the daemons.
Andreas Schneider [Mon, 25 Feb 2013 09:41:18 +0000 (10:41 +0100)]
s3-daemons: Set the comment field of the daemons.

PR_SET_NAME sets the comm field of a process. This way we can give
processes a name and they are easier to identify.

$ ps afx -o pid,comm
29447 smbd
29452  \_ epmd
29453  \_ lsasd-master
29455  |   \_ lsasd-child
29457  |   \_ lsasd-child
29459  |   \_ lsasd-child
29461  |   \_ lsasd-child
29463  |   \_ lsasd-child
29454  \_ spoolssd-master
29456      \_ lpqd
29458      \_ spoolssd-child
29460      \_ spoolssd-child
29462      \_ spoolssd-child
29465      \_ spoolssd-child
29466      \_ spoolssd-child
29467      \_ spoolssd-child
29468      \_ spoolssd-child
29469      \_ spoolssd-child
29470      \_ spoolssd-child
29471      \_ spoolssd-child

Reviewed-by: David Disseldorp <ddiss@samba.org>
11 years agolib: Add prctl_set_comment to utils.
Andreas Schneider [Tue, 5 Mar 2013 14:54:44 +0000 (15:54 +0100)]
lib: Add prctl_set_comment to utils.

Reviewed-by: David Disseldorp <ddiss@samba.org>
11 years agowaf: Correctly check for prctl in just one place.
Andreas Schneider [Mon, 25 Feb 2013 09:02:35 +0000 (10:02 +0100)]
waf: Correctly check for prctl in just one place.

Reviewed-by: David Disseldorp <ddiss@samba.org>
11 years agowinbind: Fix samba3.winbind.struct test.
Andreas Schneider [Thu, 21 Feb 2013 11:14:55 +0000 (12:14 +0100)]
winbind: Fix samba3.winbind.struct test.

Reviewed-by: David Disseldorp <ddiss@samba.org>
11 years agowinbind: Correctly use names in the domain struct.
Andreas Schneider [Mon, 25 Feb 2013 08:31:12 +0000 (09:31 +0100)]
winbind: Correctly use names in the domain struct.

Reviewed-by: David Disseldorp <ddiss@samba.org>
11 years agowinbind: Use talloc for allocating domain, dns, forest and dc name.
Andreas Schneider [Mon, 18 Feb 2013 15:36:22 +0000 (16:36 +0100)]
winbind: Use talloc for allocating domain, dns, forest and dc name.

Reviewed-by: David Disseldorp <ddiss@samba.org>
11 years agoFix the build: net_serverid.c has 3 wrong format strings for 64bit vars
Guenter Kukkukk [Tue, 5 Mar 2013 19:08:49 +0000 (20:08 +0100)]
Fix the build: net_serverid.c has 3 wrong format strings for 64bit vars

On two of my opensuse machines i get 3 errors, e.g.:
../source3/utils/net_serverid.c:333:3: error: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 5 has type ‘uint64_t’ [-Werror=format]
cc1: some warnings being treated as errors

Signed-off-by: Guenter Kukkukk <kukks@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
Autobuild-User(master): Jeremy Allison <jra@samba.org>
Autobuild-Date(master): Tue Mar  5 22:49:03 CET 2013 on sn-devel-104

11 years agos3:lib/charcnv fix typo in pull_ascii_base_talloc()
Ralph Wuerthner [Tue, 26 Feb 2013 11:32:32 +0000 (12:32 +0100)]
s3:lib/charcnv fix typo in pull_ascii_base_talloc()

Signed-off-by: Ralph Wuerthner <ralph.wuerthner@de.ibm.com>
Reviewed-by: Christian Ambach <ambi@samba.org>
Autobuild-User(master): Christian Ambach <ambi@samba.org>
Autobuild-Date(master): Tue Mar  5 15:56:56 CET 2013 on sn-devel-104

11 years agos3:libnet increase timeout for machine password change
Christian Ambach [Tue, 5 Mar 2013 10:44:03 +0000 (11:44 +0100)]
s3:libnet increase timeout for machine password change

DCs might run password filter modules that can delay the setting of
the machine password for a significant amount of time
use the same timeout as in the other paths of domain join
(e.g. rpccli_netlogon_set_trust_password)

Signed-off-by: Christian Ambach <ambi@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
11 years agotdb: Slightly simplify tdb_expand_file
Volker Lendecke [Mon, 4 Mar 2013 12:06:05 +0000 (13:06 +0100)]
tdb: Slightly simplify tdb_expand_file

The "else" keywords are not necessary here, we return in the preceding
if clause

Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
Autobuild-User(master): Stefan Metzmacher <metze@samba.org>
Autobuild-Date(master): Tue Mar  5 14:00:47 CET 2013 on sn-devel-104

11 years agotsocket_bsd: Attempt to increase the SO_SNDBUF if we get EMSGSIZE in sendto()
Andrew Bartlett [Mon, 4 Mar 2013 03:06:14 +0000 (14:06 +1100)]
tsocket_bsd: Attempt to increase the SO_SNDBUF if we get EMSGSIZE in sendto()

This matches what was done for lib/socket/socket_unix.c in
c692bb02b039ae8fef6ba968fd13b36ad7d62a72.

(and is based on that patch by Landon Fuller <landonf@bikemonkey.org>)

Andrew Bartlett

Reviewed-by: Stefan Metzmacher <metze@samba.org>
Autobuild-User(master): Stefan Metzmacher <metze@samba.org>
Autobuild-Date(master): Mon Mar  4 11:15:35 CET 2013 on sn-devel-104

11 years agos4-lib/socket: Return the original EMSGSIZE when sendto() and setsockopt() both fail
Andrew Bartlett [Mon, 4 Mar 2013 03:07:38 +0000 (14:07 +1100)]
s4-lib/socket: Return the original EMSGSIZE when sendto() and setsockopt() both fail

This ensures that should we be unable to increase the socket size, we return an
error that the application layer above might expect and be able to make
as reasonable response to (such as switching to a stream-based transport).

This fixes up c692bb02b039ae8fef6ba968fd13b36ad7d62a72.

As suggested by metze in https://bugzilla.samba.org/show_bug.cgi?id=9697#c4

Andrew Bartlett

Reviewed-by: Stefan Metzmacher <metze@samba.org>
11 years agoselftest: Remove output directories to save disk space
Andrew Bartlett [Sun, 17 Feb 2013 11:45:59 +0000 (22:45 +1100)]
selftest: Remove output directories to save disk space

Reviewed-by: Stefan Metzmacher <metze@samba.org>
11 years agosamba_upgradeprovision: Do not reset every DN when changing an SD
Andrew Bartlett [Mon, 18 Feb 2013 04:56:18 +0000 (15:56 +1100)]
samba_upgradeprovision: Do not reset every DN when changing an SD

SD propogation is handled by an LDB module, we do not need to touch each
and every DN to make it happen.

Now that we do not need to put this via a hash, the dnToRecalculate
list is changed to be a list of Dn objects, not strings so that:

if dn in listWellknown

is handled using a schema comparison (avoiding different case forms
tripping it up).

Andrew Bartlett

Reviewed-by: Stefan Metzmacher <metze@samba.org>
11 years agosamba_upgradeprovision: do not maintain dnNotToRecalculate as a list
Andrew Bartlett [Mon, 18 Feb 2013 04:15:52 +0000 (15:15 +1100)]
samba_upgradeprovision: do not maintain dnNotToRecalculate as a list

We only need a boolean indication, not the actual values.

Andrew Bartlett

Reviewed-by: Stefan Metzmacher <metze@samba.org>
11 years agosamba_upgradeprovision: only run rebuild_sd in --full mode
Andrew Bartlett [Mon, 18 Feb 2013 04:05:00 +0000 (15:05 +1100)]
samba_upgradeprovision: only run rebuild_sd in --full mode

This is a potentially destructive routine, and should not be run by default.

Andrew Bartlett

Reviewed-by: Stefan Metzmacher <metze@samba.org>
11 years agosamba_upgradeprovision: Remove alwaysRecalculate, this is too dangerous
Andrew Bartlett [Mon, 18 Feb 2013 02:00:31 +0000 (13:00 +1100)]
samba_upgradeprovision: Remove alwaysRecalculate, this is too dangerous

I am unclear on why this was added, but the idea that we ever always reset data
in the directory is not reasonable to me, so I am removing it.

Andrew Bartlett

Reviewed-by: Stefan Metzmacher <metze@samba.org>
11 years agosamba_upgradeprovision: Remove unused checkKeepAttributeOldMtd
Andrew Bartlett [Mon, 18 Feb 2013 01:28:23 +0000 (12:28 +1100)]
samba_upgradeprovision: Remove unused checkKeepAttributeOldMtd

lastProvisionUSNs is never None, instead the code requries the administrator to populate this
attribute in the directory.

Andrew Bartlett

Reviewed-by: Stefan Metzmacher <metze@samba.org>
11 years agosamba_upgradeprovision: Remove inherited ACEs before comparing the SDs
Andrew Bartlett [Sun, 17 Feb 2013 11:44:56 +0000 (22:44 +1100)]
samba_upgradeprovision: Remove inherited ACEs before comparing the SDs

This avoids changing an SD when it is not really required.

Andrew Bartlett

Reviewed-by: Stefan Metzmacher <metze@samba.org>
11 years agoscripting: Rework samba.upgradehelpers.get_diff_sddls to be get_diff_sds
Andrew Bartlett [Sun, 17 Feb 2013 11:03:18 +0000 (22:03 +1100)]
scripting: Rework samba.upgradehelpers.get_diff_sddls to be get_diff_sds

This moves the SDDL conversion inside the get_diff_sds function and prepares
for removing inherited ACEs from the SD before comparison.

Andrew Bartlett

Reviewed-by: Stefan Metzmacher <metze@samba.org>
11 years agosamba_upgradeprovision: Remove auto-detection of pre-alpha9 databases
Andrew Bartlett [Sat, 16 Feb 2013 10:58:57 +0000 (21:58 +1100)]
samba_upgradeprovision: Remove auto-detection of pre-alpha9 databases

These are incredibly rare, and administrators running such databases
not only ask the Samba Team for help personally, they can read --help.

Andrew Bartlett

Reviewed-by: Stefan Metzmacher <metze@samba.org>
11 years agoselftest: Rename samba4.blackbox.upgradeprovision.py to samba4.blackbox.upgradeprovis...
Andrew Bartlett [Sat, 16 Feb 2013 02:12:53 +0000 (13:12 +1100)]
selftest: Rename samba4.blackbox.upgradeprovision.py to samba4.blackbox.upgradeprovision.current

This name matches the other upgradeprovision tests for older saved provisions.

Andrew Bartlett

Reviewed-by: Stefan Metzmacher <metze@samba.org>
11 years agoselftest: Run dbcheck and improved upgrdeprovision tests against release-4-0-0
Andrew Bartlett [Fri, 15 Feb 2013 14:07:27 +0000 (01:07 +1100)]
selftest: Run dbcheck and improved upgrdeprovision tests against release-4-0-0

The improved upgradeprovision tests now call ldapcmp to verify the
changes made do actually bring the database in line with a fresh
provision.

Andrew Bartlett

Reviewed-by: Stefan Metzmacher <metze@samba.org>
11 years agoselftest: Add ldapcmp to ensure upgradeprovision of a fresh DB is a no-op
Andrew Bartlett [Fri, 15 Feb 2013 14:08:20 +0000 (01:08 +1100)]
selftest: Add ldapcmp to ensure upgradeprovision of a fresh DB is a no-op

Reviewed-by: Stefan Metzmacher <metze@samba.org>
11 years agoselftest: Add in a provision from 4.0.0 to run tests against
Andrew Bartlett [Fri, 15 Feb 2013 14:05:56 +0000 (01:05 +1100)]
selftest: Add in a provision from 4.0.0 to run tests against

Reviewed-by: Stefan Metzmacher <metze@samba.org>
11 years agoselftest: Do an ldapcmp run against the upgraded domain
Andrew Bartlett [Thu, 14 Feb 2013 04:01:10 +0000 (15:01 +1100)]
selftest: Do an ldapcmp run against the upgraded domain

This checks (with a set of known issues marked in the --filter attribute) that the upgraded
domain matches a fresh provision.

Andrew Bartlett

Reviewed-by: Stefan Metzmacher <metze@samba.org>
11 years agosamba-tool ldapcmp: Add support for checking DNSDOMAIN and DNSFOREST by default
Andrew Bartlett [Thu, 14 Feb 2013 04:00:01 +0000 (15:00 +1100)]
samba-tool ldapcmp: Add support for checking DNSDOMAIN and DNSFOREST by default

Reviewed-by: Stefan Metzmacher <metze@samba.org>
11 years agosamba-tool dbcheck: fix msDS-HasInstantiatedNCs attributes to match instanceType...
Andrew Bartlett [Sun, 10 Feb 2013 21:25:41 +0000 (08:25 +1100)]
samba-tool dbcheck: fix msDS-HasInstantiatedNCs attributes to match instanceType on our ntdsDSA

This value is only a link to the local value of intanceType on our server, so only fix it for our server.

Andrew Bartlett

Reviewed-by: Stefan Metzmacher <metze@samba.org>
11 years agoscripting: Correct parsing of binary DN
Andrew Bartlett [Fri, 1 Mar 2013 06:29:09 +0000 (17:29 +1100)]
scripting: Correct parsing of binary DN

The DN is of the form B:8:01020304:DC=samba,DC=example,DC=com.  We need
to account for the case where the 8 is actually (say) 16, and so not just
one character.

Andrew Bartlett

Signed-off-by: Stefan Metzmacher <metze@samba.org>
11 years agosubunit: Add a sh macro for skipping a test
Andrew Bartlett [Fri, 15 Feb 2013 22:36:07 +0000 (09:36 +1100)]
subunit: Add a sh macro for skipping a test

Reviewed-by: Stefan Metzmacher <metze@samba.org>
11 years agoHandle EMSGSIZE on UNIX domain sockets.
Landon Fuller [Sat, 2 Mar 2013 19:08:47 +0000 (14:08 -0500)]
Handle EMSGSIZE on UNIX domain sockets.

On some systems (eg, FreeBSD) the default SO_SNDBUF for UNIX
domain sockets is to small, and EMSGSIZE is returned. Other
systems provide a larger default send buffer, but there is
still no guarantee that the buffer will be sized appropriately.

This patch modifies the sendto() path to attempt to resize
the SO_SNDBUF dynamically upon an EMSGSIZE failure, and then
retry the send.

This fixes local DCE/RPC errors on FreeBSD, eg:

https://lists.samba.org/archive/samba-technical/2013-January/089881.html

Signed-Off-By: Landon Fuller <landonf@bikemonkey.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Autobuild-User(master): Andrew Bartlett <abartlet@samba.org>
Autobuild-Date(master): Sat Mar  2 23:34:03 CET 2013 on sn-devel-104

11 years agosamba-tool ldapcmp: Add --skip-missing-dn to not error on DNs present in one DB but...
Andrew Bartlett [Thu, 14 Feb 2013 03:59:28 +0000 (14:59 +1100)]
samba-tool ldapcmp: Add --skip-missing-dn to not error on DNs present in one DB but not the other

This is needed to compare some parts of the database, particularly in --two mode, which
are just never going to have exactly the same DNs.

Andrew Bartlett

Reviewed-by: Stefan Metzmacher <metze@samba.org>
11 years agosamba-tool domain classicupgrade: Fix typo in error path for multiple account flags
Andrew Bartlett [Mon, 11 Feb 2013 22:20:03 +0000 (09:20 +1100)]
samba-tool domain classicupgrade: Fix typo in error path for multiple account flags

Reviewed-by: Stefan Metzmacher <metze@samba.org>
11 years agosamba-tool domain classicupgrade: Print a better error when the ldap backend PW was...
Andrew Bartlett [Tue, 15 Jan 2013 10:53:30 +0000 (21:53 +1100)]
samba-tool domain classicupgrade: Print a better error when the ldap backend PW was not found

Reviewed-by: Stefan Metzmacher <metze@samba.org>
11 years agosamba-tool dbcheck: fix comment on err_wrong_sd
Andrew Bartlett [Mon, 11 Feb 2013 03:50:49 +0000 (14:50 +1100)]
samba-tool dbcheck: fix comment on err_wrong_sd

Reviewed-by: Stefan Metzmacher <metze@samba.org>
11 years agoRemove incomplete check for IPv6 link-local addresses.
Landon Fuller [Sun, 24 Feb 2013 03:32:25 +0000 (22:32 -0500)]
Remove incomplete check for IPv6 link-local addresses.

This has been superceded by a check for link-local
addresses in get_interfaces()

Signed-Off-By: Landon Fuller <landonf@bikemonkey.org>
Reviewed-By: Richard Sharpe <realrichardsharpe@gmail.com>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Autobuild-User(master): Andrew Bartlett <abartlet@samba.org>
Autobuild-Date(master): Sat Mar  2 08:38:54 CET 2013 on sn-devel-104

11 years agoMove python modules from source4/scripting/python/ to python/.
Jelmer Vernooij [Fri, 28 Dec 2012 14:37:14 +0000 (15:37 +0100)]
Move python modules from source4/scripting/python/ to python/.

Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Autobuild-User(master): Andrew Bartlett <abartlet@samba.org>
Autobuild-Date(master): Sat Mar  2 03:57:34 CET 2013 on sn-devel-104

11 years agobuild: Change bin/default/python -> bin/python symlink to bin/default/python_modules
Andrew Bartlett [Fri, 1 Mar 2013 23:58:50 +0000 (10:58 +1100)]
build: Change bin/default/python -> bin/python symlink to bin/default/python_modules

This avoids a collision with the new top level python directory.

Andrew Bartlett

11 years agobuild: Rename samba_python waf node to avoid duplicate name
Andrew Bartlett [Fri, 1 Mar 2013 21:28:11 +0000 (08:28 +1100)]
build: Rename samba_python waf node to avoid duplicate name

This makes it clearer when debuging build issues.

Andrew Bartlett

11 years agotevent: change version to 0.9.18 tevent-0.9.18
Stefan Metzmacher [Fri, 30 Nov 2012 08:43:23 +0000 (09:43 +0100)]
tevent: change version to 0.9.18

This release contains a lot of fixes:

- Adding new timer events is now faster, if there's
  a large number of timer events.

- sigprocmask does not work on FreeBSD to stop further signals in a signal
  handler.

- TEVENT_NUM_SIGNALS is calculated by configure in order
  to support realtime signals on freebsd.

- ./configure --disable-python was fixed for the standalone build.

- Several crash bugs in the poll backend are fixed.

- The poll backend removes deleted events from the
  cached pollfd array now.

- The poll doesn't pass pollfd.events == 0 to poll()
  and maintains a list of disabled events,
  instead of consuming 100% cpu and/or triggering
  the callers handler.

- The poll backend detects POLLNVAL and reports EBADF
  instead of consuming 100% cpu.

- The select backend supports separate handlers
  for TEVENT_FD_READ and TEVENT_FD_WRITE.

- The poll and select backends are now doing fair
  queuing of fd events.

- The epoll has better error checking
  and supports separate handlers
  for TEVENT_FD_READ and TEVENT_FD_WRITE.

- The standard backend was rewritten to be a tiny
  wrapper on top of epoll with a fallback to poll,
  which means that it doesn't use select directly anymore.

- TEVENT_TRACE_BEFORE_LOOP_ONCE and TEVENT_TRACE_AFTER_LOOP_ONCE
  are added in order to allow the application to hook in
  before and after the loop_once() backend function is called.
  The TEVENT_HAS_LOOP_ONCE_TRACE_POINTS define can be used to
  detect the new feature.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
Autobuild-User(master): Jeremy Allison <jra@samba.org>
Autobuild-Date(master): Sat Mar  2 02:15:44 CET 2013 on sn-devel-104

11 years agotevent: optimize adding new zero timer events
Stefan Metzmacher [Fri, 22 Feb 2013 11:45:39 +0000 (12:45 +0100)]
tevent: optimize adding new zero timer events

Such events were used before we had immediate events.
It's likely that there're a lot of this events
and we need to add new ones in fifo order.

The tricky part is that tevent_common_add_timer()
should not use the optimization as it's used
by broken Samba versions, which don't use
tevent_common_loop_timer_delay() in source3/lib/events.c.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
11 years agotevent: optimize adding new timer events
Stefan Metzmacher [Fri, 22 Feb 2013 11:45:39 +0000 (12:45 +0100)]
tevent: optimize adding new timer events

As new timestamps typically get higher:-)
it's better to traverse the existing list from
the tail.

This is not completely optimal, but it should be better
than before.

A second optimization could be done for zero timestamps,
we would just remember the last_zero_timer,
but that would change the internal ABI.
Normally thatshould not be a poblem, but the Samba's
source3/lib/events.c abuses tevent_internal.h
from the current source tree, even if an external tevent.h
is used. The other problem is that it makes use of
tevent_common_add_timer() without using
tevent_common_loop_timer_delay().

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
11 years agotevent: add a debug message in tevent_common_loop_timer_delay()
Stefan Metzmacher [Fri, 1 Mar 2013 08:25:32 +0000 (09:25 +0100)]
tevent: add a debug message in tevent_common_loop_timer_delay()

We should debug a message before and after running the handler.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
11 years agotevent: add test_event_fd2()
Stefan Metzmacher [Wed, 27 Feb 2013 15:43:44 +0000 (16:43 +0100)]
tevent: add test_event_fd2()

This test fills the socket kernel buffers
and verifies that we don't report TEVENT_FD_WRITE
if the buffer is full.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
11 years agotevent: add test_event_fd1()
Stefan Metzmacher [Fri, 22 Feb 2013 20:48:44 +0000 (21:48 +0100)]
tevent: add test_event_fd1()

This test verifies that TEVENT_FD_* flags are handled correctly.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
11 years agotevent: use better names for the subtests
Stefan Metzmacher [Thu, 28 Feb 2013 09:12:42 +0000 (10:12 +0100)]
tevent: use better names for the subtests

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
11 years agotevent: Regression test to ensure that a tevent backend can cope with separate read...
Jeremy Allison [Thu, 14 Feb 2013 22:16:31 +0000 (14:16 -0800)]
tevent: Regression test to ensure that a tevent backend can cope with separate read/write events on a single fd.

This tests the multiplex fd changes to the epoll backend to
ensure they work correctly.

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
11 years agotevent: use DEBUG_ERROR for the fallback message in epoll_panic()
Stefan Metzmacher [Fri, 1 Mar 2013 13:30:54 +0000 (14:30 +0100)]
tevent: use DEBUG_ERROR for the fallback message in epoll_panic()

A Samba autobuild passed without a fallback, so this is
really an error.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
11 years agotevent: If epoll_ctl(..EPOLL_CTL_ADD,..) failes with EEXIST, merge the two fde's...
Jeremy Allison [Thu, 14 Feb 2013 21:52:41 +0000 (13:52 -0800)]
tevent: If epoll_ctl(..EPOLL_CTL_ADD,..) failes with EEXIST, merge the two fde's into one epoll event.

Signed-off-by: Jeremy Allison <jra@samba.org>
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
11 years agotevent: preferr the write handler if there're two possible handlers registered with...
Stefan Metzmacher [Wed, 20 Feb 2013 10:50:56 +0000 (11:50 +0100)]
tevent: preferr the write handler if there're two possible handlers registered with epoll

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
11 years agotevent: In epoll_event_loop() ensure we trigger the right handler for a multiplexed...
Stefan Metzmacher [Wed, 20 Feb 2013 13:49:17 +0000 (14:49 +0100)]
tevent: In epoll_event_loop() ensure we trigger the right handler for a multiplexed fde event.

Signed-off-by: Jeremy Allison <jra@samba.org>
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
11 years agotevent: Add utility function epoll_handle_hup_or_err()
Jeremy Allison [Thu, 14 Feb 2013 23:53:38 +0000 (15:53 -0800)]
tevent: Add utility function epoll_handle_hup_or_err()

We'll use this to handle the EPOLL_ADDITIONAL_FD_FLAG_GOT_ERROR
and EPOLL_ADDITIONAL_FD_FLAG_REPORT_ERROR flags with multiplexed
events in the event loop.

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
11 years agotevent: handle EPOLL_ADDITIONAL_FD_FLAG_HAS_MPX in epoll_update_event()
Stefan Metzmacher [Wed, 20 Feb 2013 16:17:31 +0000 (17:17 +0100)]
tevent: handle EPOLL_ADDITIONAL_FD_FLAG_HAS_MPX in epoll_update_event()

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
11 years agotevent: handle multiplexed fde's in epoll_event_fd_destructor()
Stefan Metzmacher [Wed, 20 Feb 2013 17:01:57 +0000 (18:01 +0100)]
tevent: handle multiplexed fde's in epoll_event_fd_destructor()

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
11 years agotevent: Fix epoll_mod_event() to cope with modifying a multiplexed fde event.
Stefan Metzmacher [Fri, 1 Mar 2013 12:57:05 +0000 (13:57 +0100)]
tevent: Fix epoll_mod_event() to cope with modifying a multiplexed fde event.

Signed-off-by: Jeremy Allison <jra@samba.org>
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
11 years agotevent: Fix up epoll_del_event to cope with deleting a multiplexed fde event.
Jeremy Allison [Fri, 15 Feb 2013 18:16:44 +0000 (10:16 -0800)]
tevent: Fix up epoll_del_event to cope with deleting a multiplexed fde event.

Signed-off-by: Jeremy Allison <jra@samba.org>
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
11 years agotevent: handle multiplexed fde's in epoll_add_event()
Stefan Metzmacher [Wed, 20 Feb 2013 16:14:52 +0000 (17:14 +0100)]
tevent: handle multiplexed fde's in epoll_add_event()

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
11 years agotevent: Start to fix the epoll backend to support 2 fd events on the same fd correctly.
Jeremy Allison [Thu, 14 Feb 2013 21:50:56 +0000 (13:50 -0800)]
tevent: Start to fix the epoll backend to support 2 fd events on the same fd correctly.

Add a utility function epoll_add_multiplex_fd() and
a new flag EPOLL_ADDITIONAL_FD_FLAG_HAS_MPX.

This will be called by epoll_add_event() to merge two
fde events with the same file descriptor.

Signed-off-by: Jeremy Allison <jra@samba.org>
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
11 years agotevent: ignore EBADF from epoll_ctl() and disable the event
Stefan Metzmacher [Wed, 20 Feb 2013 12:33:19 +0000 (13:33 +0100)]
tevent: ignore EBADF from epoll_ctl() and disable the event

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
11 years agotevent: unify handling of HAS_EVENT and REPORT_ERROR in epoll_{add,mod,del}_event()
Stefan Metzmacher [Wed, 20 Feb 2013 16:38:10 +0000 (17:38 +0100)]
tevent: unify handling of HAS_EVENT and REPORT_ERROR in epoll_{add,mod,del}_event()

epoll_{add,mod,del}_event() are only called via epoll_update_event()
and epoll_update_event() should not remove REPORT_ERROR itself.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
11 years agotevent: always go through epoll_update_event()
Stefan Metzmacher [Wed, 20 Feb 2013 10:26:00 +0000 (11:26 +0100)]
tevent: always go through epoll_update_event()

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
11 years agotevent: s/epoll_change_event/epoll_update_event
Stefan Metzmacher [Wed, 20 Feb 2013 11:55:11 +0000 (12:55 +0100)]
tevent: s/epoll_change_event/epoll_update_event

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
11 years agotevent: the content of event is ignored by EPOLL_CTL_DEL
Stefan Metzmacher [Wed, 20 Feb 2013 16:15:52 +0000 (17:15 +0100)]
tevent: the content of event is ignored by EPOLL_CTL_DEL

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
11 years agotevent: call epoll_panic() if EPOLL_CTL_DEL failed
Stefan Metzmacher [Fri, 15 Feb 2013 09:31:36 +0000 (10:31 +0100)]
tevent: call epoll_panic() if EPOLL_CTL_DEL failed

Only ENOENT is ignored as it is no error.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
11 years agotevent: use helper variables to hold the epoll_ctl() result
Stefan Metzmacher [Wed, 20 Feb 2013 12:12:27 +0000 (13:12 +0100)]
tevent: use helper variables to hold the epoll_ctl() result

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
11 years agotevent: remove unused if (epoll_ev->epoll_fd == -1) return; checks
Stefan Metzmacher [Wed, 20 Feb 2013 12:07:34 +0000 (13:07 +0100)]
tevent: remove unused if (epoll_ev->epoll_fd == -1) return; checks

We'll never leave epoll_check_reopen() with epoll_fd == -1.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
11 years agotevent: add std_event_loop_wait()
Stefan Metzmacher [Sun, 17 Feb 2013 15:41:41 +0000 (16:41 +0100)]
tevent: add std_event_loop_wait()

We also need to fallback in tevent_loop_wait()
otherwise we might miss events in the poll->fresh list.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
11 years agotevent: don't call TALLOC_FREE(ev->additional_data) in std_fallback_to_poll()
Stefan Metzmacher [Sun, 17 Feb 2013 15:40:20 +0000 (16:40 +0100)]
tevent: don't call TALLOC_FREE(ev->additional_data) in std_fallback_to_poll()

The epoll backend has done the cleanup already.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
11 years agotevent: avoid any operation on epoll_ev after a epoll_panic()
Stefan Metzmacher [Fri, 15 Feb 2013 15:33:56 +0000 (16:33 +0100)]
tevent: avoid any operation on epoll_ev after a epoll_panic()

This calls TALLOC_FREE(ev->additional_data), which is epoll_ev
within epoll_panic() before calling the fallback handler.

In order to notice that a epoll_panic() happened, a caller can
register a pointer to a bool variable under epoll_ev->panic_state.

As epoll_check_reopen() can fail due to a epoll_panic(),
we need to force the replay flag if we have called any event handler.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
11 years agotevent: add epoll_{create,ctl}_panic_fallback() for testing
Stefan Metzmacher [Fri, 15 Feb 2013 11:10:26 +0000 (12:10 +0100)]
tevent: add epoll_{create,ctl}_panic_fallback() for testing

This makes sure we only do random panics if a fallback handler
is registered.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
11 years agotevent: use DLIST_DEMOTE() before calling on fde handler after select() and poll()
Stefan Metzmacher [Thu, 21 Feb 2013 14:44:30 +0000 (15:44 +0100)]
tevent: use DLIST_DEMOTE() before calling on fde handler after select() and poll()

This makes sure we don't preferr events which are at the beginning
of the list.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
11 years agotevent: debug a FATAL message on EBADF from the select backend
Stefan Metzmacher [Thu, 28 Feb 2013 13:43:55 +0000 (14:43 +0100)]
tevent: debug a FATAL message on EBADF from the select backend

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
11 years agotevent: Fix multiple handler on the same fd bug in the tevent select backend.
Jeremy Allison [Wed, 27 Feb 2013 18:18:44 +0000 (10:18 -0800)]
tevent: Fix multiple handler on the same fd bug in the tevent select backend.

When we're deciding what handlers to call in the select backend,
we didn't take into account the fact that the same fd may have
been added into the read FD_SET and the write FD_SET but with
different handlers.

We must match on both the file descriptor and the flags requested
before calling the handler.

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
11 years agotevent: revalidate fde->flags after poll()
Stefan Metzmacher [Fri, 1 Mar 2013 15:43:35 +0000 (16:43 +0100)]
tevent: revalidate fde->flags after poll()

This is important to avoid races between threads if the poll_mt
backend is used.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
11 years agotevent: ignore POLLNVAL from poll() and disable the event
Stefan Metzmacher [Fri, 22 Feb 2013 20:45:11 +0000 (21:45 +0100)]
tevent: ignore POLLNVAL from poll() and disable the event

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
11 years agotevent: traverse the ev->fd_event list instead of the poll_ev->fds array
Stefan Metzmacher [Thu, 21 Feb 2013 14:41:17 +0000 (15:41 +0100)]
tevent: traverse the ev->fd_event list instead of the poll_ev->fds array

That has the same complexity but simplifies the code.

It also seems to fix a real problem, which was found
by the following test failure in Samba's autobuild,
while removing the epoll support from the "standard" backend.

    [402/1555 in 19m8s] samba3.raw.composite(plugin_s4_dc)
    smbtorture 4.1.0pre1-DEVELOPERBUILD
    Using seed 1361531675
    Testing savefile
    Testing parallel fetchfile with 10 ops
    waiting for completion
    maximum runtime exceeded for smbtorture - terminating
    UNEXPECTED(error): samba3.raw.composite.fetchfile (subunit.RemotedTestCase)(plugin_s4_dc)
    REASON: _StringException: _StringException: was started but never finished!
    UNEXPECTED(error): samba3.raw.composite.fetchfile(plugin_s4_dc) (subunit.RemotedTestCase)
    REASON: was started but never finished!

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
11 years agotevent: maintain a list of disabled events in the poll backend
Stefan Metzmacher [Thu, 28 Feb 2013 16:07:28 +0000 (17:07 +0100)]
tevent: maintain a list of disabled events in the poll backend

We need to avoid passing pollfd.events == 0, to poll(),
as it will report POLLERR and POLLHUP events, but our caller
does not expect the event handler to be called.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
11 years agotevent: merge poll_fresh_fde_destructor() into poll_event_fd_destructor()
Stefan Metzmacher [Thu, 28 Feb 2013 16:04:00 +0000 (17:04 +0100)]
tevent: merge poll_fresh_fde_destructor() into poll_event_fd_destructor()

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
11 years agotevent: use tevent_poll_event_add_fd_internal() in poll_event_add_fd()
Stefan Metzmacher [Thu, 28 Feb 2013 16:02:45 +0000 (17:02 +0100)]
tevent: use tevent_poll_event_add_fd_internal() in poll_event_add_fd()

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
11 years agotevent: make sure we cleanup the array passed to poll() after deleting an event
Stefan Metzmacher [Thu, 21 Feb 2013 13:41:24 +0000 (14:41 +0100)]
tevent: make sure we cleanup the array passed to poll() after deleting an event

If we don't cleanup the array passed to poll after an
event was deleted, we may pass a bad file descriptor to poll().

This was found by the following test failure in Samba's
autobuild, while removing the epoll support from
the "standard" backend.

    [48/1555 in 4m37s] samba3.smbtorture_s3.plain(s3dc).LOCK4
    UNEXPECTED(failure): samba3.smbtorture_s3.plain(s3dc).LOCK4.smbtorture(s3dc)
    REASON: _StringException: _StringException: using seed 1361530718
    host=127.0.0.2 share=tmp user=metze myname=sn-devel-104
    Running LOCK4
    starting locktest4
    Failed to create file: NT_STATUS_INVALID_HANDLE
    finished locktest4
    TEST LOCK4 FAILED!
    LOCK4 took 190.492 secs

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
11 years agotevent: don't skip a fd event if the previous one was deleted during poll()
Stefan Metzmacher [Sun, 17 Feb 2013 22:21:28 +0000 (23:21 +0100)]
tevent: don't skip a fd event if the previous one was deleted during poll()

In a threaded environment it can happen that an tevent_fd is talloc_free'ed
while the main thread sleeps in the poll() syscall.

In such a case poll_event_fd_destructor() would set poll_ev->fdes[i] = NULL.

We then skip the removed event, but before we also skipped the one
that was located at the end of the array. We moved it to possition
'i', but the next loop uses 'i=i+1'.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
11 years agotevent: remember the errno from select(), poll() and epoll_wait()
Stefan Metzmacher [Fri, 15 Feb 2013 10:24:59 +0000 (11:24 +0100)]
tevent: remember the errno from select(), poll() and epoll_wait()

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
11 years agotevent: add trace points BEFORE_LOOP_ONCE and AFTER_LOOP_ONCE
Michael Adam [Tue, 26 Feb 2013 14:54:57 +0000 (15:54 +0100)]
tevent: add trace points BEFORE_LOOP_ONCE and AFTER_LOOP_ONCE

The define TEVENT_HAS_LOOP_ONCE_TRACE_POINTS can be used to
detect the new feature, without writing configure tests.

Pair-Programmed-With: Stefan Metzmacher <metze@samba.org>

Signed-off-by: Michael Adam <obnox@samba.org>
Signed-off-by: Stefan Metzmacher <metze@samba.org>
11 years agotevent: fix compiler warning in tevent_context_init_byname()
Stefan Metzmacher [Sun, 17 Feb 2013 15:36:25 +0000 (16:36 +0100)]
tevent: fix compiler warning in tevent_context_init_byname()

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
11 years agotevent: fix some compiler warnings in testsuite.c
Stefan Metzmacher [Fri, 22 Feb 2013 20:48:11 +0000 (21:48 +0100)]
tevent: fix some compiler warnings in testsuite.c

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
11 years agotevent: fix a comment typo in tevent_epoll.c
Michael Adam [Tue, 26 Feb 2013 14:51:38 +0000 (15:51 +0100)]
tevent: fix a comment typo in tevent_epoll.c

Signed-off-by: Michael Adam <obnox@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
11 years agotevent: fix --disable-python cause configure fails (bug #8718)
Galen.Liu [Mon, 4 Feb 2013 06:43:01 +0000 (07:43 +0100)]
tevent: fix --disable-python cause configure fails (bug #8718)

When we disable python, it will cause build fail!
so, the patch will fix it.

Reviewed-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
11 years agotevent: define TEVENT_NUM_SIGNALS based on configure checks
Stefan Metzmacher [Fri, 22 Feb 2013 13:26:16 +0000 (14:26 +0100)]
tevent: define TEVENT_NUM_SIGNALS based on configure checks

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
11 years agolib/replace: add AC_CHECK_VALUEOF() macro
Stefan Metzmacher [Fri, 22 Feb 2013 13:53:07 +0000 (14:53 +0100)]
lib/replace: add AC_CHECK_VALUEOF() macro

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>