[SCM] Samba Shared Repository - branch master updated - tevent-0-9-8-532-g7c54240

Andrew Tridgell tridge at samba.org
Sat Sep 19 00:29:38 MDT 2009


The branch, master has been updated
       via  7c542406b192cd72c40778850d92771974d6466c (commit)
       via  e9a589feac531379e569bc39d803b16179002cfa (commit)
       via  ade5d43c5ceb915dd2210a735a21fd9bed531dd3 (commit)
       via  716ddc2a897eacd08aed7ff4bee165e418ff63cc (commit)
       via  c6d58efa4b1ad5ff4a9e0f224b8a9789d8f82faf (commit)
       via  39971fff27f71b514308d10d7a2d8c3fb58c2420 (commit)
       via  e71d9728f52e969e07927c5b38fa062c6ef6d1eb (commit)
       via  52f2e26a25cdccf66a3271d40279fdd75d1750da (commit)
       via  4eedcf71eae8dd2b039771e8f7afae9e37b13496 (commit)
       via  7b157a3d8a7cfcb573134fe7ab30603cfa5d9d1b (commit)
       via  1a1cb92583267dea07fa8b4580bf79c8907a7f88 (commit)
       via  85e06ff41d0ed58582fc540886f3e9e52ac85ca4 (commit)
       via  db5e7f3d053ecedd985be518f2080f4061ed06e5 (commit)
       via  c9b0b89cc06531cb57f89b9f98d33d6e0c300957 (commit)
       via  056cbf7f816a6d01bc0ef3105eca43b4aeee9116 (commit)
       via  7326b8f63ebe55bdf662c6f7798cbeeb026b033a (commit)
       via  6dfd10f476e0b74c36f73bfe17a68ca309c4c5ac (commit)
       via  23676b6e9e8aad0ac2aa78d04e65f637b4551527 (commit)
       via  7860817737158e5daa7596304dd9e35cb65ddcee (commit)
       via  c405d721c1a84bd2bdab2d56dd89e232cabe7955 (commit)
       via  1b3f5cee2e72b8eb3df4836c237255ac7ad57136 (commit)
       via  f391e64a82b8e6bf5862175d3ebd71ff8d4b08e8 (commit)
       via  79082f400e3d0c21b53d54bfb42954c2396110b9 (commit)
       via  72217950d3a6ff0fc50eeebab13d4c9e119e6ba6 (commit)
       via  9417aabe4b5f64001bffe2806f6527a31e87a25e (commit)
       via  7744283c36803836f698c12710e8c0ec8fbd8e93 (commit)
       via  a04caf329fefccad0fc272474025f6d23a4deaa2 (commit)
       via  7b3b66d7a22a4f2b460f979f4f489b09464f6946 (commit)
       via  08f144777d4fc8168d27e71fe107718ba99223c9 (commit)
       via  bfd0877261883d1d6ef1d1757dad386332a8db37 (commit)
       via  f5aec9ebb4bf5d0e6f8c6974a485bc5cd2899fdd (commit)
       via  48bc784e089fabf5f3f5a4e4d4ff47ce97ece74b (commit)
       via  7f3817ab77ce85ab19c2c582eca0df84c36466dc (commit)
       via  e1abb39388a154b405583bd55eb4bb9c8cfa13fe (commit)
       via  4861194f39bf826f3405452adc172cf5c240715b (commit)
       via  6a9c89b3aef02310030ff436cd545eef77b8d1ee (commit)
       via  451a537caa2207bb5e0a8818326a5f164c0d559a (commit)
       via  d581a56e209dbf6e67fc8644e0d84fadd593133e (commit)
       via  858cddf86d870305b106148f15768856739b74d5 (commit)
       via  f9c308664833ccba957050ac8a27c5e8a1b44e83 (commit)
       via  f2b5b5bb17910c8a2b709fd62e214c96da3fdd2d (commit)
       via  a99e216a47259ca2c2837b1ea95c995c5e5a4968 (commit)
       via  80c4b1e43e67249996cea61cc761911ff9fecbde (commit)
       via  46c99ec2a3781d53138245182345c6c2ddd9a258 (commit)
       via  dac0fb0b7c369255e0d07e47a11f6a0288019da1 (commit)
       via  e44c4141fdfa07bb3bd09f28e5f093d27f170dc8 (commit)
       via  ae28e2f085cf92bd2b813d97288ac91970c707d7 (commit)
       via  f1ce4f994523cde775210e06dd7e36c6715b352b (commit)
       via  af1e7e1c51d1ae60f52dd2d1a71ca33c90aa5b6e (commit)
       via  2e7841ff51107b0ccb65f19ea4c53d5a42cefb45 (commit)
       via  f0104bee8e95c87cae9089046a70144b63805f9f (commit)
       via  efe9f952504a5a3114cada5f0caed315c4bc654d (commit)
       via  8fa5e567e76d4edb818d4cd88886918470d78ad1 (commit)
       via  62dd3aadd7ee9a8abbdd42caaa140105b1b1e8d9 (commit)
       via  209c278f1fdb315ebf6c83e164e518cc6737480e (commit)
       via  865e65a163145b0aee724210744955af96d618b8 (commit)
       via  5464ce6df678a6ce3022f4a30fd9553996cefb69 (commit)
       via  72fcc6344f1ddfece4dd41790fc1add9c6d2c0f7 (commit)
       via  766774feaea925dd2fdffbfdc55ced66962564b8 (commit)
       via  7bdae8bfba862a67720d53dcffbf77f6b93ceeb4 (commit)
       via  fe36b8af64195f10acead12d4a4f426cc8772a8c (commit)
       via  51fd80647de9cb531181eb1eeefe9ad2c473f784 (commit)
       via  21a6ba41150a133d3207928a8b4c7b1d6c1e411f (commit)
       via  47a147ee284ba822f2a35e1ff173955407d71fc4 (commit)
       via  f4b37f193b9c9e594734476d21ac57de43dd4631 (commit)
       via  4687db00a8b3658ad87a824525bf1dc24f9fd1c7 (commit)
       via  96be1f4ef31fdfa463e916177706bbe4437e4166 (commit)
       via  f84be6cd636e0ccb8e146a6d5dbf0f665fea4263 (commit)
       via  8e48434b9f5140b663c3ca7cb3439b430abf3aac (commit)
       via  668fd97e53d6853345604a7c0472a9bcfd5d2b9b (commit)
       via  0d6bc14225d910150dc9949b35e587aafe9922c7 (commit)
       via  81474df7858273024ae4e214dc339b0754c71048 (commit)
       via  2eb61efd1f050696a7835cfc5c7af96bbcb9708e (commit)
       via  bae320e2aac91839fd2c331e1ad719cb1b4de599 (commit)
      from  c2139e8e5646a8558d70c1ca4ce2d755497de8e1 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 7c542406b192cd72c40778850d92771974d6466c
Author: Andrew Tridgell <tridge at samba.org>
Date:   Fri Sep 18 22:58:03 2009 -0700

    s4-pipes: convert pipe names to lowercase and validate
    
    clients may provide arbitrary names, but we only want lowercase alnum
    names

commit e9a589feac531379e569bc39d803b16179002cfa
Author: Andrew Tridgell <tridge at samba.org>
Date:   Fri Sep 18 18:05:55 2009 -0700

    s4-server: kill main daemon if a task fails to initialise
    
    When one of our core tasks fails to initialise it can now ask for the
    server as a whole to die, rather than limping along in a degraded
    state.

commit ade5d43c5ceb915dd2210a735a21fd9bed531dd3
Author: Andrew Tridgell <tridge at samba.org>
Date:   Fri Sep 18 18:04:15 2009 -0700

    s4-kdc: ignore unknown keytypes
    
    don't fail hdb operations if one of the key types is unknown

commit 716ddc2a897eacd08aed7ff4bee165e418ff63cc
Merge: c6d58efa4b1ad5ff4a9e0f224b8a9789d8f82faf c2139e8e5646a8558d70c1ca4ce2d755497de8e1
Author: Andrew Tridgell <tridge at samba.org>
Date:   Fri Sep 18 14:12:02 2009 -0700

    Merge branch 'master' of /home/tridge/samba/git/combined

commit c6d58efa4b1ad5ff4a9e0f224b8a9789d8f82faf
Merge: 39971fff27f71b514308d10d7a2d8c3fb58c2420 78338d431c6e4ae8e3ff94b0ba9caaae2a5626a9
Author: Andrew Tridgell <tridge at samba.org>
Date:   Fri Sep 18 11:22:32 2009 -0700

    Merge branch 'master' of /home/tridge/samba/git/combined

commit 39971fff27f71b514308d10d7a2d8c3fb58c2420
Merge: 23676b6e9e8aad0ac2aa78d04e65f637b4551527 e71d9728f52e969e07927c5b38fa062c6ef6d1eb
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Sep 17 15:24:20 2009 -0700

    Merge branch 'master' of /home/tridge/samba/git/combined

commit e71d9728f52e969e07927c5b38fa062c6ef6d1eb
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Sep 17 15:16:21 2009 -0700

    idl: regenerate IDL for NDR64 changes

commit 52f2e26a25cdccf66a3271d40279fdd75d1750da
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Sep 17 15:15:58 2009 -0700

    s4-sam: add a note about the solaris client

commit 4eedcf71eae8dd2b039771e8f7afae9e37b13496
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Sep 17 15:15:36 2009 -0700

    ndrdump: fixed help

commit 7b157a3d8a7cfcb573134fe7ab30603cfa5d9d1b
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Sep 17 15:15:24 2009 -0700

    ndr: num_auths is an array size, thus a uint3264

commit 1a1cb92583267dea07fa8b4580bf79c8907a7f88
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Sep 17 15:14:31 2009 -0700

    ndr: split out ndr enum functions
    
    This allows for easier implementation of the NDR32/NDR64 split

commit 85e06ff41d0ed58582fc540886f3e9e52ac85ca4
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Sep 17 09:59:50 2009 -0700

    idl: recompile our IDL
    
    The NDR64 change affects every IDL file

commit db5e7f3d053ecedd985be518f2080f4061ed06e5
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Sep 17 09:10:21 2009 -0700

    s4-pidl: add support for NDR64
    
    Added support for NDR64 to the samba4 pidl generator

commit c9b0b89cc06531cb57f89b9f98d33d6e0c300957
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Sep 17 09:09:48 2009 -0700

    s4-rpc: added NDR64 support
    
    This adds support for the nd464 binding string option

commit 056cbf7f816a6d01bc0ef3105eca43b4aeee9116
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Sep 17 09:08:47 2009 -0700

    ndr: added support for NDR64
    
    This adds NDR64 support for the push functions in libndr

commit 7326b8f63ebe55bdf662c6f7798cbeeb026b033a
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Sep 17 09:07:44 2009 -0700

    util: use likely/unlikely for NT_STATUS_* macros

commit 6dfd10f476e0b74c36f73bfe17a68ca309c4c5ac
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Sep 17 09:07:17 2009 -0700

    libreplace: added likely()/unlikely() macros for gcc
    
    These macros allow the compile to better optimise code that has a lot
    of if statements. I particularly want to use this for our low level
    generated NDR code.

commit 23676b6e9e8aad0ac2aa78d04e65f637b4551527
Merge: 7860817737158e5daa7596304dd9e35cb65ddcee 45cebf7f113c3ff3c1b029c591dbbbb879b992f8
Author: Andrew Tridgell <tridge at samba.org>
Date:   Wed Sep 16 03:58:21 2009 -0700

    Merge branch 'master' of /home/tridge/samba/git/combined

commit 7860817737158e5daa7596304dd9e35cb65ddcee
Merge: f391e64a82b8e6bf5862175d3ebd71ff8d4b08e8 c405d721c1a84bd2bdab2d56dd89e232cabe7955
Author: Andrew Tridgell <tridge at samba.org>
Date:   Wed Sep 16 03:58:13 2009 -0700

    Merge branch 'master' of /home/tridge/samba/git/combined

commit c405d721c1a84bd2bdab2d56dd89e232cabe7955
Author: Andrew Tridgell <tridge at samba.org>
Date:   Wed Sep 16 03:57:56 2009 -0700

    s4-repl: raise a debug level

commit 1b3f5cee2e72b8eb3df4836c237255ac7ad57136
Merge: 79082f400e3d0c21b53d54bfb42954c2396110b9 033ced60ac734161686bd3da685f2d7b056e17c8
Author: Andrew Tridgell <tridge at samba.org>
Date:   Wed Sep 16 03:57:09 2009 -0700

    Merge branch 'master' of ssh://git.samba.org/data/git/samba

commit f391e64a82b8e6bf5862175d3ebd71ff8d4b08e8
Merge: 72217950d3a6ff0fc50eeebab13d4c9e119e6ba6 79082f400e3d0c21b53d54bfb42954c2396110b9
Author: Andrew Tridgell <tridge at samba.org>
Date:   Wed Sep 16 03:56:07 2009 -0700

    Merge branch 'master' of /home/tridge/samba/git/combined

commit 79082f400e3d0c21b53d54bfb42954c2396110b9
Author: Andrew Tridgell <tridge at samba.org>
Date:   Wed Sep 16 03:43:37 2009 -0700

    s4-dsdb: treat uSNHighest as 0 if @REPLCHANGED doesn't exist
    
    When a partition is first created it still needs a uSNHighest value

commit 72217950d3a6ff0fc50eeebab13d4c9e119e6ba6
Merge: 9417aabe4b5f64001bffe2806f6527a31e87a25e 30d13288e5bb506584a0bf012d7b2e579a6a2074
Author: Andrew Tridgell <tridge at samba.org>
Date:   Tue Sep 15 20:51:30 2009 -0700

    Merge branch 'master' of /home/tridge/samba/git/combined

commit 9417aabe4b5f64001bffe2806f6527a31e87a25e
Merge: 7744283c36803836f698c12710e8c0ec8fbd8e93 5d2dfd12cf779c410e041a1815e5e3edf0ea38d8
Author: Andrew Tridgell <tridge at samba.org>
Date:   Tue Sep 15 19:53:05 2009 -0700

    Merge branch 'master' of /home/tridge/samba/git/combined

commit 7744283c36803836f698c12710e8c0ec8fbd8e93
Merge: a04caf329fefccad0fc272474025f6d23a4deaa2 10e25fc5e90e9eaabedc2f3477ac1e8947c88c77
Author: Andrew Tridgell <tridge at samba.org>
Date:   Tue Sep 15 18:46:18 2009 -0700

    Merge branch 'master' of /home/tridge/samba/git/combined

commit a04caf329fefccad0fc272474025f6d23a4deaa2
Merge: d581a56e209dbf6e67fc8644e0d84fadd593133e 7b3b66d7a22a4f2b460f979f4f489b09464f6946
Author: Andrew Tridgell <tridge at samba.org>
Date:   Tue Sep 15 14:53:02 2009 -0700

    Merge branch 'master' of /home/tridge/samba/git/combined

commit 7b3b66d7a22a4f2b460f979f4f489b09464f6946
Author: Andrew Tridgell <tridge at samba.org>
Date:   Tue Sep 15 14:07:43 2009 -0700

    s4-ldb: ldap attribute names can contain a '.'
    
    When they are of the form of OIDs

commit 08f144777d4fc8168d27e71fe107718ba99223c9
Author: Andrew Tridgell <tridge at samba.org>
Date:   Tue Sep 15 14:07:06 2009 -0700

    s4-ldb: expose ldb_transaction_prepare_commit() in ldb
    
    It is useful to be able to control the 2 phase commit from application
    code (s4 replication uses it)

commit bfd0877261883d1d6ef1d1757dad386332a8db37
Author: Andrew Tridgell <tridge at samba.org>
Date:   Tue Sep 15 14:06:07 2009 -0700

    s4-repl: don't do double replication
    
    When we replicate from a remote DC, we need to note the new uSN that
    the local changes have resulted in, and modify the uSN that the notify
    task uses to determine if it should send a ReplicaSync message back to
    the remote DC. Otherwise we end up always triggering a ReplicaSync
    every time we replicate from another DC

commit f5aec9ebb4bf5d0e6f8c6974a485bc5cd2899fdd
Author: Andrew Tridgell <tridge at samba.org>
Date:   Tue Sep 15 14:04:22 2009 -0700

    tdb: allow reads after prepare commit
    
    We previously only allowed a commit to happen after a prepare
    commit. It is in fact safe to allow reads between a prepare and a
    commit, and the s4 replication code can make use of that, so allow it.

commit 48bc784e089fabf5f3f5a4e4d4ff47ce97ece74b
Author: Andrew Tridgell <tridge at samba.org>
Date:   Tue Sep 15 11:47:42 2009 -0700

    s4-drs: filter based on local_usn
    
    The getncchanges uSN is in our local space, so we must compare it to
    the local_usn in replPropertyMetaData

commit 7f3817ab77ce85ab19c2c582eca0df84c36466dc
Author: Andrew Tridgell <tridge at samba.org>
Date:   Tue Sep 15 11:46:59 2009 -0700

    s4-repl: make sure we marshal the replPropertyMetaData after the last change
    
    we were setting local_usn after the marshall, so it wasn't going into
    the object

commit e1abb39388a154b405583bd55eb4bb9c8cfa13fe
Author: Andrew Tridgell <tridge at samba.org>
Date:   Tue Sep 15 10:01:26 2009 -0700

    s4-dsdb: use DLIST_ADD() not DLIST_ADD_END()
    
    Using DLIST_ADD_END() to construct a long list is very inefficient (it
    is O(n^2). These lists are not ordered, so using DLIST_ADD() is much
    better.

commit 4861194f39bf826f3405452adc172cf5c240715b
Author: Andrew Tridgell <tridge at samba.org>
Date:   Tue Sep 15 10:00:24 2009 -0700

    s4-ldb: cope better with corruption of tdb records
    
    When doing an indexed search if we hit a corrupt record we abandoned
    the indexed search and did a full search. The problem was that we
    might have sent some records to the caller already, which means the
    caller ended up with duplicate records. Fix this by returning a search
    error if indexing returns an error and we have given any records to
    the caller.

commit 6a9c89b3aef02310030ff436cd545eef77b8d1ee
Author: Andrew Tridgell <tridge at samba.org>
Date:   Tue Sep 15 09:43:27 2009 -0700

    talloc: when we enable NULL tracking, reparent the autofree context
    
    If NULL tracking is enabled after the autofree context is initialised
    then autofree ends up separate from the null_context. This means that
    talloc_report_full() doesn't report the autofree context. Fix this by
    reparenting the autofree context when we create the null_context.

commit 451a537caa2207bb5e0a8818326a5f164c0d559a
Author: Andrew Tridgell <tridge at samba.org>
Date:   Tue Sep 15 09:23:14 2009 -0700

    s4-repl: add a debug to make it easier to monitor replication

commit d581a56e209dbf6e67fc8644e0d84fadd593133e
Merge: f9c308664833ccba957050ac8a27c5e8a1b44e83 858cddf86d870305b106148f15768856739b74d5
Author: Andrew Tridgell <tridge at samba.org>
Date:   Tue Sep 15 14:42:46 2009 -0700

    Merge branch 'master' of /home/tridge/samba/git/combined

commit 858cddf86d870305b106148f15768856739b74d5
Author: Andrew Tridgell <tridge at samba.org>
Date:   Tue Sep 15 14:42:26 2009 -0700

    s4-libnet: use updated dsdb commit function

commit f9c308664833ccba957050ac8a27c5e8a1b44e83
Merge: dac0fb0b7c369255e0d07e47a11f6a0288019da1 f2b5b5bb17910c8a2b709fd62e214c96da3fdd2d
Author: Andrew Tridgell <tridge at samba.org>
Date:   Tue Sep 15 14:08:21 2009 -0700

    Merge branch 'master' of /home/tridge/samba/git/combined

commit f2b5b5bb17910c8a2b709fd62e214c96da3fdd2d
Author: Andrew Tridgell <tridge at samba.org>
Date:   Tue Sep 15 14:07:43 2009 -0700

    s4-ldb: ldap attribute names can contain a '.'
    
    When they are of the form of OIDs

commit a99e216a47259ca2c2837b1ea95c995c5e5a4968
Author: Andrew Tridgell <tridge at samba.org>
Date:   Tue Sep 15 14:07:06 2009 -0700

    s4-ldb: expose ldb_transaction_prepare_commit() in ldb
    
    It is useful to be able to control the 2 phase commit from application
    code (s4 replication uses it)

commit 80c4b1e43e67249996cea61cc761911ff9fecbde
Author: Andrew Tridgell <tridge at samba.org>
Date:   Tue Sep 15 14:06:07 2009 -0700

    s4-repl: don't do double replication
    
    When we replicate from a remote DC, we need to note the new uSN that
    the local changes have resulted in, and modify the uSN that the notify
    task uses to determine if it should send a ReplicaSync message back to
    the remote DC. Otherwise we end up always triggering a ReplicaSync
    every time we replicate from another DC

commit 46c99ec2a3781d53138245182345c6c2ddd9a258
Author: Andrew Tridgell <tridge at samba.org>
Date:   Tue Sep 15 14:04:22 2009 -0700

    tdb: allow reads after prepare commit
    
    We previously only allowed a commit to happen after a prepare
    commit. It is in fact safe to allow reads between a prepare and a
    commit, and the s4 replication code can make use of that, so allow it.

commit dac0fb0b7c369255e0d07e47a11f6a0288019da1
Merge: efe9f952504a5a3114cada5f0caed315c4bc654d e44c4141fdfa07bb3bd09f28e5f093d27f170dc8
Author: Andrew Tridgell <tridge at samba.org>
Date:   Tue Sep 15 11:48:23 2009 -0700

    Merge branch 'master' of /home/tridge/samba/git/combined

commit e44c4141fdfa07bb3bd09f28e5f093d27f170dc8
Author: Andrew Tridgell <tridge at samba.org>
Date:   Tue Sep 15 11:47:42 2009 -0700

    s4-drs: filter based on local_usn
    
    The getncchanges uSN is in our local space, so we must compare it to
    the local_usn in replPropertyMetaData

commit ae28e2f085cf92bd2b813d97288ac91970c707d7
Author: Andrew Tridgell <tridge at samba.org>
Date:   Tue Sep 15 11:46:59 2009 -0700

    s4-repl: make sure we marshal the replPropertyMetaData after the last change
    
    we were setting local_usn after the marshall, so it wasn't going into
    the object

commit f1ce4f994523cde775210e06dd7e36c6715b352b
Author: Andrew Tridgell <tridge at samba.org>
Date:   Tue Sep 15 10:01:26 2009 -0700

    s4-dsdb: use DLIST_ADD() not DLIST_ADD_END()
    
    Using DLIST_ADD_END() to construct a long list is very inefficient (it
    is O(n^2). These lists are not ordered, so using DLIST_ADD() is much
    better.

commit af1e7e1c51d1ae60f52dd2d1a71ca33c90aa5b6e
Author: Andrew Tridgell <tridge at samba.org>
Date:   Tue Sep 15 10:00:24 2009 -0700

    s4-ldb: cope better with corruption of tdb records
    
    When doing an indexed search if we hit a corrupt record we abandoned
    the indexed search and did a full search. The problem was that we
    might have sent some records to the caller already, which means the
    caller ended up with duplicate records. Fix this by returning a search
    error if indexing returns an error and we have given any records to
    the caller.

commit 2e7841ff51107b0ccb65f19ea4c53d5a42cefb45
Author: Andrew Tridgell <tridge at samba.org>
Date:   Tue Sep 15 09:43:27 2009 -0700

    talloc: when we enable NULL tracking, reparent the autofree context
    
    If NULL tracking is enabled after the autofree context is initialised
    then autofree ends up separate from the null_context. This means that
    talloc_report_full() doesn't report the autofree context. Fix this by
    reparenting the autofree context when we create the null_context.

commit f0104bee8e95c87cae9089046a70144b63805f9f
Author: Andrew Tridgell <tridge at samba.org>
Date:   Tue Sep 15 09:23:14 2009 -0700

    s4-repl: add a debug to make it easier to monitor replication

commit efe9f952504a5a3114cada5f0caed315c4bc654d
Merge: 5464ce6df678a6ce3022f4a30fd9553996cefb69 8fa5e567e76d4edb818d4cd88886918470d78ad1
Author: Andrew Tridgell <tridge at samba.org>
Date:   Tue Sep 15 10:02:04 2009 -0700

    Merge branch 'master' of /home/tridge/samba/git/combined

commit 8fa5e567e76d4edb818d4cd88886918470d78ad1
Author: Andrew Tridgell <tridge at samba.org>
Date:   Tue Sep 15 10:01:26 2009 -0700

    s4-dsdb: use DLIST_ADD() not DLIST_ADD_END()
    
    Using DLIST_ADD_END() to construct a long list is very inefficient (it
    is O(n^2). These lists are not ordered, so using DLIST_ADD() is much
    better.

commit 62dd3aadd7ee9a8abbdd42caaa140105b1b1e8d9
Author: Andrew Tridgell <tridge at samba.org>
Date:   Tue Sep 15 10:00:24 2009 -0700

    s4-ldb: cope better with corruption of tdb records
    
    When doing an indexed search if we hit a corrupt record we abandoned
    the indexed search and did a full search. The problem was that we
    might have sent some records to the caller already, which means the
    caller ended up with duplicate records. Fix this by returning a search
    error if indexing returns an error and we have given any records to
    the caller.

commit 209c278f1fdb315ebf6c83e164e518cc6737480e
Author: Andrew Tridgell <tridge at samba.org>
Date:   Tue Sep 15 09:43:27 2009 -0700

    talloc: when we enable NULL tracking, reparent the autofree context
    
    If NULL tracking is enabled after the autofree context is initialised
    then autofree ends up separate from the null_context. This means that
    talloc_report_full() doesn't report the autofree context. Fix this by
    reparenting the autofree context when we create the null_context.

commit 865e65a163145b0aee724210744955af96d618b8
Author: Andrew Tridgell <tridge at samba.org>
Date:   Tue Sep 15 09:23:14 2009 -0700

    s4-repl: add a debug to make it easier to monitor replication

commit 5464ce6df678a6ce3022f4a30fd9553996cefb69
Merge: 72fcc6344f1ddfece4dd41790fc1add9c6d2c0f7 3dd404abad878fa7e760ba50ce84fc80b82ea159
Author: Andrew Tridgell <tridge at samba.org>
Date:   Mon Sep 14 13:24:07 2009 -0700

    Merge branch 'master' of /home/tridge/samba/git/combined

commit 72fcc6344f1ddfece4dd41790fc1add9c6d2c0f7
Merge: 766774feaea925dd2fdffbfdc55ced66962564b8 0be268bf5538dcf57f9534d864be1960dfab0f72
Author: Andrew Tridgell <tridge at samba.org>
Date:   Sat Sep 12 18:42:37 2009 +1000

    Merge branch 'master' of /home/tridge/samba/git/combined

commit 766774feaea925dd2fdffbfdc55ced66962564b8
Merge: 7bdae8bfba862a67720d53dcffbf77f6b93ceeb4 5c0cf012a746228aa17524e5e153b833028f284b
Author: Andrew Tridgell <tridge at samba.org>
Date:   Sat Sep 12 15:24:57 2009 +1000

    Merge branch 'master' of /home/tridge/samba/git/combined

commit 7bdae8bfba862a67720d53dcffbf77f6b93ceeb4
Merge: fe36b8af64195f10acead12d4a4f426cc8772a8c a8ab1e2570ac2a2e772295cd0cc46b7e60398043
Author: Andrew Tridgell <tridge at samba.org>
Date:   Sat Sep 12 13:19:53 2009 +1000

    Merge branch 'master' of /home/tridge/samba/git/combined

commit fe36b8af64195f10acead12d4a4f426cc8772a8c
Merge: 51fd80647de9cb531181eb1eeefe9ad2c473f784 bbc0a56da59df8b7cd6f19f99cfaac9c3909779f
Author: Andrew Tridgell <tridge at samba.org>
Date:   Sat Sep 12 11:15:38 2009 +1000

    Merge branch 'master' of /home/tridge/samba/git/combined

commit 51fd80647de9cb531181eb1eeefe9ad2c473f784
Merge: f84be6cd636e0ccb8e146a6d5dbf0f665fea4263 21a6ba41150a133d3207928a8b4c7b1d6c1e411f
Author: Andrew Tridgell <tridge at samba.org>
Date:   Sat Sep 12 11:15:08 2009 +1000

    Merge branch 'master' of /home/tridge/samba/git/combined

commit 21a6ba41150a133d3207928a8b4c7b1d6c1e411f
Author: Andrew Tridgell <tridge at samba.org>
Date:   Sat Sep 12 11:14:29 2009 +1000

    s4-drs: fixed the cursor generation to always be filled in
    
    We were relying on the uSNChanged>=n search always finding the DN of
    the root of the partition, but this now doesn't happen very often as
    we are now restricting when we change uSNChanged. This means we need
    to always load the replUpToDateVector attribute from the NC root and
    use it to populate the cursors in the return.

commit 47a147ee284ba822f2a35e1ff173955407d71fc4
Author: Andrew Tridgell <tridge at samba.org>
Date:   Sat Sep 12 11:12:05 2009 +1000

    s4-repl: use common functions to simplify updaterefs.c
    
    We now have dsdb_loadreps() and dsdb_savereps()

commit f4b37f193b9c9e594734476d21ac57de43dd4631
Author: Andrew Tridgell <tridge at samba.org>
Date:   Sat Sep 12 11:10:19 2009 +1000

    s4-repl: we should only update uSNChanged when replication data changes
    
    When changing non-replicated attributes we should not update the
    uSNChanged attribute on the record, otherwise the DRS server will
    think this record needs replicating.

commit 4687db00a8b3658ad87a824525bf1dc24f9fd1c7
Author: Andrew Tridgell <tridge at samba.org>
Date:   Sat Sep 12 11:09:10 2009 +1000

    s4-kcc: we should only add to the repsFrom if it doesn't already exist
    
    If we already have a repsFrom for a particular DC and naming context
    then we should not overwrite it, as it contains info on what
    replication we've already done

commit 96be1f4ef31fdfa463e916177706bbe4437e4166
Author: Anatoliy Atanasov <anatoliy.atanasov at postpath.com>
Date:   Thu Sep 10 12:41:48 2009 +0300

    Fix up-to-dateness vector creation.

commit f84be6cd636e0ccb8e146a6d5dbf0f665fea4263
Merge: 8e48434b9f5140b663c3ca7cb3439b430abf3aac 9da49338043dedbf17c99ceed24c2934514d0157
Author: Andrew Tridgell <tridge at samba.org>
Date:   Fri Sep 11 23:27:52 2009 +1000

    Merge branch 'master' of /home/tridge/samba/git/combined

commit 8e48434b9f5140b663c3ca7cb3439b430abf3aac
Merge: 668fd97e53d6853345604a7c0472a9bcfd5d2b9b bca75ecf9797df98a998eeb0b978cd2fe71ed2cb
Author: Andrew Tridgell <tridge at samba.org>
Date:   Fri Sep 11 22:36:16 2009 +1000

    Merge branch 'master' of /home/tridge/samba/git/combined

commit 668fd97e53d6853345604a7c0472a9bcfd5d2b9b
Merge: 0d6bc14225d910150dc9949b35e587aafe9922c7 61facf426691cc896ec61fde1c4cb7d947adb07b
Author: Andrew Tridgell <tridge at samba.org>
Date:   Fri Sep 11 22:14:33 2009 +1000

    Merge branch 'master' of /home/tridge/samba/git/combined

commit 0d6bc14225d910150dc9949b35e587aafe9922c7
Author: Andrew Tridgell <tridge at samba.org>
Date:   Fri Sep 11 21:46:58 2009 +1000

    s4-kcc: add a very simple KCC
    
    A KCC is a 'Knowledge Consistency Checker', a fancy name for a daemon
    that works out who will replicate with who in a AD domain. This
    implements an extremely simple KCC task that just wants to replicate
    with everyone :-)

commit 81474df7858273024ae4e214dc339b0754c71048
Author: Andrew Tridgell <tridge at samba.org>
Date:   Fri Sep 11 21:45:35 2009 +1000

    s4-repl: don't update replPropertyMetaData for non-replicated attributes
    
    thanks to Metze for spotting this

commit 2eb61efd1f050696a7835cfc5c7af96bbcb9708e
Merge: bae320e2aac91839fd2c331e1ad719cb1b4de599 f74e8c266f43d0c640ab8068d28a1b197164d548
Author: Andrew Tridgell <tridge at samba.org>
Date:   Fri Sep 11 21:44:02 2009 +1000

    Merge branch 'master' of ssh://git.samba.org/data/git/samba

commit bae320e2aac91839fd2c331e1ad719cb1b4de599
Author: Andrew Tridgell <tridge at samba.org>
Date:   Fri Sep 11 20:14:11 2009 +1000

    s4-idl: added the IDL for the DsReplica* calls

-----------------------------------------------------------------------

Summary of changes:
 source4/cldap_server/cldap_server.c   |   14 +++++----
 source4/dsdb/kcc/kcc_periodic.c       |    2 +-
 source4/dsdb/kcc/kcc_service.c        |   19 +++++++------
 source4/dsdb/repl/drepl_notify.c      |    2 +-
 source4/dsdb/repl/drepl_periodic.c    |    2 +-
 source4/dsdb/repl/drepl_service.c     |   18 +++++++-----
 source4/kdc/hdb-samba4.c              |    6 ++++
 source4/kdc/kdc.c                     |   28 ++++++++++----------
 source4/ldap_server/ldap_server.c     |   10 ++++---
 source4/lib/messaging/irpc.h          |    1 +
 source4/lib/messaging/messaging.h     |    3 ++
 source4/librpc/idl/irpc.idl           |    7 +++++
 source4/nbt_server/irpc.c             |    8 +++---
 source4/nbt_server/nbt_server.c       |   10 +++---
 source4/ntp_signd/ntp_signd.c         |    6 ++--
 source4/ntvfs/ipc/vfs_ipc.c           |   19 +++++++++++++
 source4/rpc_server/service_rpc.c      |    2 +-
 source4/smb_server/smb_samba3.c       |    2 +-
 source4/smb_server/smb_server.c       |    2 +-
 source4/smbd/process_single.c         |    4 ++-
 source4/smbd/server.c                 |   46 +++++++++++++++++++++++++++++++++
 source4/smbd/service_named_pipe.c     |    2 +
 source4/smbd/service_task.c           |   18 +++++++++++-
 source4/web_server/web_server.c       |    2 +-
 source4/winbind/wb_server.c           |   16 +++++-----
 source4/wrepl_server/wrepl_periodic.c |    2 +-
 source4/wrepl_server/wrepl_server.c   |   10 +++---
 27 files changed, 184 insertions(+), 77 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source4/cldap_server/cldap_server.c b/source4/cldap_server/cldap_server.c
index 1a08cd2..ee8c76e 100644
--- a/source4/cldap_server/cldap_server.c
+++ b/source4/cldap_server/cldap_server.c
@@ -187,16 +187,18 @@ static void cldapd_task_init(struct task_server *task)
 	load_interfaces(task, lp_interfaces(task->lp_ctx), &ifaces);
 
 	if (iface_count(ifaces) == 0) {
-		task_server_terminate(task, "cldapd: no network interfaces configured");
+		task_server_terminate(task, "cldapd: no network interfaces configured", false);
 		return;
 	}
 
 	switch (lp_server_role(task->lp_ctx)) {
 	case ROLE_STANDALONE:
-		task_server_terminate(task, "cldap_server: no CLDAP server required in standalone configuration");
+		task_server_terminate(task, "cldap_server: no CLDAP server required in standalone configuration", 
+				      false);
 		return;
 	case ROLE_DOMAIN_MEMBER:
-		task_server_terminate(task, "cldap_server: no CLDAP server required in member server configuration");
+		task_server_terminate(task, "cldap_server: no CLDAP server required in member server configuration",
+				      false);
 		return;
 	case ROLE_DOMAIN_CONTROLLER:
 		/* Yes, we want an CLDAP server */
@@ -207,21 +209,21 @@ static void cldapd_task_init(struct task_server *task)
 
 	cldapd = talloc(task, struct cldapd_server);
 	if (cldapd == NULL) {
-		task_server_terminate(task, "cldapd: out of memory");
+		task_server_terminate(task, "cldapd: out of memory", true);
 		return;
 	}
 
 	cldapd->task = task;
 	cldapd->samctx = samdb_connect(cldapd, task->event_ctx, task->lp_ctx, system_session(cldapd, task->lp_ctx));
 	if (cldapd->samctx == NULL) {
-		task_server_terminate(task, "cldapd failed to open samdb");
+		task_server_terminate(task, "cldapd failed to open samdb", true);
 		return;
 	}
 
 	/* start listening on the configured network interfaces */
 	status = cldapd_startup_interfaces(cldapd, task->lp_ctx, ifaces);
 	if (!NT_STATUS_IS_OK(status)) {
-		task_server_terminate(task, "cldapd failed to setup interfaces");
+		task_server_terminate(task, "cldapd failed to setup interfaces", true);
 		return;
 	}
 
diff --git a/source4/dsdb/kcc/kcc_periodic.c b/source4/dsdb/kcc/kcc_periodic.c
index 3af79d8..dae0c1e 100644
--- a/source4/dsdb/kcc/kcc_periodic.c
+++ b/source4/dsdb/kcc/kcc_periodic.c
@@ -172,7 +172,7 @@ static void kccsrv_periodic_handler_te(struct tevent_context *ev, struct tevent_
 
 	status = kccsrv_periodic_schedule(service, service->periodic.interval);
 	if (!W_ERROR_IS_OK(status)) {
-		task_server_terminate(service->task, win_errstr(status));
+		task_server_terminate(service->task, win_errstr(status), true);
 		return;
 	}
 }
diff --git a/source4/dsdb/kcc/kcc_service.c b/source4/dsdb/kcc/kcc_service.c
index 2279879..32e09ac 100644
--- a/source4/dsdb/kcc/kcc_service.c
+++ b/source4/dsdb/kcc/kcc_service.c
@@ -151,10 +151,10 @@ static void kccsrv_task_init(struct task_server *task)
 
 	switch (lp_server_role(task->lp_ctx)) {
 	case ROLE_STANDALONE:
-		task_server_terminate(task, "kccsrv: no KCC required in standalone configuration");
+		task_server_terminate(task, "kccsrv: no KCC required in standalone configuration", false);
 		return;
 	case ROLE_DOMAIN_MEMBER:
-		task_server_terminate(task, "kccsrv: no KCC required in domain member configuration");
+		task_server_terminate(task, "kccsrv: no KCC required in domain member configuration", false);
 		return;
 	case ROLE_DOMAIN_CONTROLLER:
 		/* Yes, we want a KCC */
@@ -165,7 +165,7 @@ static void kccsrv_task_init(struct task_server *task)
 
 	service = talloc_zero(task, struct kccsrv_service);
 	if (!service) {
-		task_server_terminate(task, "kccsrv_task_init: out of memory");
+		task_server_terminate(task, "kccsrv_task_init: out of memory", true);
 		return;
 	}
 	service->task		= task;
@@ -174,9 +174,10 @@ static void kccsrv_task_init(struct task_server *task)
 
 	status = kccsrv_init_creds(service);
 	if (!W_ERROR_IS_OK(status)) {
-		task_server_terminate(task, talloc_asprintf(task,
-				      "kccsrv: Failed to obtain server credentials: %s\n",
-				      win_errstr(status)));
+		task_server_terminate(task, 
+				      talloc_asprintf(task,
+						      "kccsrv: Failed to obtain server credentials: %s\n",
+						      win_errstr(status)), true);
 		return;
 	}
 
@@ -184,7 +185,7 @@ static void kccsrv_task_init(struct task_server *task)
 	if (!W_ERROR_IS_OK(status)) {
 		task_server_terminate(task, talloc_asprintf(task,
 				      "kccsrv: Failed to connect to local samdb: %s\n",
-				      win_errstr(status)));
+							    win_errstr(status)), true);
 		return;
 	}
 
@@ -192,7 +193,7 @@ static void kccsrv_task_init(struct task_server *task)
 	if (!W_ERROR_IS_OK(status)) {
 		task_server_terminate(task, talloc_asprintf(task,
 				      "kccsrv: Failed to load partitions: %s\n",
-				      win_errstr(status)));
+							    win_errstr(status)), true);
 		return;
 	}
 
@@ -205,7 +206,7 @@ static void kccsrv_task_init(struct task_server *task)
 	if (!W_ERROR_IS_OK(status)) {
 		task_server_terminate(task, talloc_asprintf(task,
 				      "kccsrv: Failed to periodic schedule: %s\n",
-				      win_errstr(status)));
+							    win_errstr(status)), true);
 		return;
 	}
 
diff --git a/source4/dsdb/repl/drepl_notify.c b/source4/dsdb/repl/drepl_notify.c
index 7328091..d354b4e 100644
--- a/source4/dsdb/repl/drepl_notify.c
+++ b/source4/dsdb/repl/drepl_notify.c
@@ -368,7 +368,7 @@ static void dreplsrv_notify_handler_te(struct tevent_context *ev, struct tevent_
 
 	status = dreplsrv_notify_schedule(service, service->notify.interval);
 	if (!W_ERROR_IS_OK(status)) {
-		task_server_terminate(service->task, win_errstr(status));
+		task_server_terminate(service->task, win_errstr(status), false);
 		return;
 	}
 }
diff --git a/source4/dsdb/repl/drepl_periodic.c b/source4/dsdb/repl/drepl_periodic.c
index 377cecb..61d5598 100644
--- a/source4/dsdb/repl/drepl_periodic.c
+++ b/source4/dsdb/repl/drepl_periodic.c
@@ -46,7 +46,7 @@ static void dreplsrv_periodic_handler_te(struct tevent_context *ev, struct teven
 
 	status = dreplsrv_periodic_schedule(service, service->periodic.interval);
 	if (!W_ERROR_IS_OK(status)) {
-		task_server_terminate(service->task, win_errstr(status));
+		task_server_terminate(service->task, win_errstr(status), false);
 		return;
 	}
 }
diff --git a/source4/dsdb/repl/drepl_service.c b/source4/dsdb/repl/drepl_service.c
index 75ce42b..34853c8 100644
--- a/source4/dsdb/repl/drepl_service.c
+++ b/source4/dsdb/repl/drepl_service.c
@@ -138,10 +138,12 @@ static void dreplsrv_task_init(struct task_server *task)
 
 	switch (lp_server_role(task->lp_ctx)) {
 	case ROLE_STANDALONE:
-		task_server_terminate(task, "dreplsrv: no DSDB replication required in standalone configuration");
+		task_server_terminate(task, "dreplsrv: no DSDB replication required in standalone configuration", 
+				      false);
 		return;
 	case ROLE_DOMAIN_MEMBER:
-		task_server_terminate(task, "dreplsrv: no DSDB replication required in domain member configuration");
+		task_server_terminate(task, "dreplsrv: no DSDB replication required in domain member configuration", 
+				      false);
 		return;
 	case ROLE_DOMAIN_CONTROLLER:
 		/* Yes, we want DSDB replication */
@@ -152,7 +154,7 @@ static void dreplsrv_task_init(struct task_server *task)
 
 	service = talloc_zero(task, struct dreplsrv_service);
 	if (!service) {
-		task_server_terminate(task, "dreplsrv_task_init: out of memory");
+		task_server_terminate(task, "dreplsrv_task_init: out of memory", true);
 		return;
 	}
 	service->task		= task;
@@ -163,7 +165,7 @@ static void dreplsrv_task_init(struct task_server *task)
 	if (!W_ERROR_IS_OK(status)) {
 		task_server_terminate(task, talloc_asprintf(task,
 				      "dreplsrv: Failed to obtain server credentials: %s\n",
-				      win_errstr(status)));
+							    win_errstr(status)), true);
 		return;
 	}
 
@@ -171,7 +173,7 @@ static void dreplsrv_task_init(struct task_server *task)
 	if (!W_ERROR_IS_OK(status)) {
 		task_server_terminate(task, talloc_asprintf(task,
 				      "dreplsrv: Failed to connect to local samdb: %s\n",
-				      win_errstr(status)));
+							    win_errstr(status)), true);
 		return;
 	}
 
@@ -179,7 +181,7 @@ static void dreplsrv_task_init(struct task_server *task)
 	if (!W_ERROR_IS_OK(status)) {
 		task_server_terminate(task, talloc_asprintf(task,
 				      "dreplsrv: Failed to load partitions: %s\n",
-				      win_errstr(status)));
+							    win_errstr(status)), true);
 		return;
 	}
 
@@ -190,7 +192,7 @@ static void dreplsrv_task_init(struct task_server *task)
 	if (!W_ERROR_IS_OK(status)) {
 		task_server_terminate(task, talloc_asprintf(task,
 				      "dreplsrv: Failed to periodic schedule: %s\n",
-				      win_errstr(status)));
+							    win_errstr(status)), true);
 		return;
 	}
 
@@ -200,7 +202,7 @@ static void dreplsrv_task_init(struct task_server *task)
 	if (!W_ERROR_IS_OK(status)) {
 		task_server_terminate(task, talloc_asprintf(task,
 				      "dreplsrv: Failed to setup notify schedule: %s\n",
-				      win_errstr(status)));
+							    win_errstr(status)), true);
 		return;
 	}
 
diff --git a/source4/kdc/hdb-samba4.c b/source4/kdc/hdb-samba4.c
index 502b4e0..4062e13 100644
--- a/source4/kdc/hdb-samba4.c
+++ b/source4/kdc/hdb-samba4.c
@@ -395,6 +395,12 @@ static krb5_error_code hdb_samba4_message2entry_keys(krb5_context context,
 						 pkb4->keys[i].value->data,
 						 pkb4->keys[i].value->length,
 						 &key.key);
+			if (ret == KRB5_PROG_ETYPE_NOSUPP) {
+				DEBUG(2,("Unsupported keytype ignored - type %u\n",
+					 pkb4->keys[i].keytype));
+				ret = 0;
+				continue;
+			}
 			if (ret) {
 				if (key.salt) {
 					free_Salt(key.salt);
diff --git a/source4/kdc/kdc.c b/source4/kdc/kdc.c
index c861f7a..a67aa09 100644
--- a/source4/kdc/kdc.c
+++ b/source4/kdc/kdc.c
@@ -662,10 +662,10 @@ static void kdc_task_init(struct task_server *task)
 
 	switch (lp_server_role(task->lp_ctx)) {
 	case ROLE_STANDALONE:
-		task_server_terminate(task, "kdc: no KDC required in standalone configuration");
+		task_server_terminate(task, "kdc: no KDC required in standalone configuration", false);
 		return;
 	case ROLE_DOMAIN_MEMBER:
-		task_server_terminate(task, "kdc: no KDC required in member server configuration");
+		task_server_terminate(task, "kdc: no KDC required in member server configuration", false);
 		return;
 	case ROLE_DOMAIN_CONTROLLER:
 		/* Yes, we want a KDC */
@@ -675,7 +675,7 @@ static void kdc_task_init(struct task_server *task)
 	load_interfaces(task, lp_interfaces(task->lp_ctx), &ifaces);
 
 	if (iface_count(ifaces) == 0) {
-		task_server_terminate(task, "kdc: no network interfaces configured");
+		task_server_terminate(task, "kdc: no network interfaces configured", false);
 		return;
 	}
 
@@ -683,7 +683,7 @@ static void kdc_task_init(struct task_server *task)
 
 	kdc = talloc(task, struct kdc_server);
 	if (kdc == NULL) {
-		task_server_terminate(task, "kdc: out of memory");
+		task_server_terminate(task, "kdc: out of memory", true);
 		return;
 	}
 
@@ -695,7 +695,7 @@ static void kdc_task_init(struct task_server *task)
 	if (ret) {
 		DEBUG(1,("kdc_task_init: krb5_init_context failed (%s)\n", 
 			 error_message(ret)));
-		task_server_terminate(task, "kdc: krb5_init_context failed");
+		task_server_terminate(task, "kdc: krb5_init_context failed", true);
 		return; 
 	}
 
@@ -704,14 +704,14 @@ static void kdc_task_init(struct task_server *task)
 	ret = krb5_kdc_get_config(kdc->smb_krb5_context->krb5_context, 
 				  &kdc->config);
 	if(ret) {
-		task_server_terminate(task, "kdc: failed to get KDC configuration");
+		task_server_terminate(task, "kdc: failed to get KDC configuration", true);
 		return;
 	}
  
 	kdc->config->logf = kdc->smb_krb5_context->logf;
 	kdc->config->db = talloc(kdc, struct HDB *);
 	if (!kdc->config->db) {
-		task_server_terminate(task, "kdc: out of memory");
+		task_server_terminate(task, "kdc: out of memory", true);
 		return;
 	}
 	kdc->config->num_db = 1;
@@ -720,7 +720,7 @@ static void kdc_task_init(struct task_server *task)
 				       kdc->smb_krb5_context->krb5_context, 
 				       &kdc->config->db[0]);
 	if (!NT_STATUS_IS_OK(status)) {
-		task_server_terminate(task, "kdc: hdb_samba4_create_kdc (setup KDC database) failed");
+		task_server_terminate(task, "kdc: hdb_samba4_create_kdc (setup KDC database) failed", true);
 		return; 
 	}
 
@@ -728,7 +728,7 @@ static void kdc_task_init(struct task_server *task)
 
 	kdc->hdb_samba4_context = talloc(kdc, struct hdb_samba4_context);
 	if (!kdc->hdb_samba4_context) {
-		task_server_terminate(task, "kdc: out of memory");
+		task_server_terminate(task, "kdc: out of memory", true);
 		return; 
 	}
 
@@ -739,13 +739,13 @@ static void kdc_task_init(struct task_server *task)
 				   PLUGIN_TYPE_DATA, "hdb",
 				   &hdb_samba4);
 	if(ret) {
-		task_server_terminate(task, "kdc: failed to register hdb keytab");
+		task_server_terminate(task, "kdc: failed to register hdb keytab", true);
 		return;
 	}
 
 	ret = krb5_kt_register(kdc->smb_krb5_context->krb5_context, &hdb_kt_ops);
 	if(ret) {
-		task_server_terminate(task, "kdc: failed to register hdb keytab");
+		task_server_terminate(task, "kdc: failed to register hdb keytab", true);
 		return;
 	}
 
@@ -754,7 +754,7 @@ static void kdc_task_init(struct task_server *task)
 				   PLUGIN_TYPE_DATA, "windc",
 				   &windc_plugin_table);
 	if(ret) {
-		task_server_terminate(task, "kdc: failed to register hdb keytab");
+		task_server_terminate(task, "kdc: failed to register hdb keytab", true);
 		return;
 	}
 
@@ -763,14 +763,14 @@ static void kdc_task_init(struct task_server *task)
 	/* start listening on the configured network interfaces */
 	status = kdc_startup_interfaces(kdc, task->lp_ctx, ifaces);
 	if (!NT_STATUS_IS_OK(status)) {
-		task_server_terminate(task, "kdc failed to setup interfaces");
+		task_server_terminate(task, "kdc failed to setup interfaces", true);
 		return;
 	}
 
 	status = IRPC_REGISTER(task->msg_ctx, irpc, KDC_CHECK_GENERIC_KERBEROS, 
 			       kdc_check_generic_kerberos, kdc);
 	if (!NT_STATUS_IS_OK(status)) {
-		task_server_terminate(task, "nbtd failed to setup monitoring");
+		task_server_terminate(task, "nbtd failed to setup monitoring", true);
 		return;
 	}
 
diff --git a/source4/ldap_server/ldap_server.c b/source4/ldap_server/ldap_server.c
index b119620..3440158 100644
--- a/source4/ldap_server/ldap_server.c
+++ b/source4/ldap_server/ldap_server.c
@@ -568,10 +568,12 @@ static void ldapsrv_task_init(struct task_server *task)
 
 	switch (lp_server_role(task->lp_ctx)) {
 	case ROLE_STANDALONE:
-		task_server_terminate(task, "ldap_server: no LDAP server required in standalone configuration");
+		task_server_terminate(task, "ldap_server: no LDAP server required in standalone configuration", 
+				      false);
 		return;
 	case ROLE_DOMAIN_MEMBER:
-		task_server_terminate(task, "ldap_server: no LDAP server required in member server configuration");
+		task_server_terminate(task, "ldap_server: no LDAP server required in member server configuration", 
+				      false);
 		return;
 	case ROLE_DOMAIN_CONTROLLER:
 		/* Yes, we want an LDAP server */
@@ -642,7 +644,7 @@ static void ldapsrv_task_init(struct task_server *task)
 	 */
 	if (!directory_create_or_exist(priv_dir, geteuid(), 0750)) {
 		task_server_terminate(task, "Cannot create ldap "
-				      "privileged ldapi directory");
+				      "privileged ldapi directory", true);
 		return;
 	}
 	ldapi_path = talloc_asprintf(ldap_service, "%s/ldapi", priv_dir);
@@ -666,7 +668,7 @@ static void ldapsrv_task_init(struct task_server *task)
 	return;
 
 failed:
-	task_server_terminate(task, "Failed to startup ldap server task");	
+	task_server_terminate(task, "Failed to startup ldap server task", true);
 }
 
 
diff --git a/source4/lib/messaging/irpc.h b/source4/lib/messaging/irpc.h
index 3c51882..c82ad39 100644
--- a/source4/lib/messaging/irpc.h
+++ b/source4/lib/messaging/irpc.h
@@ -22,6 +22,7 @@
 #ifndef IRPC_H
 #define IRPC_H
 
+#include "lib/messaging/messaging.h"
 #include "librpc/gen_ndr/irpc.h"
 #include "librpc/gen_ndr/server_id.h"
 
diff --git a/source4/lib/messaging/messaging.h b/source4/lib/messaging/messaging.h
index c91a31d..4ec69c8 100644
--- a/source4/lib/messaging/messaging.h
+++ b/source4/lib/messaging/messaging.h
@@ -36,4 +36,7 @@ struct messaging_context;
 /* temporary messaging endpoints are allocated above this line */
 #define MSG_TMP_BASE		1000
 
+/* taskid for messaging of parent process */
+#define SAMBA_PARENT_TASKID     0
+
 #endif
diff --git a/source4/librpc/idl/irpc.idl b/source4/librpc/idl/irpc.idl
index 4178735..24326e4 100644
--- a/source4/librpc/idl/irpc.idl
+++ b/source4/librpc/idl/irpc.idl
@@ -141,4 +141,11 @@ import "misc.idl", "security.idl", "nbt.idl";
 		[out,switch_is(level)] smbsrv_info info
 		);
 
+	/*
+	  called when samba should shutdown
+	 */
+	void samba_terminate(
+		[in] astring reason
+		);
+
 }
diff --git a/source4/nbt_server/irpc.c b/source4/nbt_server/irpc.c
index 951f1d2..dbaebf6 100644
--- a/source4/nbt_server/irpc.c
+++ b/source4/nbt_server/irpc.c
@@ -180,7 +180,7 @@ void nbtd_register_irpc(struct nbtd_server *nbtsrv)
 	status = IRPC_REGISTER(task->msg_ctx, irpc, NBTD_INFORMATION, 
 			       nbtd_information, nbtsrv);
 	if (!NT_STATUS_IS_OK(status)) {
-		task_server_terminate(task, "nbtd failed to setup monitoring");
+		task_server_terminate(task, "nbtd failed to setup monitoring", true);
 		return;
 	}
 
@@ -188,7 +188,7 @@ void nbtd_register_irpc(struct nbtd_server *nbtsrv)
 			       nbtd_getdcname, nbtsrv);
 	if (!NT_STATUS_IS_OK(status)) {
 		task_server_terminate(task, "nbtd failed to setup getdcname "
-				      "handler");
+				      "handler", true);
 		return;
 	}
 
@@ -196,7 +196,7 @@ void nbtd_register_irpc(struct nbtd_server *nbtsrv)
 			       nbtd_proxy_wins_challenge, nbtsrv);
 	if (!NT_STATUS_IS_OK(status)) {
 		task_server_terminate(task, "nbtd failed to setup wins challenge "
-				      "handler");
+				      "handler", true);
 		return;
 	}
 
@@ -204,7 +204,7 @@ void nbtd_register_irpc(struct nbtd_server *nbtsrv)
 			       nbtd_proxy_wins_release_demand, nbtsrv);
 	if (!NT_STATUS_IS_OK(status)) {
 		task_server_terminate(task, "nbtd failed to setup wins release demand "
-				      "handler");
+				      "handler", true);
 		return;
 	}
 }
diff --git a/source4/nbt_server/nbt_server.c b/source4/nbt_server/nbt_server.c
index e6ff500..4a02feb 100644
--- a/source4/nbt_server/nbt_server.c
+++ b/source4/nbt_server/nbt_server.c
@@ -42,7 +42,7 @@ static void nbtd_task_init(struct task_server *task)
 	load_interfaces(task, lp_interfaces(task->lp_ctx), &ifaces);
 
 	if (iface_count(ifaces) == 0) {
-		task_server_terminate(task, "nbtd: no network interfaces configured");
+		task_server_terminate(task, "nbtd: no network interfaces configured", false);
 		return;
 	}
 
@@ -50,7 +50,7 @@ static void nbtd_task_init(struct task_server *task)
 


-- 
Samba Shared Repository


More information about the samba-cvs mailing list