The branch, master has been updated via 4ddf78a tdb: version 1.3.6 via 89dcfbf lib/replace: remove unused HAVE_DECL_PTHREAD_{MUTEXATTR_SETROBUST,MUTEX_CONSISTENT}_NP checks via 34cf1d2 lib/replace: fix PTHREAD_MUTEX_ROBUST fallback to PTHREAD_MUTEX_ROBUST_NP on solaris 11 via ff072a6 wafsamba: let CHECK_DECLS() find enum values via 86671db wafsamba: remove unused allow_warnings=True from SAMBA_PYTHON() via 70737dd s3:pysmbd: #include <Python.h> must be the first include in order to avoid compiler warnings via cf7e1c7 pidl:NDR/Parser: check [ref] pointers before pushing anything else via 3c97bfe pidl:NDR/Parser: protect for loops against $length being an expression instead of a scalar variable via 781cc3d pidl:Python: protect for loops against $length being an expression instead of a scalar variable via ad7148f pidl:Python: use discard_const() to pass a possible const pointer to talloc_unlink() via 3d7ce9d s4:ntvfs/pyposix_eadb: fix initposix_eadb() prototype via d7bdb30 tevent: version 0.9.25 via 93ee074 pytevent: add a TeventTimer_Object_ref helper structure to make the code clearer via fb04f0f pytevent: remove const warnings using discard_const_p() via 1a8a5ba pytevent: remove dead code TEVENT_DEPRECATED is never defined via 2216141 talloc:guide: fix documented signature of talloc_unlink(). via 66e96d9 talloc:manpage: fix documented signature of talloc_unlink(). via f5d74c2 talloc: sync the talloc_reference() description between talloc_guide and manpage via 1898200 ctdb-vacuum: revert "Do not delete VACUUM MIGRATED records immediately" via 53ff3e4 ctdb-ib: make sure the tevent_fd is removed before the fd is closed via 006042a libcli/smb: make sure we remove the writev_send() request when a request is destroyed via f3982eb libcli/smb: add smb1 requests to the pending array before writev_send() via 5933843 libcli/smb: make sure the writev_send of smbXcli_conn_samba_suicide() is removed before closing the socket via 8f42df2 libcli/smb: remove unused split of read_fd and write_fd via 46e1aa2 libcli/smb: close the socket fd at the end of smbXcli_conn_disconnect() via 26c4b3f libcli/smb: use tevent_req_received(req) in read_smb_recv() via 64640cc lib/async_req: remove the tevent_fd as early as possible via a wait_for_read_cleanup() hook via a2a7cbc lib/async_req: remove the tevent_fd as early as possible via a read_packet_cleanup() hook via 9a116b2 lib/async_req: use tevent_req_nomem/tevent_req_post in read_packet_send() via 4f05f68 lib/async_req: s/result/req/ in read_packet_send() via 0c11096 lib/async_req: remove the tevent_fd as early as possible via a writev_cleanup() hook via d5a4b30 lib/async_req: simplify async_connect_* using a _cleanup() hook via be8c2ff lib/async_req: s/result/req/ in async_connect_send() via ccd038e lib/async_req: remove unused sendto_{send,recv} and recvfrom_{send,recv} via a328291 s3:libsmb: convert nb_trans_send/recv internals to tdgram via ecb4d04 s3:libsmb: convert nb_packet_reader to tstream_* functions via 3ecf4ec s3:libsmb: convert nb_packet_client to tstream_* functions via 9ccf8e6 s3:libsmb: let nb_packet_server_destructor() explicitly destroy the tevent_fd via 058d847 s3:libsmb: remove pending requests as early as possible via a smbsock_any_connect_cleanup() hook via 04f89d4 s3:libsmb: remove subreqs as early as possible via a smbsock_connect_cleanup() hook via 992be06 s3:libsmb: remove the cli_session_request as early as possible via a nb_connect_cleanup() hook via 0d161e4 s3:lib/addrchange: make use of tdgram_* in addrchange_*() via 257bc58 s3:lib/addrchange: look at the correct nl_pid in addrchange_done() via 9d3444a s3:lib/background: make sure we destroy a pending read_packet_send() before closing the pipe fd via 0c108f5 s3:wscript: move lib/util_tsock.c from 'TLDAP' to 'samba3util' via dd037b0 s4:libcli/raw: make sure smbcli_transport_connect_send/recv correctly cleanup on error via 36b97d0 lib/tsocket: add tdgram_inet_udp_broadcast_socket() via 3a8b7b0 lib/tsocket: add tdgram_bsd_existing_socket() helper function via 44584f8 tevent.h: propose tstream_ versions of read_packet_send/recv and writev_send/recv via 88971d4 tevent/testsuite: make sure we cleanup tevent_fd structures in the correct order from b3a18d6 ctdb-locking: move all auto_mark logic into process_callbacks()
https://git.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 4ddf78a282c85e84b6201a79b707fad9487f3ccd Author: Stefan Metzmacher <me...@samba.org> Date: Fri Jun 12 09:10:39 2015 +0200 tdb: version 1.3.6 * Fix runtime detection for robust mutexes in the standalone build. bug #11326 * Possible fix for the build with robust mutexes on solaris 11 bug #11319 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Michael Adam <ob...@samba.org> Autobuild-User(master): Stefan Metzmacher <me...@samba.org> Autobuild-Date(master): Fri Jun 12 19:55:34 CEST 2015 on sn-devel-104 commit 89dcfbf3f45f448e515a1da82e09002a0aafb7b4 Author: Stefan Metzmacher <me...@samba.org> Date: Fri Jun 12 11:01:21 2015 +0200 lib/replace: remove unused HAVE_DECL_PTHREAD_{MUTEXATTR_SETROBUST,MUTEX_CONSISTENT}_NP checks BUG: https://bugzilla.samba.org/show_bug.cgi?id=11319 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Michael Adam <ob...@samba.org> commit 34cf1d213ec0261af41ef6a16f5b37e5015c614b Author: Stefan Metzmacher <me...@samba.org> Date: Fri Jun 12 11:01:21 2015 +0200 lib/replace: fix PTHREAD_MUTEX_ROBUST fallback to PTHREAD_MUTEX_ROBUST_NP on solaris 11 Without this we got the following defines in config.h: #define HAVE_DECL_PTHREAD_MUTEXATTR_SETROBUST_NP 1 #define HAVE_DECL_PTHREAD_MUTEX_CONSISTENT_NP 1 #define HAVE_PTHREAD_MUTEXATTR_SETROBUST 1 #define HAVE_PTHREAD_MUTEX_CONSISTENT 1 #define HAVE_ROBUST_MUTEXES 1 #define USE_TDB_MUTEX_LOCKING 1 And the build failed with PTHREAD_MUTEX_ROBUST being unknown. Note that PTHREAD_MUTEX_ROBUST and PTHREAD_MUTEX_ROBUST_NP are enum values while they're defines on solaris 11 BUG: https://bugzilla.samba.org/show_bug.cgi?id=11319 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Michael Adam <ob...@samba.org> commit ff072a633660780cf72d204f4620c664957a6072 Author: Stefan Metzmacher <me...@samba.org> Date: Fri Jun 12 12:13:23 2015 +0200 wafsamba: let CHECK_DECLS() find enum values In the current state this still generates the same config.h at least on ubuntu 14.04 amd64. Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Michael Adam <ob...@samba.org> commit 86671dbd9f912e27be3ff7ba3a5f9b8200bf2550 Author: Stefan Metzmacher <me...@samba.org> Date: Thu Jun 11 10:01:15 2015 +0200 wafsamba: remove unused allow_warnings=True from SAMBA_PYTHON() This is not needed anymore all python bindings build without wawrnings now. Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Michael Adam <ob...@samba.org> commit 70737dd5512df3838e985137715352930ee438df Author: Stefan Metzmacher <me...@samba.org> Date: Fri Jun 12 11:45:39 2015 +0200 s3:pysmbd: #include <Python.h> must be the first include in order to avoid compiler warnings This is the only exception, normally "replace.h" or "includes.h" need to be the first include. Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Michael Adam <ob...@samba.org> commit cf7e1c7597dac52c4efd37da1d8130899bfd7509 Author: Stefan Metzmacher <me...@samba.org> Date: Thu Jun 11 09:01:24 2015 +0200 pidl:NDR/Parser: check [ref] pointers before pushing anything else This was reported by Coverity as CID 1288527: Null pointer dereferences (REVERSE_INULL) Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Michael Adam <ob...@samba.org> commit 3c97bfe9de538d9f551f2c3d77ee3ab820a39b4a Author: Stefan Metzmacher <me...@samba.org> Date: Thu Jun 11 08:54:11 2015 +0200 pidl:NDR/Parser: protect for loops against $length being an expression instead of a scalar variable This changes for (value_cntr_1 = 0; value_cntr_1 < r->out.length?*r->out.length:0; value_cntr_1++) { into: for (value_cntr_1 = 0; value_cntr_1 < (r->out.length?*r->out.length:0); value_cntr_1++) { it fixes a possible endless loop resulting in a crash. Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Michael Adam <ob...@samba.org> commit 781cc3d50f18e69bad5faf67ee46f7b1fd28cf2a Author: Stefan Metzmacher <me...@samba.org> Date: Thu Jun 11 08:54:11 2015 +0200 pidl:Python: protect for loops against $length being an expression instead of a scalar variable This changes for (value_cntr_1 = 0; value_cntr_1 < r->out.length?*r->out.length:0; value_cntr_1++) { into: for (value_cntr_1 = 0; value_cntr_1 < (r->out.length?*r->out.length:0); value_cntr_1++) { it fixes a possible endless loop resulting in a crash. Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Michael Adam <ob...@samba.org> commit ad7148fec650c10fa77daf73ece57a8dfa37eb63 Author: Stefan Metzmacher <me...@samba.org> Date: Thu Jun 11 09:58:13 2015 +0200 pidl:Python: use discard_const() to pass a possible const pointer to talloc_unlink() Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Michael Adam <ob...@samba.org> commit 3d7ce9d411d720c975f868386498da3db4f07d53 Author: Stefan Metzmacher <me...@samba.org> Date: Thu Jun 11 09:57:23 2015 +0200 s4:ntvfs/pyposix_eadb: fix initposix_eadb() prototype Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Michael Adam <ob...@samba.org> commit d7bdb30cc1731dc84831e323332a85be2bccf6a7 Author: Stefan Metzmacher <me...@samba.org> Date: Fri Jun 12 08:58:26 2015 +0200 tevent: version 0.9.25 * Fix compile error in Solaris ports backend. * Fix access after free in tevent_common_check_signal(). bug #11308 * Improve pytevent bindings. * Testsuite fixes. * Improve the documentation of the tevent_add_fd() assumtions. It must be talloc_free'ed before closing the fd! See bug #11141 and bug #11316. Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Michael Adam <ob...@samba.org> commit 93ee074f912da02d4c1f1584df9b107364b639be Author: Stefan Metzmacher <me...@samba.org> Date: Thu Jun 11 09:51:19 2015 +0200 pytevent: add a TeventTimer_Object_ref helper structure to make the code clearer This gives talloc_set_destructor to verify the type, which removes a compiler warning. Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Michael Adam <ob...@samba.org> commit fb04f0f4190005ff21817b79d02897af23ddc7ee Author: Stefan Metzmacher <me...@samba.org> Date: Thu Jun 11 09:50:35 2015 +0200 pytevent: remove const warnings using discard_const_p() Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Michael Adam <ob...@samba.org> commit 1a8a5ba0d51f9c2c9e84a3400e05327e7059156b Author: Stefan Metzmacher <me...@samba.org> Date: Thu Jun 11 09:49:18 2015 +0200 pytevent: remove dead code TEVENT_DEPRECATED is never defined Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Michael Adam <ob...@samba.org> commit 2216141ff8a204c8b41293a19e9ce86308b0424f Author: Michael Adam <ob...@samba.org> Date: Fri Jun 12 10:23:41 2015 +0200 talloc:guide: fix documented signature of talloc_unlink(). The second argument is void *, not const void *. Signed-off-by: Michael Adam <ob...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit 66e96d9ac6b244c8cd4a95205d5576d78b22dfcd Author: Michael Adam <ob...@samba.org> Date: Fri Jun 12 10:16:40 2015 +0200 talloc:manpage: fix documented signature of talloc_unlink(). The second argument is void *, not const void *. Signed-off-by: Michael Adam <ob...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit f5d74c26a397b2d80d26e2bcf11e0574d3fa995c Author: Stefan Metzmacher <me...@samba.org> Date: Thu Jun 11 16:39:35 2015 +0200 talloc: sync the talloc_reference() description between talloc_guide and manpage Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Michael Adam <ob...@samba.org> commit 1898200481f64676e596e52dc177c8d70ca1a00c Author: Michael Adam <ob...@samba.org> Date: Fri Jun 12 10:59:54 2015 +0200 ctdb-vacuum: revert "Do not delete VACUUM MIGRATED records immediately" This reverts commit 257311e337065f089df688cbf261d2577949203d. That commit was due to a misunderstanding, and it does not fix what it was supposed to fix. Signed-off-by: Michael Adam <ob...@samba.org> Reviewed-by: Amitay Isaacs <ami...@gmail.com> commit 53ff3e4f31f3debd98f9293171c023a0a406858d Author: Stefan Metzmacher <me...@samba.org> Date: Fri Jun 5 10:30:39 2015 +0200 ctdb-ib: make sure the tevent_fd is removed before the fd is closed BUG: https://bugzilla.samba.org/show_bug.cgi?id=11316 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Volker Lendecke <v...@samba.org> commit 006042ac126261e87089fb9835c28789e8aeae1b Author: Stefan Metzmacher <me...@samba.org> Date: Fri May 29 16:14:40 2015 +0200 libcli/smb: make sure we remove the writev_send() request when a request is destroyed This way smbXcli_conn_disconnect() removes all tevent_fd structures attached to the sock_fd before closing it. BUG: https://bugzilla.samba.org/show_bug.cgi?id=11316 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Volker Lendecke <v...@samba.org> commit f3982eb2c7f1d17a013dacfd430a3752e6ef4ae4 Author: Stefan Metzmacher <me...@samba.org> Date: Fri May 29 15:48:26 2015 +0200 libcli/smb: add smb1 requests to the pending array before writev_send() This way we have a change to destroy the pending writev_send request before closing the socket in smbXcli_conn_disconnect(). BUG: https://bugzilla.samba.org/show_bug.cgi?id=11316 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Volker Lendecke <v...@samba.org> commit 59338434274799db1ac60b082a6453bd924c5f4c Author: Stefan Metzmacher <me...@samba.org> Date: Fri May 29 15:29:31 2015 +0200 libcli/smb: make sure the writev_send of smbXcli_conn_samba_suicide() is removed before closing the socket BUG: https://bugzilla.samba.org/show_bug.cgi?id=11316 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Volker Lendecke <v...@samba.org> commit 8f42df235dc825a103631fdf0e37e1c1d03cf420 Author: Stefan Metzmacher <me...@samba.org> Date: Thu May 28 13:22:19 2015 +0200 libcli/smb: remove unused split of read_fd and write_fd The tevent epoll backend supports separate read and write tevent_fd structure on a single fd, so there's no need for a dup() anymore. BUG: https://bugzilla.samba.org/show_bug.cgi?id=11316 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Volker Lendecke <v...@samba.org> commit 46e1aa22b12eacc3567f7897716ae07837545c23 Author: Stefan Metzmacher <me...@samba.org> Date: Thu May 28 13:09:11 2015 +0200 libcli/smb: close the socket fd at the end of smbXcli_conn_disconnect() We need to cancel all pending requests before closing the socket fds, otherwise we cause problem with the interaction with the epoll event backend. BUG: https://bugzilla.samba.org/show_bug.cgi?id=11316 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Volker Lendecke <v...@samba.org> commit 26c4b3fc9db507557b2539dd7d1f9e593c3fa35a Author: Stefan Metzmacher <me...@samba.org> Date: Thu May 21 22:29:55 2015 +0200 libcli/smb: use tevent_req_received(req) in read_smb_recv() BUG: https://bugzilla.samba.org/show_bug.cgi?id=11316 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Volker Lendecke <v...@samba.org> commit 64640cc99c7b8543ee8d35ca243c57c048cdb490 Author: Stefan Metzmacher <me...@samba.org> Date: Thu May 21 22:28:14 2015 +0200 lib/async_req: remove the tevent_fd as early as possible via a wait_for_read_cleanup() hook BUG: https://bugzilla.samba.org/show_bug.cgi?id=11316 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Volker Lendecke <v...@samba.org> commit a2a7cbc66c4713493e6ade45d0cdde25f64c9007 Author: Stefan Metzmacher <me...@samba.org> Date: Thu May 21 22:28:14 2015 +0200 lib/async_req: remove the tevent_fd as early as possible via a read_packet_cleanup() hook BUG: https://bugzilla.samba.org/show_bug.cgi?id=11316 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Volker Lendecke <v...@samba.org> commit 9a116b28bab20507760f50f25214635a60ea6c43 Author: Stefan Metzmacher <me...@samba.org> Date: Thu May 21 22:28:14 2015 +0200 lib/async_req: use tevent_req_nomem/tevent_req_post in read_packet_send() BUG: https://bugzilla.samba.org/show_bug.cgi?id=11316 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Volker Lendecke <v...@samba.org> commit 4f05f68abc1d756bb114260e80d3532f3f959fec Author: Stefan Metzmacher <me...@samba.org> Date: Thu May 21 22:28:14 2015 +0200 lib/async_req: s/result/req/ in read_packet_send() BUG: https://bugzilla.samba.org/show_bug.cgi?id=11316 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Volker Lendecke <v...@samba.org> commit 0c1109695639a177d3d739b343e7588a6ecf0949 Author: Stefan Metzmacher <me...@samba.org> Date: Thu May 21 22:28:14 2015 +0200 lib/async_req: remove the tevent_fd as early as possible via a writev_cleanup() hook BUG: https://bugzilla.samba.org/show_bug.cgi?id=11316 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Volker Lendecke <v...@samba.org> commit d5a4b30f894f0d4d4fa728ebd2c435254bf3b142 Author: Stefan Metzmacher <me...@samba.org> Date: Thu May 21 22:28:14 2015 +0200 lib/async_req: simplify async_connect_* using a _cleanup() hook This makes sure we remove the tevent_fd as soon as possible and always reset the old_sockflags. BUG: https://bugzilla.samba.org/show_bug.cgi?id=11316 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Volker Lendecke <v...@samba.org> commit be8c2ff10353df00f05cd378c251a33a9e08563a Author: Stefan Metzmacher <me...@samba.org> Date: Fri Jun 5 13:58:19 2015 +0200 lib/async_req: s/result/req/ in async_connect_send() BUG: https://bugzilla.samba.org/show_bug.cgi?id=11316 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Volker Lendecke <v...@samba.org> commit ccd038e1523a69197a9aaeca00305b0958f09ff0 Author: Stefan Metzmacher <me...@samba.org> Date: Thu May 21 12:25:38 2015 +0200 lib/async_req: remove unused sendto_{send,recv} and recvfrom_{send,recv} BUG: https://bugzilla.samba.org/show_bug.cgi?id=11316 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Volker Lendecke <v...@samba.org> commit a3282911f6ceb76b2ada567e569a55af8c7ef160 Author: Stefan Metzmacher <me...@samba.org> Date: Thu May 21 04:43:27 2015 +0200 s3:libsmb: convert nb_trans_send/recv internals to tdgram This simplifies/fixes the cleanup, because we need to remove any tevent_fd object before closing the socket fd. BUG: https://bugzilla.samba.org/show_bug.cgi?id=11316 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Volker Lendecke <v...@samba.org> commit ecb4d041de89441941a112ab3a724887e568117e Author: Stefan Metzmacher <me...@samba.org> Date: Thu May 21 02:18:26 2015 +0200 s3:libsmb: convert nb_packet_reader to tstream_* functions By using the tstream abstraction we don't need to take care error handling regarding dangling tevent_fd structures. BUG: https://bugzilla.samba.org/show_bug.cgi?id=11316 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Volker Lendecke <v...@samba.org> commit 3ecf4ec6574de9bdd5a2d55529ed81b17c74d452 Author: Stefan Metzmacher <me...@samba.org> Date: Thu May 21 01:53:44 2015 +0200 s3:libsmb: convert nb_packet_client to tstream_* functions By using the tstream abstraction we don't need to take care error handling regarding dangling tevent_fd structures. BUG: https://bugzilla.samba.org/show_bug.cgi?id=11316 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Volker Lendecke <v...@samba.org> commit 9ccf8e6d36618498c4952bb1d4b74152f75ab793 Author: Stefan Metzmacher <me...@samba.org> Date: Thu May 21 02:20:00 2015 +0200 s3:libsmb: let nb_packet_server_destructor() explicitly destroy the tevent_fd The need to destroy the tevent_fd before closing the socket fd. BUG: https://bugzilla.samba.org/show_bug.cgi?id=11316 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Volker Lendecke <v...@samba.org> commit 058d84747e75a5f97a02e31bac9c8d0d147174bc Author: Stefan Metzmacher <me...@samba.org> Date: Thu May 21 03:01:30 2015 +0200 s3:libsmb: remove pending requests as early as possible via a smbsock_any_connect_cleanup() hook Once we got an error or a valid connection we should destroy all other connection attempts as early as possible. BUG: https://bugzilla.samba.org/show_bug.cgi?id=11316 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Volker Lendecke <v...@samba.org> commit 04f89d4255ed95631aa8f0ada4bcf5f888e126d4 Author: Stefan Metzmacher <me...@samba.org> Date: Thu May 21 03:01:05 2015 +0200 s3:libsmb: remove subreqs as early as possible via a smbsock_connect_cleanup() hook open_socket_out_send() or nb_connect_send() likely use socket fds and tevent_fd objects. We should clean them up as early as possible. BUG: https://bugzilla.samba.org/show_bug.cgi?id=11316 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Volker Lendecke <v...@samba.org> commit 992be06f165c3d05e85d16baf514dba49f55d1ec Author: Stefan Metzmacher <me...@samba.org> Date: Thu May 21 03:00:17 2015 +0200 s3:libsmb: remove the cli_session_request as early as possible via a nb_connect_cleanup() hook cli_session_request_send() is likely to use tevent_fd objects on the given socket fd, so we need to destroy the request before closing the socket fd. BUG: https://bugzilla.samba.org/show_bug.cgi?id=11316 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Volker Lendecke <v...@samba.org> commit 0d161e42d9aeb155eae2b04eccec497b21de8029 Author: Stefan Metzmacher <me...@samba.org> Date: Thu May 21 12:17:24 2015 +0200 s3:lib/addrchange: make use of tdgram_* in addrchange_*() This makes the cleanup handling easier to get right, as we need to make sure any tevent_fd is removed before closing a socket fd. BUG: https://bugzilla.samba.org/show_bug.cgi?id=11316 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Volker Lendecke <v...@samba.org> commit 257bc586c22f9a7f34b913823d5c89592d433454 Author: Stefan Metzmacher <me...@samba.org> Date: Fri Jun 5 14:19:00 2015 +0200 s3:lib/addrchange: look at the correct nl_pid in addrchange_done() state->fromaddr is the address we got from recvfrom_send/recv. state->addr is completely untouched after tevent_req_create(). BUG: https://bugzilla.samba.org/show_bug.cgi?id=11316 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Volker Lendecke <v...@samba.org> commit 9d3444ad887bb3a118eaecd141c79dfd6de53f41 Author: Stefan Metzmacher <me...@samba.org> Date: Thu May 28 13:31:17 2015 +0200 s3:lib/background: make sure we destroy a pending read_packet_send() before closing the pipe fd BUG: https://bugzilla.samba.org/show_bug.cgi?id=11316 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Volker Lendecke <v...@samba.org> commit 0c108f55d9c3cca0bde1c15c66dccabbc40e6133 Author: Stefan Metzmacher <me...@samba.org> Date: Thu May 21 03:45:36 2015 +0200 s3:wscript: move lib/util_tsock.c from 'TLDAP' to 'samba3util' tstream_read_packet_send/recv() is a generic helper function... BUG: https://bugzilla.samba.org/show_bug.cgi?id=11316 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit dd037b0be4ed2df7239cb61bd3d4bb868bb09126 Author: Stefan Metzmacher <me...@samba.org> Date: Thu May 28 14:25:27 2015 +0200 s4:libcli/raw: make sure smbcli_transport_connect_send/recv correctly cleanup on error We need to make sure that we remove any pending writev_send or read_smb_send request before closing the socket fd. As a side effect we always close the socket fd if we don't return success for any any reason. BUG: https://bugzilla.samba.org/show_bug.cgi?id=11316 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 36b97d0bb9fe004f3d8a500f3af83dff34f86d7b Author: Stefan Metzmacher <me...@samba.org> Date: Thu May 21 11:39:38 2015 +0200 lib/tsocket: add tdgram_inet_udp_broadcast_socket() This is similar to tdgram_inet_udp_socket(), but it allows the use of ipv4 broadcast traffic. BUG: https://bugzilla.samba.org/show_bug.cgi?id=11316 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 3a8b7b0518b33b016d2dbb8dd23d35ef1c6aaa5c Author: Stefan Metzmacher <me...@samba.org> Date: Thu May 21 11:37:06 2015 +0200 lib/tsocket: add tdgram_bsd_existing_socket() helper function This is similar to tstream_bsd_existing_socket(). Both help to migrate strange code path to using the tstream or tdgram abstractions. BUG: https://bugzilla.samba.org/show_bug.cgi?id=11316 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 44584f810720602201a9afaaa087eeb83579eff5 Author: Stefan Metzmacher <me...@samba.org> Date: Thu May 28 09:32:26 2015 +0200 tevent.h: propose tstream_ versions of read_packet_send/recv and writev_send/recv The functions operating on the raw file descriptor are for advanced callers, which take extra care and avoid the problems of https://bugzilla.samba.org/show_bug.cgi?id=11141. BUG: https://bugzilla.samba.org/show_bug.cgi?id=11316 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 88971d4870a197f656ef912911ca1e4ff5b56749 Author: Stefan Metzmacher <me...@samba.org> Date: Sat May 30 01:42:08 2015 +0200 tevent/testsuite: make sure we cleanup tevent_fd structures in the correct order First we need to remove the tevent_fd structures without tevent_fd_set_auto_close(). Closing the fd needs to be the last thing... BUG: https://bugzilla.samba.org/show_bug.cgi?id=11316 Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> ----------------------------------------------------------------------- Summary of changes: buildtools/wafsamba/samba_autoconf.py | 13 +- buildtools/wafsamba/samba_python.py | 1 - ctdb/ib/ibwrapper.c | 21 +- ctdb/server/ctdb_ltdb_server.c | 5 - lib/async_req/async_sock.c | 369 +++++++-------------- lib/async_req/async_sock.h | 12 - lib/replace/system/threads.h | 9 +- lib/replace/wscript | 14 +- lib/talloc/man/talloc.3.xml | 8 +- lib/talloc/talloc_guide.txt | 2 +- lib/tdb/ABI/{tdb-1.3.5.sigs => tdb-1.3.6.sigs} | 0 lib/tdb/wscript | 2 +- .../ABI/{tevent-0.9.21.sigs => tevent-0.9.25.sigs} | 0 lib/tevent/pytevent.c | 106 ++---- lib/tevent/testsuite.c | 4 +- lib/tevent/tevent.h | 4 +- lib/tevent/wscript | 2 +- lib/tsocket/tsocket.h | 71 ++++ lib/tsocket/tsocket_bsd.c | 54 +++ libcli/smb/read_smb.c | 2 + libcli/smb/smbXcli_base.c | 124 ++++--- pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm | 62 +++- pidl/lib/Parse/Pidl/Samba4/Python.pm | 4 +- source3/lib/addrchange.c | 91 +++-- source3/lib/background.c | 8 + source3/libsmb/namequery.c | 102 ++++-- source3/libsmb/smbsock_connect.c | 101 +++++- source3/libsmb/unexpected.c | 203 ++++++------ source3/smbd/pysmbd.c | 2 +- source3/wscript_build | 9 +- source4/libcli/raw/clisocket.c | 59 +++- source4/ntvfs/posix/python/pyposix_eadb.c | 2 +- 32 files changed, 831 insertions(+), 635 deletions(-) copy lib/tdb/ABI/{tdb-1.3.5.sigs => tdb-1.3.6.sigs} (100%) copy lib/tevent/ABI/{tevent-0.9.21.sigs => tevent-0.9.25.sigs} (100%) Changeset truncated at 500 lines: diff --git a/buildtools/wafsamba/samba_autoconf.py b/buildtools/wafsamba/samba_autoconf.py index 4f646fd..c5f132c 100644 --- a/buildtools/wafsamba/samba_autoconf.py +++ b/buildtools/wafsamba/samba_autoconf.py @@ -229,7 +229,18 @@ def CHECK_DECLS(conf, vars, reverse=False, headers=None, always=False): headers=headers, msg='Checking for declaration of %s' % v, always=always): - ret = False + if not CHECK_CODE(conf, + ''' + return (int)%s; + ''' % (v), + execute=False, + link=False, + msg='Checking for declaration of %s (as enum)' % v, + local_include=False, + headers=headers, + define=define, + always=always): + ret = False return ret diff --git a/buildtools/wafsamba/samba_python.py b/buildtools/wafsamba/samba_python.py index 8b20066..fb378ae 100644 --- a/buildtools/wafsamba/samba_python.py +++ b/buildtools/wafsamba/samba_python.py @@ -109,7 +109,6 @@ def SAMBA_PYTHON(bld, name, target_type='PYTHON', install_path='${PYTHONARCHDIR}', allow_undefined_symbols=True, - allow_warnings=True, install=install, enabled=enabled) diff --git a/ctdb/ib/ibwrapper.c b/ctdb/ib/ibwrapper.c index 3daab3e..51d39da 100644 --- a/ctdb/ib/ibwrapper.c +++ b/ctdb/ib/ibwrapper.c @@ -134,16 +134,16 @@ static int ibw_ctx_priv_destruct(struct ibw_ctx_priv *pctx) { DEBUG(DEBUG_DEBUG, ("ibw_ctx_priv_destruct(%p)\n", pctx)); + /* + * tevent_fd must be removed before the fd is closed + */ + TALLOC_FREE(pctx->cm_channel_event); + /* destroy cm */ if (pctx->cm_channel) { rdma_destroy_event_channel(pctx->cm_channel); pctx->cm_channel = NULL; } - if (pctx->cm_channel_event) { - /* TODO: do we have to do this here? */ - talloc_free(pctx->cm_channel_event); - pctx->cm_channel_event = NULL; - } if (pctx->cm_id) { rdma_destroy_id(pctx->cm_id); pctx->cm_id = NULL; @@ -166,6 +166,11 @@ static int ibw_conn_priv_destruct(struct ibw_conn_priv *pconn) /* pconn->wr_index is freed by talloc */ /* pconn->wr_index[i] are freed by talloc */ + /* + * tevent_fd must be removed before the fd is closed + */ + TALLOC_FREE(pconn->verbs_channel_event); + /* destroy verbs */ if (pconn->cm_id!=NULL && pconn->cm_id->qp!=NULL) { rdma_destroy_qp(pconn->cm_id); @@ -182,12 +187,6 @@ static int ibw_conn_priv_destruct(struct ibw_conn_priv *pconn) pconn->verbs_channel = NULL; } - /* must be freed here because its order is important */ - if (pconn->verbs_channel_event) { - talloc_free(pconn->verbs_channel_event); - pconn->verbs_channel_event = NULL; - } - /* free memory regions */ ibw_free_mr(&pconn->buf_send, &pconn->mr_send); ibw_free_mr(&pconn->buf_recv, &pconn->mr_recv); diff --git a/ctdb/server/ctdb_ltdb_server.c b/ctdb/server/ctdb_ltdb_server.c index 8cf7180..c94e1d5 100644 --- a/ctdb/server/ctdb_ltdb_server.c +++ b/ctdb/server/ctdb_ltdb_server.c @@ -115,11 +115,6 @@ static int ctdb_ltdb_store_server(struct ctdb_db_context *ctdb_db, * fails. So storing the empty record makes sure that we do not * need to change the client code. */ - if ((header->flags & CTDB_REC_FLAG_VACUUM_MIGRATED) && - (ctdb_db->ctdb->pnn == header->dmaster)) { - keep = true; - schedule_for_deletion = true; - } if (!(header->flags & CTDB_REC_FLAG_VACUUM_MIGRATED)) { keep = true; } else if (ctdb_db->ctdb->pnn != header->dmaster) { diff --git a/lib/async_req/async_sock.c b/lib/async_req/async_sock.c index ee91b8f..03bda58 100644 --- a/lib/async_req/async_sock.c +++ b/lib/async_req/async_sock.c @@ -33,188 +33,10 @@ #include "lib/util/tevent_unix.h" #include "lib/util/samba_util.h" -#ifndef TALLOC_FREE -#define TALLOC_FREE(ctx) do { talloc_free(ctx); ctx=NULL; } while(0) -#endif - -struct sendto_state { - int fd; - const void *buf; - size_t len; - int flags; - const struct sockaddr_storage *addr; - socklen_t addr_len; - ssize_t sent; -}; - -static void sendto_handler(struct tevent_context *ev, - struct tevent_fd *fde, - uint16_t flags, void *private_data); - -struct tevent_req *sendto_send(TALLOC_CTX *mem_ctx, struct tevent_context *ev, - int fd, const void *buf, size_t len, int flags, - const struct sockaddr_storage *addr) -{ - struct tevent_req *result; - struct sendto_state *state; - struct tevent_fd *fde; - - result = tevent_req_create(mem_ctx, &state, struct sendto_state); - if (result == NULL) { - return result; - } - state->fd = fd; - state->buf = buf; - state->len = len; - state->flags = flags; - state->addr = addr; - - switch (addr->ss_family) { - case AF_INET: - state->addr_len = sizeof(struct sockaddr_in); - break; -#if defined(HAVE_IPV6) - case AF_INET6: - state->addr_len = sizeof(struct sockaddr_in6); - break; -#endif - case AF_UNIX: - state->addr_len = sizeof(struct sockaddr_un); - break; - default: - state->addr_len = sizeof(struct sockaddr_storage); - break; - } - - fde = tevent_add_fd(ev, state, fd, TEVENT_FD_WRITE, sendto_handler, - result); - if (fde == NULL) { - TALLOC_FREE(result); - return NULL; - } - return result; -} - -static void sendto_handler(struct tevent_context *ev, - struct tevent_fd *fde, - uint16_t flags, void *private_data) -{ - struct tevent_req *req = talloc_get_type_abort( - private_data, struct tevent_req); - struct sendto_state *state = - tevent_req_data(req, struct sendto_state); - - state->sent = sendto(state->fd, state->buf, state->len, state->flags, - (const struct sockaddr *)state->addr, - state->addr_len); - if ((state->sent == -1) && (errno == EINTR)) { - /* retry */ - return; - } - if (state->sent == -1) { - tevent_req_error(req, errno); - return; - } - tevent_req_done(req); -} - -ssize_t sendto_recv(struct tevent_req *req, int *perrno) -{ - struct sendto_state *state = - tevent_req_data(req, struct sendto_state); - - if (tevent_req_is_unix_error(req, perrno)) { - return -1; - } - return state->sent; -} - -struct recvfrom_state { - int fd; - void *buf; - size_t len; - int flags; - struct sockaddr_storage *addr; - socklen_t *addr_len; - ssize_t received; -}; - -static void recvfrom_handler(struct tevent_context *ev, - struct tevent_fd *fde, - uint16_t flags, void *private_data); - -struct tevent_req *recvfrom_send(TALLOC_CTX *mem_ctx, - struct tevent_context *ev, - int fd, void *buf, size_t len, int flags, - struct sockaddr_storage *addr, - socklen_t *addr_len) -{ - struct tevent_req *result; - struct recvfrom_state *state; - struct tevent_fd *fde; - - result = tevent_req_create(mem_ctx, &state, struct recvfrom_state); - if (result == NULL) { - return result; - } - state->fd = fd; - state->buf = buf; - state->len = len; - state->flags = flags; - state->addr = addr; - state->addr_len = addr_len; - - fde = tevent_add_fd(ev, state, fd, TEVENT_FD_READ, recvfrom_handler, - result); - if (fde == NULL) { - TALLOC_FREE(result); - return NULL; - } - return result; -} - -static void recvfrom_handler(struct tevent_context *ev, - struct tevent_fd *fde, - uint16_t flags, void *private_data) -{ - struct tevent_req *req = talloc_get_type_abort( - private_data, struct tevent_req); - struct recvfrom_state *state = - tevent_req_data(req, struct recvfrom_state); - - state->received = recvfrom(state->fd, state->buf, state->len, - state->flags, (struct sockaddr *)state->addr, - state->addr_len); - if ((state->received == -1) && (errno == EINTR)) { - /* retry */ - return; - } - if (state->received == 0) { - tevent_req_error(req, EPIPE); - return; - } - if (state->received == -1) { - tevent_req_error(req, errno); - return; - } - tevent_req_done(req); -} - -ssize_t recvfrom_recv(struct tevent_req *req, int *perrno) -{ - struct recvfrom_state *state = - tevent_req_data(req, struct recvfrom_state); - - if (tevent_req_is_unix_error(req, perrno)) { - return -1; - } - return state->received; -} - struct async_connect_state { int fd; + struct tevent_fd *fde; int result; - int sys_errno; long old_sockflags; socklen_t address_len; struct sockaddr_storage address; @@ -224,6 +46,8 @@ struct async_connect_state { void *private_data; }; +static void async_connect_cleanup(struct tevent_req *req, + enum tevent_req_state req_state); static void async_connect_connected(struct tevent_context *ev, struct tevent_fd *fde, uint16_t flags, void *priv); @@ -248,13 +72,11 @@ struct tevent_req *async_connect_send( void (*after_connect)(void *private_data), void *private_data) { - struct tevent_req *result; + struct tevent_req *req; struct async_connect_state *state; - struct tevent_fd *fde; - result = tevent_req_create( - mem_ctx, &state, struct async_connect_state); - if (result == NULL) { + req = tevent_req_create(mem_ctx, &state, struct async_connect_state); + if (req == NULL) { return NULL; } @@ -264,20 +86,22 @@ struct tevent_req *async_connect_send( */ state->fd = fd; - state->sys_errno = 0; state->before_connect = before_connect; state->after_connect = after_connect; state->private_data = private_data; state->old_sockflags = fcntl(fd, F_GETFL, 0); if (state->old_sockflags == -1) { - goto post_errno; + tevent_req_error(req, errno); + return tevent_req_post(req, ev); } + tevent_req_set_cleanup_fn(req, async_connect_cleanup); + state->address_len = address_len; if (address_len > sizeof(state->address)) { - errno = EINVAL; - goto post_errno; + tevent_req_error(req, EINVAL); + return tevent_req_post(req, ev); } memcpy(&state->address, address, address_len); @@ -294,8 +118,8 @@ struct tevent_req *async_connect_send( } if (state->result == 0) { - tevent_req_done(result); - goto done; + tevent_req_done(req); + return tevent_req_post(req, ev); } /** @@ -310,23 +134,31 @@ struct tevent_req *async_connect_send( errno == EISCONN || #endif errno == EAGAIN || errno == EINTR)) { - state->sys_errno = errno; - goto post_errno; + tevent_req_error(req, errno); + return tevent_req_post(req, ev); } - fde = tevent_add_fd(ev, state, fd, TEVENT_FD_READ | TEVENT_FD_WRITE, - async_connect_connected, result); - if (fde == NULL) { - state->sys_errno = ENOMEM; - goto post_errno; + state->fde = tevent_add_fd(ev, state, fd, + TEVENT_FD_READ | TEVENT_FD_WRITE, + async_connect_connected, req); + if (state->fde == NULL) { + tevent_req_error(req, ENOMEM); + return tevent_req_post(req, ev); } - return result; + return req; +} - post_errno: - tevent_req_error(result, state->sys_errno); - done: - fcntl(fd, F_SETFL, state->old_sockflags); - return tevent_req_post(result, ev); +static void async_connect_cleanup(struct tevent_req *req, + enum tevent_req_state req_state) +{ + struct async_connect_state *state = + tevent_req_data(req, struct async_connect_state); + + TALLOC_FREE(state->fde); + if (state->fd != -1) { + fcntl(state->fd, F_SETFL, state->old_sockflags); + state->fd = -1; + } } /** @@ -359,8 +191,6 @@ static void async_connect_connected(struct tevent_context *ev, } if (ret == 0) { - state->sys_errno = 0; - TALLOC_FREE(fde); tevent_req_done(req); return; } @@ -368,36 +198,26 @@ static void async_connect_connected(struct tevent_context *ev, /* Try again later, leave the fde around */ return; } - state->sys_errno = errno; - TALLOC_FREE(fde); tevent_req_error(req, errno); return; } int async_connect_recv(struct tevent_req *req, int *perrno) { - struct async_connect_state *state = - tevent_req_data(req, struct async_connect_state); - int err; + int err = tevent_req_simple_recv_unix(req); - fcntl(state->fd, F_SETFL, state->old_sockflags); - - if (tevent_req_is_unix_error(req, &err)) { + if (err != 0) { *perrno = err; return -1; } - if (state->sys_errno == 0) { - return 0; - } - - *perrno = state->sys_errno; - return -1; + return 0; } struct writev_state { struct tevent_context *ev; int fd; + struct tevent_fd *fde; struct iovec *iov; int count; size_t total_size; @@ -405,6 +225,8 @@ struct writev_state { bool err_on_readability; }; +static void writev_cleanup(struct tevent_req *req, + enum tevent_req_state req_state); static void writev_trigger(struct tevent_req *req, void *private_data); static void writev_handler(struct tevent_context *ev, struct tevent_fd *fde, uint16_t flags, void *private_data); @@ -427,40 +249,46 @@ struct tevent_req *writev_send(TALLOC_CTX *mem_ctx, struct tevent_context *ev, state->count = count; state->iov = (struct iovec *)talloc_memdup( state, iov, sizeof(struct iovec) * count); - if (state->iov == NULL) { - goto fail; + if (tevent_req_nomem(state->iov, req)) { + return tevent_req_post(req, ev); } state->flags = TEVENT_FD_WRITE|TEVENT_FD_READ; state->err_on_readability = err_on_readability; + tevent_req_set_cleanup_fn(req, writev_cleanup); + if (queue == NULL) { - struct tevent_fd *fde; - fde = tevent_add_fd(state->ev, state, state->fd, + state->fde = tevent_add_fd(state->ev, state, state->fd, state->flags, writev_handler, req); - if (tevent_req_nomem(fde, req)) { + if (tevent_req_nomem(state->fde, req)) { return tevent_req_post(req, ev); } return req; } if (!tevent_queue_add(queue, ev, req, writev_trigger, NULL)) { - goto fail; + tevent_req_nomem(NULL, req); + return tevent_req_post(req, ev); } return req; - fail: - TALLOC_FREE(req); - return NULL; -- Samba Shared Repository