[SCM] Samba Shared Repository - branch v4-4-stable updated

Karolin Seeger kseeger at samba.org
Tue Mar 22 09:06:35 UTC 2016


The branch, v4-4-stable has been updated
       via  30812c4 VERSION: Set version to 4.4.0...
       via  5a1b236 WHATSNEW: Add release notes for Samba 4.4.0.
       via  d864232 lib/socket/interfaces: Fix some uninitialied bytes.
       via  5d8c95f build: fix build when --without-quota specified
       via  8ed6376 WHATSNEW: document the experimental smb3-multi-channel feature
       via  356cff2 VERSION: Bump version up to 4.4.0rc6...
       via  3026d93 VERSION: Disable git snapshots for the Samba 4.4.0rc5 release.
       via  b65c5f1 WHATSNEW: Add release notes for Samba 4.4.0rc5.
       via  8984b15 smbd: enable multi-channel if 'server multi channel support = yes' in the config
       via  4895c3f param: add parameter "server multi channel support", defaults to off.
       via  40fb6fd selftest: Avoid sorting issues on Ubuntu 10.04 vs 14.04
       via  5184015 pytalloc: Correct description of pytalloc_Get{Base,}ObjectType behaviour
       via  caab62a dbcheck: Check for and remove duplicate values in attributes
       via  017f1db selftest: Allow 4 hours for the test to run (ouch!)
       via  4b29e7b pysmb: Use pytalloc_BaseObject_PyType_Ready()
       via  f7c7cbd pysmb: Do not use pytalloc_Object directly
       via  b784432 pysmb: Rework py_smb_new() to use pytalloc_steal()
       via  2b1ff18 pysmb: Use pytalloc_get_mem_ctx()
       via  7ea3e7f pysmb: Use pytalloc_get_ptr()
       via  5d9eeb5 pyregistry: Use pytalloc_BaseObject_PyType_Ready()
       via  a40c6f9 pyauth: Use pytalloc_BaseObject_PyType_Ready()
       via  914347f pygensec: Use pytalloc_BaseObject_PyType_Ready()
       via  39b05c2 pygensec: Use pytalloc_steal() in gensec_start_{client,server}()
       via  4cc1351 pyparam: Use pytalloc_BaseObject_PyType_Ready()
       via  83aef0a py_passdb: Use pytalloc_BaseObject_PyType_Ready()
       via  d837f8d pycredentials: Use pytalloc_BaseObject_PyType_Ready()
       via  ac3265b pytalloc: Add pytalloc_BaseObject_PyType_Ready() wrapper
       via  819a07a pyparam: Do not use pytalloc_Object directly
       via  1e839dc pypassdb: Do not use pytalloc_Object directly
       via  42dfaa1 pycredentials: Remove PyCredentialCacheContainerObject
       via  ec66fe1 pycredentials: Do not use pytalloc_Object directly
       via  7bb3111 dbcheck: Avoid spurious warnings in dbcheck due to objectclass sorting
       via  d9b2796 dbcheck: Fix incorrect/duplicate attrid in replPropertMetaData
       via  6a89304 selftest: Update release-4-1-0rc3 with more test records
       via  934623f rpc_server/drsuapi: Block replication of incorrect/duplicate attrid in replPropertMetaData
       via  21bf6af repl_meta_data: Correctly use msDS-IntId for custom schema, not the prefixMap value
       via  d3bffda pidl: Use a tmp_ctx helper variable
       via  7391fc8 pidl: Use the $mem_ctx helper variable
       via  22905ce pidl: Fix our python reference handling
       via  1e035b5 pyrpc: Clarify failure mode after pytalloc_reference_ex() improvements
       via  4398286 talloc: Bump version number
       via  ab1bcc3 pytalloc: Add new BaseObject
       via  61ba9bc pytalloc: add a _pytalloc_get_type() helper function and generate PyExc_TypeError on mismatch
       via  e2cd642 talloc: add _pytalloc_get_ptr/_pytalloc_get_mem_ctx helper functions
       via  5a22910 talloc: Improve testsuite by avoiding path issues
       via  058b78c pyrpc: Add warning about abuse of py_return_ndr_struct()
       via  aac2ecc pydsdb: Fix returning of ldb.MessageElement.
       via  6e83a84 pyldb: Add warning about pyldb_MessageElement_AsMessageElement()
       via  b9d924a selftest: specify a maximum runtime for 'make testenv' of 1 year
       via  fbb57a5 s3/passdb/py_passdb.c: free frame before returning
       via  a411046 build: mark explicit dependencies on pytalloc-util
       via  1b08ea3 libsmb/pysmb: add pytalloc-util dependency to fix the build.
       via  9ab767f selftest: mark samba4.winbind.struct.domain_info.ad_member as flapping
       via  36b0b0e build: fix disk-free quota support on Solaris 10
       via  29b44e5 smbd: Only check dev/inode in open_directory, not the full stat()
       via  a44025b s3:winbindd: don't unclude two '
       via  a83a26f s3:libnet:libnet_join: update msDS-SupportedEncryptionTypes (if required) with machine creds.
       via  a35ce5d s3:libnet:libnet_join: fill in output enctypes and only modify when necessary.
       via  60c5909 s3:libnet:libnet_join: define list of desired encryption types only once.
       via  acc8dd2 s3:librpc:idl:libnet_join: add encryption types to libnet_JoinCtx.
       via  e2b8b2c s3:libnet:libnet_join: always try to create machineaccount via LDAP first.
       via  35ecc4d s3:libads:ldap: fix ads_check_ou_dn to deal with account_ou not being initialized
       via  c6f7bbd s3:libads:ndr: add ADS_AUTH_USER_CREDS to ndr_print_ads_auth_flags()
       via  0dc8e31 s3:libads:ldap: print LDAP error message with log level 10.
       via  f74d7f5 s3:libnet:libnet_join: prepare to allow connecting with machine creds.
       via  35ec8ac Partly revert "s3:libads: setup the msDS-SupportedEncryptionTypes attribute on ldap_add"
       via  0268dc2 vfs_glusterfs: Fix use after free in AIO callback.
       via  4e48421 s3:smbd: add negprot remote arch detection for OSX
       via  9d588a9 s3:smbd: rework negprot remote arch detection
       via  28e5e95 ctdb-common: For AF_PACKET socket types, protocol is in network order
       via  5b42463 libnet: make Kerberos domain join site-aware
       via  16e970f dsgetdcname: fix flag check
       via  da0f03b dsgetdcname: return an IP address on rediscovery
       via  38091dd dsdb/repl: Ensure we use the LOCAL attid value, not the remote one
       via  2a808590 smbd:smb2: move op variable into scope of use in smb2_create_send
       via  8743f5b smbd:smb2: implement create replay
       via  a894f15 smbXsrv.idl: add create_action to smbXsrv_open
       via  9bce93b smbXsrv:open: add smb2srv_open_lookup_replay_cache()
       via  609faee smb2:create: create replay cache when request has a create_guid
       via  579fb66 smbXsrv:open: maintain a replay cache
       via  42a81bf librpc:smbXsrv.idl: add flags to smbXsrv_open
       via  19d66b4 smbd:smb2: allow the REPLAY_OPERATION flag for SMB3+ requests
       via  1938d56 torture:smb2: add smb2.replay.replay-dhv2-lease3
       via  fc3c842 torture:smb2: add smb2.replay.replay-oplock-lease
       via  9323ec5 torture:smb2: add smb2.replay.replay-dhv2-lease-oplock
       via  ef65682 torture:smb2: add smb2.replay.replay-dhv2-lease2
       via  e2e2546 torture:smb2: add smb2.replay.replay-dhv2-lease1
       via  b59ff11 torture:smb2:replay: extend CHECK_CREATE_OUT() to know leases
       via  1efc89d torture:smb2: split rename2 into multiple tests and extend these
       via  d601af8 torture:smb2: rename replay1 -> replay-commands
       via  26577db torture:smb2: skip replay4 if server does not support multi-channel
       via  2d82282 smbd: fix crash in smbXsrv_client_global_remove()
       via  5782344 netlogon_creds_cli: use dbwrap_purge instead of dbwrap_delete where appropriate
       via  5b439f5 s3:registry: use dbwrap_purge_bystring instead of dbwrap_delete_bystring
       via  c0fc2c3 dbwrap: add dbwrap_purge[_bystring]
       via  a5a7947 dbwrap_util: improve a debug message in dbwrap_delete_action()
       via  b882ed1a torture:smb2: fix skip message if share is not CA
       via  d019891 torture:smb2: skip replay5 test if server does not support persistent handles
       via  d3a024a torture:smb2: skip replay3 if server does not support Multi-Channel
       via  d3206e9 smbd:smb2_creat: remove outdated TODO comments
       via  d0db200 smbXsrv_client: factor fetch-locking of global record into function
       via  8d8e111 smbXsrv_session: factor fetch-locking of local record into function
       via  7bbdd9a smbXsrv_session: factor fetch-locking of global record into function
       via  3eec659 smbXsrv_tcon: factor fetch-locking of local record into function
       via  d5d58b9 smbXsrv_tcon: factor fetch-locking of global record into function
       via  6c78c8d smbXsrv_open: factor fetch-locking of local record into function
       via  c3fcfad smbXsrv_open: factor fetch-locking of global record into function
       via  0b6c3b5 torture:smb2: improve torture_comments in connect test
       via  141605e torture:smb2: fix memory leak in connect test.
       via  cf7a4e1 torture:smb2: rewrite connect test to use torture_asserts for create errors
       via  2dd63e5 torture:smb2: rewrite connect test to use torture_asserts
       via  95c7f0f s4-torture: let smb2.replay.replay4 test deal with scale out shares.
       via  d20a4c2 s4-torture: let smb2.replay.replay3 test deal with scale out shares.
       via  d194ce0 s4-torture: let smb2.replay.replay2 test deal with scale out shares.
       via  19c381c s4:libcli/ldap: add support for LDB_CONTROL_DIRSYNC_EX_OID
       via  2a1ceb8 ldb: version 1.1.26
       via  02e325f ldb: add support for LDB_CONTROL_DIRSYNC_EX
       via  530693d ldb: add LDB_ATTR_FLAG_FORCE_BASE64_LDIF support
       via  33f4491 pyldb: eliminate warnings from python api test
       via  f12c897 pyldb: add api tests for search_iterator()
       via  e5c7304 pyldb: add ldb.search_iterator()
       via  66112f6 pyldb: fix help message for ldb.search()
       via  11c06aa pyldb: fix memory leak in py_ldb_search()
       via  f305aae pyldb: Free correct context when pyldb_Object_AsDn() fails
       via  68b76db ldb: allow a timeout of -1 result in no timeout timer at all.
       via  7a6c31d ldb-samba: fix the timeout setup in ildb_request_send()
       via  f511bb3 s4:libcli/ldap: send AbandonRequests for cancelled requests
       via  68dc117 ldb:ABI: add missing pyldb-util.py3-1.1.25.sigs
       via  2a420aa ldb: Avoid a "talloc_steal"
       via  d2e0047 ldb: Fix some whitespace
       via  a5239be VERSION: Bump version up to 4.4.0rc5...
      from  331c2a3 VERSION: Disable git snapshots for the Samba 4.4.0rc4 release.

https://git.samba.org/?p=samba.git;a=shortlog;h=v4-4-stable


- Log -----------------------------------------------------------------
-----------------------------------------------------------------------

Summary of changes:
 VERSION                                            |     2 +-
 WHATSNEW.txt                                       |   101 +-
 auth/credentials/pycredentials.c                   |   164 +-
 auth/credentials/pycredentials.h                   |     5 -
 ctdb/common/system_linux.c                         |     6 +-
 .../protocol/servermultichannelsupport.xml         |    21 +
 lib/dbwrap/dbwrap.h                                |     2 +
 lib/dbwrap/dbwrap_util.c                           |    20 +-
 lib/ldb-samba/ldb_ildap.c                          |    12 +-
 lib/ldb/ABI/{ldb-1.1.25.sigs => ldb-1.1.26.sigs}   |     0
 ...ldb-util-1.1.10.sigs => pyldb-util-1.1.26.sigs} |     0
 ...util-1.1.10.sigs => pyldb-util.py3-1.1.25.sigs} |     0
 ...util-1.1.10.sigs => pyldb-util.py3-1.1.26.sigs} |     0
 lib/ldb/common/ldb_controls.c                      |    65 +
 lib/ldb/common/ldb_ldif.c                          |    77 +-
 lib/ldb/include/ldb.h                              |     7 +
 lib/ldb/ldb_ldap/ldb_ldap.c                        |    18 +-
 lib/ldb/ldb_sqlite3/ldb_sqlite3.c                  |    11 +-
 lib/ldb/ldb_tdb/ldb_tdb.c                          |    14 +-
 lib/ldb/pyldb.c                                    |   385 +-
 lib/ldb/pyldb.h                                    |     7 +
 lib/ldb/tests/python/api.py                        |   108 +-
 lib/ldb/tools/cmdline.c                            |    33 +
 lib/ldb/wscript                                    |     2 +-
 lib/socket/interfaces.c                            |     1 +
 lib/talloc/ABI/pytalloc-util-2.1.6.sigs            |    13 +
 lib/talloc/ABI/pytalloc-util.py3-2.1.6.sigs        |    12 +
 .../ABI/{talloc-2.1.4.sigs => talloc-2.1.6.sigs}   |     0
 lib/talloc/pytalloc.c                              |    86 +
 lib/talloc/pytalloc.h                              |    23 +-
 lib/talloc/pytalloc_guide.txt                      |    40 +-
 .../auth/pyauth.h => lib/talloc/pytalloc_private.h |    25 +-
 lib/talloc/pytalloc_util.c                         |   199 +-
 lib/talloc/test_magic_differs.sh                   |    10 +-
 lib/talloc/test_pytalloc.c                         |    83 +-
 lib/talloc/test_pytalloc.py                        |    73 +-
 lib/talloc/wscript                                 |     7 +-
 libcli/auth/netlogon_creds_cli.c                   |    14 +-
 libcli/smb/smb_constants.h                         |     1 -
 pidl/lib/Parse/Pidl/Samba4/Python.pm               |    29 +-
 python/samba/dbchecker.py                          |   160 +-
 python/samba/tests/dcerpc/array.py                 |   171 +
 python/samba/tests/dcerpc/rpc_talloc.py            |    14 +-
 selftest/flapping                                  |     1 +
 selftest/knownfail                                 |     2 -
 selftest/selftest.pl                               |    10 +-
 source3/libads/ads_proto.h                         |     6 +-
 source3/libads/ldap.c                              |    44 +-
 source3/libads/ndr.c                               |     1 +
 source3/libnet/libnet_join.c                       |   272 +-
 source3/librpc/idl/libnet_join.idl                 |     4 +-
 source3/librpc/idl/smbXsrv.idl                     |     7 +
 source3/libsmb/dsgetdcname.c                       |    16 +-
 source3/modules/vfs_glusterfs.c                    |    17 +-
 source3/passdb/py_passdb.c                         |   278 +-
 source3/passdb/wscript_build                       |     2 +-
 source3/registry/reg_backend_db.c                  |     7 +-
 source3/smbd/globals.h                             |     4 +
 source3/smbd/negprot.c                             |   152 +-
 source3/smbd/open.c                                |    14 +-
 source3/smbd/smb2_create.c                         |   115 +-
 source3/smbd/smb2_negprot.c                        |     9 +-
 source3/smbd/smb2_server.c                         |     3 +
 source3/smbd/smbXsrv_client.c                      |    72 +-
 source3/smbd/smbXsrv_open.c                        |   288 +-
 source3/smbd/smbXsrv_session.c                     |   129 +-
 source3/smbd/smbXsrv_tcon.c                        |   119 +-
 source3/winbindd/winbindd_misc.c                   |     2 +-
 source3/wscript                                    |    24 +
 source3/wscript_build                              |     5 +-
 source4/auth/gensec/pygensec.c                     |    79 +-
 source4/auth/pyauth.c                              |     7 +-
 source4/dns_server/wscript_build                   |     2 +-
 source4/dsdb/pydsdb.c                              |    49 +-
 source4/dsdb/repl/replicated_objects.c             |    18 +-
 source4/dsdb/samdb/ldb_modules/repl_meta_data.c    |    55 +-
 source4/dsdb/schema/schema_syntax.c                |    12 +-
 source4/dsdb/tests/python/ldap_schema.py           |    31 +-
 source4/lib/messaging/wscript_build                |     2 +-
 source4/lib/registry/pyregistry.c                  |    17 +-
 source4/libcli/ldap/ldap_client.c                  |    50 +
 source4/libcli/ldap/ldap_controls.c                |     1 +
 source4/libcli/pysmb.c                             |   116 +-
 source4/libcli/wscript_build                       |     2 +-
 source4/libnet/wscript_build                       |     2 +-
 source4/librpc/rpc/pyrpc.c                         |     6 +-
 source4/librpc/rpc/pyrpc_util.c                    |     3 +
 source4/param/pyparam.c                            |    81 +-
 source4/param/wscript_build                        |     2 +-
 source4/rpc_server/drsuapi/getncchanges.c          |    10 +
 .../expected-otherphone-after-dbcheck.ldif         |     5 +
 ...xpected-replpropertymetadata-after-dbcheck.ldif |    37 +-
 ...ected-replpropertymetadata-after-dbcheck2.ldif} |   124 +-
 ...ected-replpropertymetadata-after-dbcheck3.ldif} |   136 +-
 ...pected-replpropertymetadata-before-dbcheck.ldif |    22 +-
 ...ected-replpropertymetadata-before-dbcheck2.ldif |   102 +
 ...cted-replpropertymetadata-before-dbcheck3.ldif} |   144 +-
 .../forced-duplicate-value-for-dbcheck.ldif        |     9 +
 ...DRELEASE-4-1-0RC3,DC%3DSAMBA,DC%3DCORP.ldb.dump | 29028 ++++++------
 ...DRELEASE-4-1-0RC3,DC%3DSAMBA,DC%3DCORP.ldb.dump | 43448 +++++++++---------
 ...DRELEASE-4-1-0RC3,DC%3DSAMBA,DC%3DCORP.ldb.dump |   916 +-
 ...DRELEASE-4-1-0RC3,DC%3DSAMBA,DC%3DCORP.ldb.dump |   476 +-
 ...DRELEASE-4-1-0RC3,DC%3DSAMBA,DC%3DCORP.ldb.dump |     8 +-
 .../private/dns/sam.ldb.d/metadata.tdb.dump        |     8 +-
 .../release-4-1-0rc3/private/dns/sam.ldb.dump      |    24 +-
 .../release-4-1-0rc3/private/hklm.ldb.dump         |    68 +-
 .../release-4-1-0rc3/private/idmap.ldb.dump        |    44 +-
 .../release-4-1-0rc3/private/privilege.ldb.dump    |   152 +-
 ...DRELEASE-4-1-0RC3,DC%3DSAMBA,DC%3DCORP.ldb.dump | 29104 ++++++------
 ...DRELEASE-4-1-0RC3,DC%3DSAMBA,DC%3DCORP.ldb.dump | 43772 +++++++++----------
 ...DRELEASE-4-1-0RC3,DC%3DSAMBA,DC%3DCORP.ldb.dump |   916 +-
 ...DRELEASE-4-1-0RC3,DC%3DSAMBA,DC%3DCORP.ldb.dump |   476 +-
 ...DRELEASE-4-1-0RC3,DC%3DSAMBA,DC%3DCORP.ldb.dump |  6040 +--
 .../private/sam.ldb.d/metadata.tdb.dump            |     8 +-
 .../release-4-1-0rc3/private/sam.ldb.dump          |    24 +-
 .../release-4-1-0rc3/private/secrets.ldb.dump      |    32 +-
 .../release-4-1-0rc3/private/share.ldb.dump        |    24 +-
 .../release-4-1-0rc3/steps-to-reproduce.txt        |     3 +
 .../provisions/release-4-1-0rc3/sudoers2-mod.ldif  |     4 +
 .../provisions/release-4-1-0rc3/sudoers2.ldif      |    21 +
 source4/torture/smb2/connect.c                     |    89 +-
 source4/torture/smb2/replay.c                      |  1258 +-
 testprogs/blackbox/dbcheck-oldrelease.sh           |    82 +-
 tests/oldquotas.c                                  |   174 +
 124 files changed, 82258 insertions(+), 78689 deletions(-)
 create mode 100644 docs-xml/smbdotconf/protocol/servermultichannelsupport.xml
 copy lib/ldb/ABI/{ldb-1.1.25.sigs => ldb-1.1.26.sigs} (100%)
 copy lib/ldb/ABI/{pyldb-util-1.1.10.sigs => pyldb-util-1.1.26.sigs} (100%)
 copy lib/ldb/ABI/{pyldb-util-1.1.10.sigs => pyldb-util.py3-1.1.25.sigs} (100%)
 copy lib/ldb/ABI/{pyldb-util-1.1.10.sigs => pyldb-util.py3-1.1.26.sigs} (100%)
 create mode 100644 lib/talloc/ABI/pytalloc-util-2.1.6.sigs
 create mode 100644 lib/talloc/ABI/pytalloc-util.py3-2.1.6.sigs
 copy lib/talloc/ABI/{talloc-2.1.4.sigs => talloc-2.1.6.sigs} (100%)
 copy source4/auth/pyauth.h => lib/talloc/pytalloc_private.h (73%)
 create mode 100644 python/samba/tests/dcerpc/array.py
 create mode 100644 source4/selftest/provisions/release-4-1-0rc3/expected-otherphone-after-dbcheck.ldif
 copy source4/selftest/provisions/release-4-1-0rc3/{expected-replpropertymetadata-after-dbcheck.ldif => expected-replpropertymetadata-after-dbcheck2.ldif} (50%)
 copy source4/selftest/provisions/release-4-1-0rc3/{expected-replpropertymetadata-after-dbcheck.ldif => expected-replpropertymetadata-after-dbcheck3.ldif} (51%)
 create mode 100644 source4/selftest/provisions/release-4-1-0rc3/expected-replpropertymetadata-before-dbcheck2.ldif
 copy source4/selftest/provisions/release-4-1-0rc3/{expected-replpropertymetadata-after-dbcheck.ldif => expected-replpropertymetadata-before-dbcheck3.ldif} (50%)
 create mode 100644 source4/selftest/provisions/release-4-1-0rc3/forced-duplicate-value-for-dbcheck.ldif
 create mode 100644 source4/selftest/provisions/release-4-1-0rc3/sudoers2-mod.ldif
 create mode 100644 source4/selftest/provisions/release-4-1-0rc3/sudoers2.ldif
 create mode 100644 tests/oldquotas.c


Changeset truncated at 500 lines:

diff --git a/VERSION b/VERSION
index 9773087..437e544 100644
--- a/VERSION
+++ b/VERSION
@@ -87,7 +87,7 @@ SAMBA_VERSION_PRE_RELEASE=
 # e.g. SAMBA_VERSION_RC_RELEASE=1                      #
 #  ->  "3.0.0rc1"                                      #
 ########################################################
-SAMBA_VERSION_RC_RELEASE=4
+SAMBA_VERSION_RC_RELEASE=
 
 ########################################################
 # To mark SVN snapshots this should be set to 'yes'    #
diff --git a/WHATSNEW.txt b/WHATSNEW.txt
index 7011c12..396ce6e 100644
--- a/WHATSNEW.txt
+++ b/WHATSNEW.txt
@@ -1,12 +1,7 @@
 Release Announcements
 =====================
 
-This is the fourth release candidate of Samba 4.4.  This is *not*
-intended for production environments and is designed for testing
-purposes only.  Please report any defects via the Samba bug reporting
-system at https://bugzilla.samba.org/.
-
-Samba 4.4 will be the next version of the Samba suite.
+This is the first stable release of the Samba 4.4 release series.
 
 
 UPGRADING
@@ -189,6 +184,53 @@ CTDB changes
 * All CTDB current manual pages are now correctly installed
 
 
+EXPERIMENTAL FEATURES
+=====================
+
+SMB3 Multi-Channel
+------------------
+
+Samba 4.4.0 adds *experimental* support for SMB3 Multi-Channel.
+Multi-Channel is an SMB3 protocol feature that allows the client
+to bind multiple transport connections into one authenticated
+SMB session. This allows for increased fault tolerance and
+throughput. The client chooses transport connections as reported
+by the server and also chooses over which of the bound transport
+connections to send traffic. I/O operations for a given file
+handle can span multiple network connections this way.
+An SMB multi-channel session will be valid as long as at least
+one of its channels are up.
+
+In Samba, multi-channel can be enabled by setting the new
+smb.conf option "server multi channel support" to "yes".
+It is disabled by default.
+
+Samba has to report interface speeds and some capabilities to
+the client. On Linux, Samba can auto-detect the speed of an
+interface. But to support other platforms, and in order to be
+able to manually override the detected values, the "interfaces"
+smb.conf option has been given an extended syntax, by which an
+interface specification can additionally carry speed and
+capability information. The extended syntax looks like this
+for setting the speed to 1 gigabit per second:
+
+    interfaces = 192.168.1.42;speed=1000000000
+
+This extension should be used with care and are mainly intended
+for testing. See the smb.conf manual page for details.
+
+CAVEAT: While this should be working without problems mostly,
+there are still corner cases in the treatment of channel failures
+that may result in DATA CORRUPTION when these race conditions hit.
+It is hence
+
+    NOT RECOMMENDED TO USE MULTI-CHANNEL IN PRODUCTION
+
+at this stage. This situation can be expected to improve during
+the life-time of the 4.4 release. Feed-back from test-setups is
+highly welcome.
+
+
 REMOVED FEATURES
 ================
 
@@ -228,6 +270,8 @@ smb.conf changes
   --------------		-----------		-------
   aio max threads               New                     100
   ldap page size		Changed default		1000
+  server multi channel support	New			No
+  interfaces			Extended syntax
 
 
 KNOWN ISSUES
@@ -236,6 +280,51 @@ KNOWN ISSUES
 Currently none.
 
 
+CHANGES SINCE 4.4.0rc5
+======================
+
+o  Michael Adam <obnox at samba.org>
+   * BUG 11796: smbd: Enable multi-channel if 'server multi channel support =
+     yes' in the config.
+
+o  Günther Deschner <gd at samba.org>
+   * BUG 11802: lib/socket/interfaces: Fix some uninitialied bytes.
+
+o  Uri Simchoni <uri at samba.org>
+   * BUG 11798: build: Fix build when '--without-quota' specified.
+
+
+CHANGES SINCE 4.4.0rc4
+======================
+
+o  Andrew Bartlett <abartlet at samba.org>
+   * BUG 11780: mkdir can return ACCESS_DENIED incorrectly on create race.
+   * BUG 11783: Mismatch between local and remote attribute ids lets
+     replication fail with custom schema.
+   * BUG 11789: Talloc: Version 2.1.6.
+
+o  Ira Cooper <ira at samba.org>
+   * BUG 11774: vfs_glusterfs: Fix use after free in AIO callback.
+
+o  Günther Deschner <gd at samba.org>
+   * BUG 11755: Fix net join.
+
+o  Amitay Isaacs <amitay at gmail.com>
+   * BUG 11770: Reset TCP Connections during IP failover.
+
+o  Justin Maggard <jmaggard10 at gmail.com>
+   * BUG 11773: s3:smbd: Add negprot remote arch detection for OSX.
+
+o  Stefan Metzmacher <metze at samba.org>
+   * BUG 11772: ldb: Version 1.1.26.
+   * BUG 11782: "trustdom_list_done: Got invalid trustdom response" message
+     should be avoided.
+
+o  Uri Simchoni <uri at samba.org>
+   * BUG 11769: libnet: Make Kerberos domain join site-aware.
+   * BUG 11788: Quota is not supported on Solaris 10.
+
+
 CHANGES SINCE 4.4.0rc3
 ======================
 
diff --git a/auth/credentials/pycredentials.c b/auth/credentials/pycredentials.c
index 5fc2a70..1344391 100644
--- a/auth/credentials/pycredentials.c
+++ b/auth/credentials/pycredentials.c
@@ -37,26 +37,15 @@ static PyObject *PyString_FromStringOrNULL(const char *str)
 
 static PyObject *py_creds_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
 {
-	pytalloc_Object *ret = (pytalloc_Object *)type->tp_alloc(type, 0);
-	if (ret == NULL) {
-		PyErr_NoMemory();
-		return NULL;
-	}
-	ret->talloc_ctx = talloc_new(NULL);
-	if (ret->talloc_ctx == NULL) {
-		PyErr_NoMemory();
-		return NULL;
-	}
-	ret->ptr = cli_credentials_init(ret->talloc_ctx);
-	return (PyObject *)ret;
+	return pytalloc_steal(type, cli_credentials_init(NULL));
 }
 
-static PyObject *py_creds_get_username(pytalloc_Object *self)
+static PyObject *py_creds_get_username(PyObject *self, PyObject *unused)
 {
 	return PyString_FromStringOrNULL(cli_credentials_get_username(PyCredentials_AsCliCredentials(self)));
 }
 
-static PyObject *py_creds_set_username(pytalloc_Object *self, PyObject *args)
+static PyObject *py_creds_set_username(PyObject *self, PyObject *args)
 {
 	char *newval;
 	enum credentials_obtained obt = CRED_SPECIFIED;
@@ -70,13 +59,13 @@ static PyObject *py_creds_set_username(pytalloc_Object *self, PyObject *args)
 	return PyBool_FromLong(cli_credentials_set_username(PyCredentials_AsCliCredentials(self), newval, obt));
 }
 
-static PyObject *py_creds_get_password(pytalloc_Object *self)
+static PyObject *py_creds_get_password(PyObject *self, PyObject *unused)
 {
 	return PyString_FromStringOrNULL(cli_credentials_get_password(PyCredentials_AsCliCredentials(self)));
 }
 
 
-static PyObject *py_creds_set_password(pytalloc_Object *self, PyObject *args)
+static PyObject *py_creds_set_password(PyObject *self, PyObject *args)
 {
 	char *newval;
 	enum credentials_obtained obt = CRED_SPECIFIED;
@@ -90,12 +79,12 @@ static PyObject *py_creds_set_password(pytalloc_Object *self, PyObject *args)
 	return PyBool_FromLong(cli_credentials_set_password(PyCredentials_AsCliCredentials(self), newval, obt));
 }
 
-static PyObject *py_creds_get_domain(pytalloc_Object *self)
+static PyObject *py_creds_get_domain(PyObject *self, PyObject *unused)
 {
 	return PyString_FromStringOrNULL(cli_credentials_get_domain(PyCredentials_AsCliCredentials(self)));
 }
 
-static PyObject *py_creds_set_domain(pytalloc_Object *self, PyObject *args)
+static PyObject *py_creds_set_domain(PyObject *self, PyObject *args)
 {
 	char *newval;
 	enum credentials_obtained obt = CRED_SPECIFIED;
@@ -109,12 +98,12 @@ static PyObject *py_creds_set_domain(pytalloc_Object *self, PyObject *args)
 	return PyBool_FromLong(cli_credentials_set_domain(PyCredentials_AsCliCredentials(self), newval, obt));
 }
 
-static PyObject *py_creds_get_realm(pytalloc_Object *self)
+static PyObject *py_creds_get_realm(PyObject *self, PyObject *unused)
 {
 	return PyString_FromStringOrNULL(cli_credentials_get_realm(PyCredentials_AsCliCredentials(self)));
 }
 
-static PyObject *py_creds_set_realm(pytalloc_Object *self, PyObject *args)
+static PyObject *py_creds_set_realm(PyObject *self, PyObject *args)
 {
 	char *newval;
 	enum credentials_obtained obt = CRED_SPECIFIED;
@@ -128,12 +117,12 @@ static PyObject *py_creds_set_realm(pytalloc_Object *self, PyObject *args)
 	return PyBool_FromLong(cli_credentials_set_realm(PyCredentials_AsCliCredentials(self), newval, obt));
 }
 
-static PyObject *py_creds_get_bind_dn(pytalloc_Object *self)
+static PyObject *py_creds_get_bind_dn(PyObject *self, PyObject *unused)
 {
 	return PyString_FromStringOrNULL(cli_credentials_get_bind_dn(PyCredentials_AsCliCredentials(self)));
 }
 
-static PyObject *py_creds_set_bind_dn(pytalloc_Object *self, PyObject *args)
+static PyObject *py_creds_set_bind_dn(PyObject *self, PyObject *args)
 {
 	char *newval;
 	if (!PyArg_ParseTuple(args, "s", &newval))
@@ -142,12 +131,12 @@ static PyObject *py_creds_set_bind_dn(pytalloc_Object *self, PyObject *args)
 	return PyBool_FromLong(cli_credentials_set_bind_dn(PyCredentials_AsCliCredentials(self), newval));
 }
 
-static PyObject *py_creds_get_workstation(pytalloc_Object *self)
+static PyObject *py_creds_get_workstation(PyObject *self, PyObject *unused)
 {
 	return PyString_FromStringOrNULL(cli_credentials_get_workstation(PyCredentials_AsCliCredentials(self)));
 }
 
-static PyObject *py_creds_set_workstation(pytalloc_Object *self, PyObject *args)
+static PyObject *py_creds_set_workstation(PyObject *self, PyObject *args)
 {
 	char *newval;
 	enum credentials_obtained obt = CRED_SPECIFIED;
@@ -161,33 +150,33 @@ static PyObject *py_creds_set_workstation(pytalloc_Object *self, PyObject *args)
 	return PyBool_FromLong(cli_credentials_set_workstation(PyCredentials_AsCliCredentials(self), newval, obt));
 }
 
-static PyObject *py_creds_is_anonymous(pytalloc_Object *self)
+static PyObject *py_creds_is_anonymous(PyObject *self, PyObject *unused)
 {
 	return PyBool_FromLong(cli_credentials_is_anonymous(PyCredentials_AsCliCredentials(self)));
 }
 
-static PyObject *py_creds_set_anonymous(pytalloc_Object *self)
+static PyObject *py_creds_set_anonymous(PyObject *self, PyObject *unused)
 {
 	cli_credentials_set_anonymous(PyCredentials_AsCliCredentials(self));
 	Py_RETURN_NONE;
 }
 
-static PyObject *py_creds_authentication_requested(pytalloc_Object *self)
+static PyObject *py_creds_authentication_requested(PyObject *self, PyObject *unused)
 {
         return PyBool_FromLong(cli_credentials_authentication_requested(PyCredentials_AsCliCredentials(self)));
 }
 
-static PyObject *py_creds_wrong_password(pytalloc_Object *self)
+static PyObject *py_creds_wrong_password(PyObject *self, PyObject *unused)
 {
         return PyBool_FromLong(cli_credentials_wrong_password(PyCredentials_AsCliCredentials(self)));
 }
 
-static PyObject *py_creds_set_cmdline_callbacks(pytalloc_Object *self)
+static PyObject *py_creds_set_cmdline_callbacks(PyObject *self, PyObject *unused)
 {
         return PyBool_FromLong(cli_credentials_set_cmdline_callbacks(PyCredentials_AsCliCredentials(self)));
 }
 
-static PyObject *py_creds_parse_string(pytalloc_Object *self, PyObject *args)
+static PyObject *py_creds_parse_string(PyObject *self, PyObject *args)
 {
 	char *newval;
 	enum credentials_obtained obt = CRED_SPECIFIED;
@@ -202,20 +191,24 @@ static PyObject *py_creds_parse_string(pytalloc_Object *self, PyObject *args)
 	Py_RETURN_NONE;
 }
 
-static PyObject *py_creds_get_nt_hash(pytalloc_Object *self)
+static PyObject *py_creds_get_nt_hash(PyObject *self, PyObject *unused)
 {
-	const struct samr_Password *ntpw = cli_credentials_get_nt_hash(PyCredentials_AsCliCredentials(self), self->ptr);
+	PyObject *ret;
+	struct cli_credentials *creds = PyCredentials_AsCliCredentials(self);
+	struct samr_Password *ntpw = cli_credentials_get_nt_hash(creds, creds);
 
-	return PyString_FromStringAndSize(discard_const_p(char, ntpw->hash), 16);
+	ret = PyString_FromStringAndSize(discard_const_p(char, ntpw->hash), 16);
+	TALLOC_FREE(ntpw);
+	return ret;
 }
 
-static PyObject *py_creds_get_kerberos_state(pytalloc_Object *self)
+static PyObject *py_creds_get_kerberos_state(PyObject *self, PyObject *unused)
 {
 	int state = cli_credentials_get_kerberos_state(PyCredentials_AsCliCredentials(self));
 	return PyInt_FromLong(state);
 }
 
-static PyObject *py_creds_set_kerberos_state(pytalloc_Object *self, PyObject *args)
+static PyObject *py_creds_set_kerberos_state(PyObject *self, PyObject *args)
 {
 	int state;
 	if (!PyArg_ParseTuple(args, "i", &state))
@@ -225,7 +218,7 @@ static PyObject *py_creds_set_kerberos_state(pytalloc_Object *self, PyObject *ar
 	Py_RETURN_NONE;
 }
 
-static PyObject *py_creds_set_krb_forwardable(pytalloc_Object *self, PyObject *args)
+static PyObject *py_creds_set_krb_forwardable(PyObject *self, PyObject *args)
 {
 	int state;
 	if (!PyArg_ParseTuple(args, "i", &state))
@@ -236,12 +229,12 @@ static PyObject *py_creds_set_krb_forwardable(pytalloc_Object *self, PyObject *a
 }
 
 
-static PyObject *py_creds_get_forced_sasl_mech(pytalloc_Object *self)
+static PyObject *py_creds_get_forced_sasl_mech(PyObject *self, PyObject *unused)
 {
 	return PyString_FromStringOrNULL(cli_credentials_get_forced_sasl_mech(PyCredentials_AsCliCredentials(self)));
 }
 
-static PyObject *py_creds_set_forced_sasl_mech(pytalloc_Object *self, PyObject *args)
+static PyObject *py_creds_set_forced_sasl_mech(PyObject *self, PyObject *args)
 {
 	char *newval;
 	enum credentials_obtained obt = CRED_SPECIFIED;
@@ -256,7 +249,7 @@ static PyObject *py_creds_set_forced_sasl_mech(pytalloc_Object *self, PyObject *
 	Py_RETURN_NONE;
 }
 
-static PyObject *py_creds_guess(pytalloc_Object *self, PyObject *args)
+static PyObject *py_creds_guess(PyObject *self, PyObject *args)
 {
 	PyObject *py_lp_ctx = Py_None;
 	struct loadparm_context *lp_ctx;
@@ -287,7 +280,7 @@ static PyObject *py_creds_guess(pytalloc_Object *self, PyObject *args)
 	Py_RETURN_NONE;
 }
 
-static PyObject *py_creds_set_machine_account(pytalloc_Object *self, PyObject *args)
+static PyObject *py_creds_set_machine_account(PyObject *self, PyObject *args)
 {
 	PyObject *py_lp_ctx = Py_None;
 	struct loadparm_context *lp_ctx;
@@ -322,24 +315,11 @@ static PyObject *py_creds_set_machine_account(pytalloc_Object *self, PyObject *a
 
 static PyObject *PyCredentialCacheContainer_from_ccache_container(struct ccache_container *ccc)
 {
-	PyCredentialCacheContainerObject *py_ret;
-
-	if (ccc == NULL) {
-		Py_RETURN_NONE;
-	}
-
-	py_ret = (PyCredentialCacheContainerObject *)PyCredentialCacheContainer.tp_alloc(&PyCredentialCacheContainer, 0);
-	if (py_ret == NULL) {
-		PyErr_NoMemory();
-		return NULL;
-	}
-	py_ret->mem_ctx = talloc_new(NULL);
-	py_ret->ccc = talloc_reference(py_ret->mem_ctx, ccc);
-	return (PyObject *)py_ret;
+	return pytalloc_reference(&PyCredentialCacheContainer, ccc);
 }
 
 
-static PyObject *py_creds_get_named_ccache(pytalloc_Object *self, PyObject *args)
+static PyObject *py_creds_get_named_ccache(PyObject *self, PyObject *args)
 {
 	PyObject *py_lp_ctx = Py_None;
 	char *ccache_name;
@@ -385,7 +365,7 @@ static PyObject *py_creds_get_named_ccache(pytalloc_Object *self, PyObject *args
 	return NULL;
 }
 
-static PyObject *py_creds_set_gensec_features(pytalloc_Object *self, PyObject *args)
+static PyObject *py_creds_set_gensec_features(PyObject *self, PyObject *args)
 {
 	unsigned int gensec_features;
 
@@ -397,7 +377,7 @@ static PyObject *py_creds_set_gensec_features(pytalloc_Object *self, PyObject *a
 	Py_RETURN_NONE;
 }
 
-static PyObject *py_creds_get_gensec_features(pytalloc_Object *self, PyObject *args)
+static PyObject *py_creds_get_gensec_features(PyObject *self, PyObject *args)
 {
 	unsigned int gensec_features;
 
@@ -407,71 +387,71 @@ static PyObject *py_creds_get_gensec_features(pytalloc_Object *self, PyObject *a
 
 
 static PyMethodDef py_creds_methods[] = {
-	{ "get_username", (PyCFunction)py_creds_get_username, METH_NOARGS,
+	{ "get_username", py_creds_get_username, METH_NOARGS,
 		"S.get_username() -> username\nObtain username." },
-	{ "set_username", (PyCFunction)py_creds_set_username, METH_VARARGS,
+	{ "set_username", py_creds_set_username, METH_VARARGS,
 		"S.set_username(name, obtained=CRED_SPECIFIED) -> None\n"
 		"Change username." },
-	{ "get_password", (PyCFunction)py_creds_get_password, METH_NOARGS,
+	{ "get_password", py_creds_get_password, METH_NOARGS,
 		"S.get_password() -> password\n"
 		"Obtain password." },
-	{ "set_password", (PyCFunction)py_creds_set_password, METH_VARARGS,
+	{ "set_password", py_creds_set_password, METH_VARARGS,
 		"S.set_password(password, obtained=CRED_SPECIFIED) -> None\n"
 		"Change password." },
-	{ "get_domain", (PyCFunction)py_creds_get_domain, METH_NOARGS,
+	{ "get_domain", py_creds_get_domain, METH_NOARGS,
 		"S.get_domain() -> domain\n"
 		"Obtain domain name." },
-	{ "set_domain", (PyCFunction)py_creds_set_domain, METH_VARARGS,
+	{ "set_domain", py_creds_set_domain, METH_VARARGS,
 		"S.set_domain(domain, obtained=CRED_SPECIFIED) -> None\n"
 		"Change domain name." },
-	{ "get_realm", (PyCFunction)py_creds_get_realm, METH_NOARGS,
+	{ "get_realm", py_creds_get_realm, METH_NOARGS,
 		"S.get_realm() -> realm\n"
 		"Obtain realm name." },
-	{ "set_realm", (PyCFunction)py_creds_set_realm, METH_VARARGS,
+	{ "set_realm", py_creds_set_realm, METH_VARARGS,
 		"S.set_realm(realm, obtained=CRED_SPECIFIED) -> None\n"
 		"Change realm name." },
-	{ "get_bind_dn", (PyCFunction)py_creds_get_bind_dn, METH_NOARGS,
+	{ "get_bind_dn", py_creds_get_bind_dn, METH_NOARGS,
 		"S.get_bind_dn() -> bind dn\n"
 		"Obtain bind DN." },
-	{ "set_bind_dn", (PyCFunction)py_creds_set_bind_dn, METH_VARARGS,
+	{ "set_bind_dn", py_creds_set_bind_dn, METH_VARARGS,
 		"S.set_bind_dn(bind_dn) -> None\n"
 		"Change bind DN." },
-	{ "is_anonymous", (PyCFunction)py_creds_is_anonymous, METH_NOARGS,
+	{ "is_anonymous", py_creds_is_anonymous, METH_NOARGS,
 		NULL },
-	{ "set_anonymous", (PyCFunction)py_creds_set_anonymous, METH_NOARGS,
+	{ "set_anonymous", py_creds_set_anonymous, METH_NOARGS,
         	"S.set_anonymous() -> None\n"
 		"Use anonymous credentials." },
-	{ "get_workstation", (PyCFunction)py_creds_get_workstation, METH_NOARGS,
+	{ "get_workstation", py_creds_get_workstation, METH_NOARGS,
 		NULL },
-	{ "set_workstation", (PyCFunction)py_creds_set_workstation, METH_VARARGS,
+	{ "set_workstation", py_creds_set_workstation, METH_VARARGS,
 		NULL },
-	{ "authentication_requested", (PyCFunction)py_creds_authentication_requested, METH_NOARGS,
+	{ "authentication_requested", py_creds_authentication_requested, METH_NOARGS,
 		NULL },
-	{ "wrong_password", (PyCFunction)py_creds_wrong_password, METH_NOARGS,
+	{ "wrong_password", py_creds_wrong_password, METH_NOARGS,
 		"S.wrong_password() -> bool\n"
 		"Indicate the returned password was incorrect." },
-	{ "set_cmdline_callbacks", (PyCFunction)py_creds_set_cmdline_callbacks, METH_NOARGS,
+	{ "set_cmdline_callbacks", py_creds_set_cmdline_callbacks, METH_NOARGS,
 		"S.set_cmdline_callbacks() -> bool\n"
 		"Use command-line to obtain credentials not explicitly set." },
-	{ "parse_string", (PyCFunction)py_creds_parse_string, METH_VARARGS,
+	{ "parse_string", py_creds_parse_string, METH_VARARGS,
 		"S.parse_string(text, obtained=CRED_SPECIFIED) -> None\n"
 		"Parse credentials string." },
-	{ "get_nt_hash", (PyCFunction)py_creds_get_nt_hash, METH_NOARGS,
+	{ "get_nt_hash", py_creds_get_nt_hash, METH_NOARGS,
 		NULL },
-	{ "get_kerberos_state", (PyCFunction)py_creds_get_kerberos_state, METH_NOARGS,
+	{ "get_kerberos_state", py_creds_get_kerberos_state, METH_NOARGS,
 		NULL },
-	{ "set_kerberos_state", (PyCFunction)py_creds_set_kerberos_state, METH_VARARGS,
+	{ "set_kerberos_state", py_creds_set_kerberos_state, METH_VARARGS,
 		NULL },
-	{ "set_krb_forwardable", (PyCFunction)py_creds_set_krb_forwardable, METH_VARARGS,
+	{ "set_krb_forwardable", py_creds_set_krb_forwardable, METH_VARARGS,
 		NULL },
-	{ "guess", (PyCFunction)py_creds_guess, METH_VARARGS, NULL },
-	{ "set_machine_account", (PyCFunction)py_creds_set_machine_account, METH_VARARGS, NULL },
-	{ "get_named_ccache", (PyCFunction)py_creds_get_named_ccache, METH_VARARGS, NULL },
-	{ "set_gensec_features", (PyCFunction)py_creds_set_gensec_features, METH_VARARGS, NULL },


-- 
Samba Shared Repository



More information about the samba-cvs mailing list