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

324 Commits

Author SHA1 Message Date
Jelmer Vernooij
68cec4923a Add bindings for irpc_{add,remove}_name.
(This used to be commit a75dbdec15)
2008-05-26 00:50:07 +02:00
Jelmer Vernooij
2067fc60c5 Add tests for irpc python bindings.
(This used to be commit 1ce0632afe)
2008-05-25 16:47:12 +02:00
Jelmer Vernooij
48433e4351 Start building IRPC Python support.
(This used to be commit 5980c7bfd7)
2008-05-25 16:26:34 +02:00
Jelmer Vernooij
1b5acdb93b Initialize module.
(This used to be commit 3246258afb)
2008-05-24 18:25:27 +02:00
Jelmer Vernooij
453396c67b Initial work on IRPC Python support.
(This used to be commit df01b040f7)
2008-05-24 18:18:21 +02:00
Volker Lendecke
d817b43534 Fix a memleak in irpc_remove_name
First, even when length==0 tdb_fetch might return something. Second, for some
weird reason there might be less data than necessary for a single server id.
(This used to be commit 49b04ca7aa)
2008-05-19 15:59:54 +02:00
Jelmer Vernooij
333c169529 Use variables for source directory in remaining subsystems.
(This used to be commit 6b6b2196a8)
2008-05-18 20:30:46 +02:00
Simo Sorce
4e83011f72 Remove more event_context_init() uses from function calls within deep down the code.
Make sure we pass around the event_context where we need it instead.
All test but a few python ones fail. Jelmer promised to fix them.
(This used to be commit 3045d39162)
2008-04-21 18:12:33 -04:00
Andrew Bartlett
8eaf64b47b Now that we don't create a new event context, don't free it.
This previously would free the torture provided global event context.

Andrew Bartlett
(This used to be commit 664f2fc49f)
2008-04-16 09:02:12 +02:00
Jelmer Vernooij
ffc5cbfe80 Move object files lists to makefile rather than smb_build.
(This used to be commit 5628d58990)
2008-04-14 16:53:00 +02:00
Kai Blin
294c55faf6 IRPC: Add include guards for the header.
(This used to be commit 0e66e443ad)
2008-04-02 23:05:56 +02:00
Stefan Metzmacher
caea750810 messaging: fix a valgrind warning on 64bit hosts zero out padding
metze
(This used to be commit f555b8e4c3)
2008-03-15 12:21:06 +01:00
Andrew Bartlett
7e15e09f67 Fix a few more breakages from our recent changes to the server_id
structure.  The BASE-TORTURE test found this problem - caused because
the messaging path was not unique.

If we didn't use a macro for cluster_id_equal(), we could make it
opaque, and avoid this...

Andrew Bartlett
(This used to be commit c3387545c5)
2008-02-04 23:04:35 +11:00
Andrew Bartlett
77f71c1b65 Rework cluster_id() to take an additional argument, as we need
<node>.<pid>.<fd> to be unique in a prefork process environment.

Andrew Bartlett and David Disseldorp
(This used to be commit 931994a7f1)
2008-02-04 17:51:38 +11:00
Kai Blin
3c744ddd2c r26588: Janitorial: Rename torture_*_add_*test to torture_*_add_*test_const.
Also rename the corresponding wrap_ functions.
(This used to be commit e59c2eaf68)
2007-12-26 11:57:05 -06:00
Jelmer Vernooij
71e2cafe96 r26483: Merge ldb module dependency fixes, fix auth python module.
(This used to be commit 85eeecf997)
2007-12-21 05:50:41 +01:00
Jelmer Vernooij
84b4763947 r26441: Remove global_loadparm uses.
(This used to be commit 32007c6277)
2007-12-21 05:50:09 +01:00
Jelmer Vernooij
d1e716cf43 r26432: Require ndr_pull users to specify iconv_convenience.
(This used to be commit 28b1d36551)
2007-12-21 05:50:02 +01:00
Jelmer Vernooij
61873ce94c r26431: Require ndr_push creators to specify a iconv_convenience context.
(This used to be commit 7352206f44)
2007-12-21 05:50:00 +01:00
Jelmer Vernooij
6c77f353d3 r26328: remove more uses of global_loadparm.
(This used to be commit 40ae12c086)
2007-12-21 05:48:41 +01:00
Jelmer Vernooij
2f8dc4f48f r26266: Remove more global_loadparm uses.
(This used to be commit 99113075c4)
2007-12-21 05:47:42 +01:00
Jelmer Vernooij
ca0b72a1fd r26003: Split up DB_WRAP, as first step in an attempt to sanitize dependencies.
(This used to be commit 56dfcb4f2f)
2007-12-21 05:45:40 +01:00
Stefan Metzmacher
529763a9aa r25920: ndr: change NTSTAUS into enum ndr_err_code (samba4 callers)
lib/messaging/
lib/registry/
lib/ldb-samba/
librpc/rpc/
auth/auth_winbind.c
auth/gensec/
auth/kerberos/
dsdb/repl/
dsdb/samdb/
dsdb/schema/
torture/
cluster/ctdb/
kdc/
ntvfs/ipc/
torture/rap/
ntvfs/
utils/getntacl.c
ntptr/
smb_server/
libcli/wrepl/
wrepl_server/
libcli/cldap/
libcli/dgram/
libcli/ldap/
libcli/raw/
libcli/nbt/
libnet/
winbind/
rpc_server/

metze
(This used to be commit 6223c7fddc)
2007-12-21 05:45:02 +01:00
Jelmer Vernooij
f924ac9744 r25902: Move messaging tests to same directory as code.
(This used to be commit d174dcbb76)
2007-12-21 05:44:45 +01:00
Jelmer Vernooij
2f3551ca7c r25446: Merge some changes I made on the way home from SFO:
2007-09-29 More higher-level passing around of lp_ctx.
2007-09-29 Fix warning.
2007-09-29 Pass loadparm contexts on a higher level.
2007-09-29 Avoid using global loadparm context.
(This used to be commit 3468952e77)
2007-10-10 15:07:34 -05:00
Jelmer Vernooij
7e297ecfa4 r25047: Fix more warnings.
(This used to be commit 69de86d2d2)
2007-10-10 15:05:49 -05:00
Jelmer Vernooij
ffeee68e4b r25026: Move param/param.h out of includes.h
(This used to be commit abe8349f9b)
2007-10-10 15:05:38 -05:00
Jelmer Vernooij
cd962355ab r25000: Fix some more C++ compatibility warnings.
(This used to be commit 08bb1ef643)
2007-10-10 15:05:27 -05:00
Jelmer Vernooij
ed8d04ead9 r24717: Some more easy bool conversions, update TODO for registry
(This used to be commit fc8771fb6a)
2007-10-10 15:02:55 -05:00
Jelmer Vernooij
61ffa08f4c r24712: No longer expose the 'BOOL' data type in any interfaces.
(This used to be commit 1ce32673d9)
2007-10-10 15:02:54 -05:00
Stefan Metzmacher
0d7d5a6d49 r24560: rename some DCERPC_ prefixes into NDR_
metze
(This used to be commit f874eca5da)
2007-10-10 15:02:15 -05:00
Stefan Metzmacher
f14bd1a90a r24557: rename 'dcerpc_table_' -> 'ndr_table_'
metze
(This used to be commit 84651aee81)
2007-10-10 15:02:15 -05:00
Stefan Metzmacher
b8cdadced4 r24551: rename dcerpc_interface_table -> ndr_interface_table
rename dcerpc_interface_list  -> ndr_interface_list

and move them to libndr.h

metze
(This used to be commit 4adbebef5d)
2007-10-10 15:02:12 -05:00
Andrew Tridgell
0479a2f1cb r23792: convert Samba4 to GPLv3
There are still a few tidyups of old FSF addresses to come (in both s3
and s4). More commits soon.
(This used to be commit fcf38a38ac)
2007-10-10 14:59:12 -05:00
Andrew Tridgell
de8b793050 r23153: a first cut at a fix for the dgram flood problem that volker
found. Not sure this is the best solution, but it should work.
(This used to be commit 80002cd12a)
2007-10-10 14:52:58 -05:00
Andrew Tridgell
145a9dd010 r23059: reject_free needs to be initialised
(This used to be commit ffb8b49316)
2007-10-10 14:52:45 -05:00
Stefan Metzmacher
68b531e817 r22748: fix memleaks by passing an mem_ctx to
irpc_servers_byname()

metze
(This used to be commit b54584dfab)
2007-10-10 14:52:09 -05:00
Stefan Metzmacher
de9768764d r22629: if irpc gets freed within event_loop_once() we crash...
so deferr the freeing

metze
(This used to be commit 3a30bc0d61)
2007-10-10 14:51:56 -05:00
Andrew Tridgell
8de4c33d8f r21256: - msg_type is not needed in the cluster messaging API
- merge ctdb_get_num_nodes() from bzr tree
(This used to be commit 3df7527aed)
2007-10-10 14:44:55 -05:00
Andrew Tridgell
a2eff69b4b r21233: first version of samba4 messaging using ctdb is working. This means we
should now work on a real cluster, and not just a localhost simulator
(This used to be commit f05072ad74)
2007-10-10 14:44:50 -05:00
Andrew Tridgell
07478016d7 r21230: added the hooks needed in the cluster layer and the messaging code for
handling messages to remote nodes. Implemented dummy functions in the
'local' cluster backend for the messaging hooks, and modified the
messaging layer to check if the destination is remote and redirect
messages via the cluster layer
(This used to be commit 4474552e8f)
2007-10-10 14:44:49 -05:00
Andrew Tridgell
1cd4339b9a r20646: first preparations for cluster enablement. This changes "
uint32_t server_id
to
  struct server_id server_id;

which allows a server ID to have an node number. The node number will
be zero in non-clustered case. This is the most basic hook needed for
clustering, and ctdb.
(This used to be commit 2365abaa99)
2007-10-10 14:37:23 -05:00
Jelmer Vernooij
c81f2930a2 r19676: Fix some more dependencies.
(This used to be commit 8768bec81f)
2007-10-10 14:25:29 -05:00
Andrew Tridgell
af870da619 r19428: moved tdbutil.c from lib/tdb/common/ to lib/util/util_tdb.c
tdbutil.c is Samba specific, so should not be part of the generic tdb
library
(This used to be commit 979dd24f5e)
2007-10-10 14:21:30 -05:00
Jelmer Vernooij
0329d755a7 r17930: Merge noinclude branch:
* Move dlinklist.h, smb.h to subsystem-specific directories
 * Clean up ads.h and move what is left of it to dsdb/
   (only place where it's used)
(This used to be commit f7afa1cb77)
2007-10-10 14:16:54 -05:00
Andrew Tridgell
971d30bb20 r15854: more talloc_set_destructor() typesafe fixes
(This used to be commit 61c6100617)
2007-10-10 14:08:32 -05:00
Andrew Bartlett
c2cc10c786 r15356: Remove unused 'flags' argument from socket_send() and friends.
This is in preperation for making TLS a socket library.

Andrew Bartlett
(This used to be commit a312812b92)
2007-10-10 14:05:25 -05:00
Jelmer Vernooij
8d137d9785 r15295: Fix some dependencies
Move unistr-specific code to lib/charset/. Remove _m from some places where it's not needed.
(This used to be commit 03224e1124)
2007-10-10 14:05:03 -05:00
Jelmer Vernooij
69b51f702a r15207: Introduce PRIVATE_DEPENDENCIES and PUBLIC_DEPENDENCIES as replacement
for REQUIRED_SUBSYSTEMS.
(This used to be commit adc8a019b6)
2007-10-10 14:04:18 -05:00
Stefan Metzmacher
4f972f5c33 r15055: this was my version for the crash bug in the messaging code...
it also makes the function a bit shorter and clearer,
as the tmp msg_types only have one handler and not a list

metze
(This used to be commit 7e709fd04d)
2007-10-10 14:04:04 -05:00
Andrew Tridgell
35cb099357 r15050: fixed a double free in the new messaging code.
(This used to be commit ee7869bb3c)
2007-10-10 14:04:03 -05:00
Andrew Tridgell
c8610144f7 r15049: for really efficient oplock handling with thousands of open files we
will need a separate messaging endpoint per open file. To make this
efficient extend the messaging layer to have a new registration
function for temporary message types that maps via an idtree.

I have updated the LOCAL-MESSAGING test to use the new function.
(This used to be commit 4b976851d8)
2007-10-10 14:04:03 -05:00
Andrew Tridgell
289911bb4e r15048: started on the server side implementation of oplocks. The code is not
functional yet, I'm committing so it doesn't diverge too much from
other peoples work. It is disabled by default.
(This used to be commit ba0b8a218d)
2007-10-10 14:04:03 -05:00
Jelmer Vernooij
42da534d66 r14735: Use dcerpc_syntax_id rather then seperate GUID + if_version everywhere
(This used to be commit a316b33057)
2007-10-10 13:59:17 -05:00
Andrew Tridgell
3434cd778c r14616: added notify change support to the posix backend
It doesn't fully work yet, and doesn't yet have all the efficiency
that is planned, but it doesn't break anything and I wanted to get the
code in the tree to minimise the chance of collisions with the work
metze is doing.
(This used to be commit 1624ea88e6)
2007-10-10 13:59:02 -05:00
Jelmer Vernooij
c84cfc0ecc r14554: Write out header dependencies. This means all C files affected will be
rebuilt when a header file is changed. It also means parallel builds work now.

It will take a minute or so to generate all the dependency information,
but there should be no need to rebuild that information later on, unless
a file changes.

This behaviour is only enabled when building in developer mode
(--enable-developer) and requires a GNU make (or compatible). In all other
cases, the file 'static_deps.mk' is included, which contains some basic
hardcoded dependency information.
(This used to be commit eb435386f0)
2007-10-10 13:58:45 -05:00
Jelmer Vernooij
35349a58df r14542: Remove librpc, libndr and libnbt from includes.h
(This used to be commit 51b4270513)
2007-10-10 13:58:42 -05:00
Jelmer Vernooij
71b4fd9792 r14477: Remove the NOPROTO property - it's no longer used as proto.h is gone.
(This used to be commit 9c37f847d3)
2007-10-10 13:57:30 -05:00
Jelmer Vernooij
f8fdbc967c r13944: Yet another round of splitups.
(This used to be commit f87debeb12)
2007-10-10 13:52:31 -05:00
Andrew Bartlett
34aa19cafe r13317: Create a new function messaging_client_init() which can be used when
we don't have a server messaging context.  We should replace the
datagram messages with stream sockets in this case, so we don't have
to create a unique socket.

Andrew Bartlett
(This used to be commit fd974fb647)
2007-10-10 13:51:43 -05:00
Andrew Bartlett
f55ea8bb3d r12804: This patch reworks the Samba4 sockets layer to use a socket_address
structure that is more generic than just 'IP/port'.

It now passes make test, and has been reviewed and updated by
metze. (Thankyou *very* much).

This passes 'make test' as well as kerberos use (not currently in the
testsuite).

The original purpose of this patch was to have Samba able to pass a
socket address stucture from the BSD layer into the kerberos routines
and back again.   It also removes nbt_peer_addr, which was being used
for a similar purpose.

It is a large change, but worthwhile I feel.

Andrew Bartlett
(This used to be commit 88198c4881)
2007-10-10 13:49:57 -05:00
Andrew Tridgell
dc0dde70d8 r12783: add a comment about matching more than 1 handler per message (andrew
thought this might be a bug)
(This used to be commit e1cd3f4b89)
2007-10-10 13:49:54 -05:00
Jelmer Vernooij
78c50015bb r12694: Move some headers to the directory of the subsystem they belong to.
(This used to be commit c722f665c9)
2007-10-10 13:49:39 -05:00
Jelmer Vernooij
d4de4c2d21 r12608: Remove some unused #include lines.
(This used to be commit 70e7449318)
2007-10-10 13:49:03 -05:00
Jelmer Vernooij
d658de65d3 r12512: Use GUID structs in API functions everywhere rather then converting back and
forth between GUID structs and strings in several places.
(This used to be commit 3564e2f967)
2007-10-10 13:47:48 -05:00
Jelmer Vernooij
d8e35f8828 r12498: Eliminate INIT_OBJ_FILES and ADD_OBJ_FILES. We were not using
the difference between these at all, and in the future the
fact that INIT_OBJ_FILES include smb_build.h will be sufficient to
have recompiles at the right time.
(This used to be commit b24f2583ed)
2007-10-10 13:47:45 -05:00
Stefan Metzmacher
150848248a r12014: free the irpc_request structure with the irpc_call_recv functions,
to match all other _recv functions we have

metze
(This used to be commit bd4f85ab5f)
2007-10-10 13:46:59 -05:00
Jelmer Vernooij
4c5a4a7e02 r11244: Relative path names in .mk files
(This used to be commit 24e1030090)
2007-10-10 13:45:06 -05:00
Jelmer Vernooij
f4d590662e r11214: Remove scons files (see http://lists.samba.org/archive/samba-technical/2005-October/043443.html)
(This used to be commit 7fffc5c917)
2007-10-10 13:45:03 -05:00
Jelmer Vernooij
5058f4b9e8 r10586: Add MergedObject() builder. Default to Library() rather
then StaticLibrary()
(This used to be commit b53313dc51)
2007-10-10 13:39:08 -05:00
Andrew Tridgell
06085e7bc0 r10490: - allow deferred irpc replies to set the status
- add an example of deferred reply for echodata in LOCAL-IRPC
(This used to be commit 858a757a6d)
2007-10-10 13:38:54 -05:00
Andrew Tridgell
87f71eb8ad r10489: added the ability for irpc server to defer replies instead of replying
immediately. They set m->defer_reply = True;
(This used to be commit 3dcd800a5d)
2007-10-10 13:38:54 -05:00
Andrew Bartlett
51cbc188df r10402: Make the RPC-SAMLOGON test pass against Win2k3 SP0 again.
I still have issues with Win2k3 SP1, and Samba4 doesn't pass it's own
test for the moment, but I'm working on these issues :-)

This required a change to the credentials API, so that the special
case for NTLM logins using a principal was indeed handled as a
special, not general case.

Also don't set the realm from a ccache, as then it overrides --option=realm=.

Andrew Bartlett
(This used to be commit 194e8f07c0)
2007-10-10 13:38:39 -05:00
Jelmer Vernooij
6812c73534 r10348: Add scons scripts for remaining subsystems. Most subsystems build now,
but final linking still fails (as does generating files asn1, et, idl and proto
files)
(This used to be commit 4f0d7f75b9)
2007-10-10 13:38:30 -05:00
Jelmer Vernooij
5b02ee9b9d r10336: Add sconscript for a couple more subsystems.
(This used to be commit 59d4450453)
2007-10-10 13:38:29 -05:00
Jelmer Vernooij
b1c3c66ead r10332: Fix the build - messaging uses UNIX_PRIVS
(This used to be commit df4a923c64)
2007-10-10 13:38:28 -05:00
Andrew Tridgell
08b2b7e3e1 r8923: put the IRPC default timeout back to 10s (I didn't mean to commit this, it was
changed just for deugging)
(This used to be commit a7c260e61f)
2007-10-10 13:30:58 -05:00
Andrew Tridgell
fc58570940 r8887: fixed the irpc error that caused ia64 to fail the LOCAL-IRPC test
(This used to be commit ce9a262d37)
2007-10-10 13:30:15 -05:00
Andrew Tridgell
ba759b4c86 r8819: fixed a memory leak in irpc_call()
(This used to be commit 25b7524ce5)
2007-10-10 13:30:08 -05:00
Andrew Tridgell
7ee2babcfe r8587: - fixed ref allocation in irpc replies
- make every irpc server support the irpc_uptime() call
(This used to be commit eee9044826)
2007-10-10 13:29:42 -05:00
Andrew Tridgell
e835621799 r8520: fixed a pile of warnings from the build farm gcc -Wall output on
S390. This is an attempt to avoid the panic we're seeing in the
automatic builds.

The main fixes are:

 - assumptions that sizeof(size_t) == sizeof(int), mostly in printf formats

 - use of NULL format statements to perform dn searches.

 - assumption that sizeof() returns an int
(This used to be commit a58ea6b385)
2007-10-10 13:29:34 -05:00
Andrew Tridgell
056096c30b r8284: - fixed some uninitialised variables in the irpc code
- added code to send multiple irpc calls in parallel, to all servers
  that have registered the given name, with output going in
  io.results[i]. This allows you to make rpc calls to multiple servers
  at once, which is needed for clients like smbstatus
(This used to be commit 061e20e509)
2007-10-10 13:19:31 -05:00
Andrew Tridgell
d084d6d241 r8279: make sure we hold a lock when manipulating the irpc names db
(This used to be commit 9c408d5d7c)
2007-10-10 13:19:30 -05:00
Andrew Tridgell
144b88b3a0 r8277: filled in the code for finding irpc server ids by name, storing the
names in a tdb
(This used to be commit b603a52f27)
2007-10-10 13:19:30 -05:00
Andrew Tridgell
c6881d1e65 r8272: added the hooks for adding a name to a messaging context, so we will
be able to send a message to the "ldap_server" task without having to
know its task ID.
(This used to be commit 8f69867867)
2007-10-10 13:19:29 -05:00
Stefan Metzmacher
4a8c3a9e62 r8042: give better error message
metze
(This used to be commit 70118e9529)
2007-10-10 13:19:02 -05:00
Jelmer Vernooij
66a52992ff r7850: Support mkdir() with just one parameter. Patch from
Steven Edwards <steven_ed4153@yahoo.com>.

I've moved the Win32-specific tests to win32.m4 so it does not
make any of the POSIX configure stuff more complicated.
(This used to be commit bf85fdd015)
2007-10-10 13:18:42 -05:00
Andrew Tridgell
0093e1b62c r7320: added support for a private pointer in irpc registered handlers
(This used to be commit eec521dffd)
2007-10-10 13:17:41 -05:00
Andrew Tridgell
37fdb858b0 r7298: ensure messages are sent in order even when under extreme load. This
fixes a IO_TIMEOUT problem in the messaging benchmarks
(This used to be commit c8b220b65d)
2007-10-10 13:17:38 -05:00
Andrew Tridgell
b4a95b949e r7296: avoid two stat() calls per message. This increases the raw message
rate from 20k/sec to 55k/sec. The irpc rate goes from 16k/sec to
34k/sec.

I should have run strace -T on this a long time ago.
(This used to be commit b9281668bb)
2007-10-10 13:17:38 -05:00
Andrew Tridgell
d934cb71d0 r7295: added an irpc benchmark. It gets about 16k messages/sec on my laptop,
compared to about 20k messages/sec for the raw messaging layer. I
think that is quite acceptable given the extra functionality.
(This used to be commit a05d38d1d9)
2007-10-10 13:17:38 -05:00
Andrew Tridgell
bf1ffa283c r7294: implemented the irpc messaging system. This is the core of the
management system I proposed on samba-technical a couple of days
ago. Essentially it is a very lightweight way for any code in Samba to
make IDL based rpc calls to anywhere else in the code, without the
client or server having to go to the trouble of setting up a full rpc
service.

It can be used with any of our existing IDL, but I expect it will
mostly be used for a new set of Samba specific management calls.

The LOCAL-IRPC torture test demonstrates how it can be used by calling
the echo_AddOne() call over this transport.
(This used to be commit 3d589a0995)
2007-10-10 13:17:37 -05:00
Andrew Tridgell
a8feef8d36 r7228: use socket_pending() instead of the direct ioctl in the messaging code
(This used to be commit ca3c4e9617)
2007-10-10 13:17:28 -05:00
Andrew Tridgell
f1ade86d75 r7211: - use ioctl(FIONREAD) to remove the artificial limit on messaging size
- avoid a memcpy
(This used to be commit 753839c358)
2007-10-10 13:17:26 -05:00
Andrew Tridgell
dd43abbd32 r7206: changed the messaging library to use sendto instead of a connected
send on the unix domain datagram socket. This gains us about 50% in
speed, and also means that we don't run the risk of running out of
file descriptors due to heavy messaging traffic. We now use a single
file descriptor no matter how many messages are pending to any number
of servers.
(This used to be commit 2369170fc1)
2007-10-10 13:17:26 -05:00
Andrew Tridgell
fc5c075cff r6578: brown paper bag time with the new messaging code ....
(This used to be commit d465ff67bd)
2007-10-10 13:16:27 -05:00
Andrew Tridgell
7282ddda0a r6561: re-did the internal message system based on DGRAM unix domain
sockets. This gains us about 40% in messaging speed.
(This used to be commit f244a64ed5)
2007-10-10 13:16:25 -05:00
Andrew Tridgell
bed7c9ec32 r5304: removed lib/socket/socket.h from includes.h
(This used to be commit b902ea546d)
2007-10-10 13:09:39 -05:00
Andrew Tridgell
e82aad1ce3 r5298: - got rid of pstring.h from includes.h. This at least makes it a bit
less likely that anyone will use pstring for new code

 - got rid of winbind_client.h from includes.h. This one triggered a
   huge change, as winbind_client.h was including system/filesys.h and
   defining the old uint32 and uint16 types, as well as its own
   pstring and fstring.
(This used to be commit 9db6c79e90)
2007-10-10 13:09:38 -05:00
Andrew Tridgell
131dc76d56 r5197: moved events code to lib/events/ (suggestion from metze)
(This used to be commit 7f54c8a339)
2007-10-10 13:09:30 -05:00
Andrew Tridgell
0798d54b4f r5195: most events don't need the time of the event, so save a gettimeofday() call
and just use timeval_current() when its actually needed
(This used to be commit 236403cc4d)
2007-10-10 13:09:30 -05:00
Andrew Tridgell
66170ef8b3 r5185: make all the events data structures private to events.c. This will
make it possible to add optimisations to the events code such as
keeping the next timed event in a sorted list, and using epoll for
file descriptor events.

I also removed the loop events code, as it wasn't being used anywhere,
and changed timed events to always be one-shot (as adding a new timed
event in the event handler is so easy to do if needed)
(This used to be commit d7b4b6de51)
2007-10-10 13:09:29 -05:00
Andrew Tridgell
55d4d36993 r5102: This is a major simplification of the logic for controlling top level
servers in smbd. The old code still contained a fairly bit of legacy
from the time when smbd was only handling SMB connection. The new code
gets rid of all of the smb_server specific code in smbd/, and creates
a much simpler infrastructures for new server code.

Major changes include:

 - simplified the process model code a lot.

 - got rid of the top level server and service structures
   completely. The top level context is now the event_context. This
   got rid of service.h and server.h completely (they were the most
   confusing parts of the old code)

 - added service_stream.[ch] for the helper functions that are
   specific to stream type services (services that handle streams, and
   use a logically separate process per connection)

 - got rid of the builtin idle_handler code in the service logic, as
   none of the servers were using it, and it can easily be handled by
   a server in future by adding its own timed_event to the event
   context.

 - fixed some major memory leaks in the rpc server code.

 - added registration of servers, rather than hard coding our list of
   possible servers. This allows for servers as modules in the future.

 - temporarily disabled the winbind code until I add the helper
   functions for that type of server

 - added error checking on service startup. If a configured server
   fails to startup then smbd doesn't startup.

 - cleaned up the command line handling in smbd, removing unused options
(This used to be commit cf6a46c3cb)
2007-10-10 13:09:22 -05:00
Andrew Tridgell
759da3b915 r5037: got rid of all of the TALLOC_DEPRECATED stuff. My apologies for the
large commit. I thought this was worthwhile to get done for
consistency.
(This used to be commit ec32b22ed5)
2007-10-10 13:09:15 -05:00
Andrew Tridgell
6c14b0133d r4944: every event_add_*() caller was having to call talloc_steal() to take
control of the event, so instead build that into the function. If you
pass NULL as mem_ctx then it leaves it as a child of the events
structure.
(This used to be commit 7f981b9ed9)
2007-10-10 13:09:08 -05:00
Andrew Tridgell
fd62df6418 r4943: Smplified the events handling code a lot. The first source of
complexity was that events didn't automatically cleanup
themselves. This was because the events code was written before we had
talloc destructors, so you needed to call event_remove_XX() to clean
the event out of the event lists from every piece of code that used
events. I have now added automatic event destructors, which in turn
allowed me to simplify a lot of the calling code.

The 2nd source of complexity was caused by the ref_count, which was
needed to cope with event handlers destroying events while handling
them, which meant the linked lists became invalid, so the ref_count ws
used to mark events for later destruction.

The new system is much simpler. I now have a ev->destruction_count,
which is incremented in all event destructors. The event dispatch code
checks for changes to this and handles it.
(This used to be commit a3c7417cfe)
2007-10-10 13:09:08 -05:00
Stefan Metzmacher
cfc10f2a83 r4727: add a reference to the event context
to that the destructor don't double free the registered events
when the event context is first in the talloc_free() hierarchie

fixes a bug with process_model_thread and the talloc_steal(conn, ev)

metze
(This used to be commit 05c3d1c4a6)
2007-10-10 13:08:49 -05:00
Stefan Metzmacher
9112a632f6 r4063: - change char * -> uint8_t in struct request_buffer
- change smbcli_read/write to take void * for the buffers to match read(2)/write(2)

all this fixes a lot of gcc-4 warnings

metze
(This used to be commit b94f92bc66)
2007-10-10 13:06:21 -05:00
Jelmer Vernooij
8e16d8a76f r3733: More build system fixes/features:
- Use .mk files directly (no need for a SMB_*_MK() macro when adding a new SUBSYSTEM, MODULE or BINARY). This allows addition of new modules and subsystems without running configure
 - Add support for generating .dot files with the Samba4 dependency tree (as used by the graphviz and springgraph utilities)
(This used to be commit 64826da834)
2007-10-10 13:05:47 -05:00
Andrew Tridgell
dde0705807 r3507: - added deferred replies on sharing violation in pvfs open. The
deferred reply is short-circuited immediately when the file is
  closed by another user, allowing it to be opened by the waiting user.

- added a sane set of timeval manipulation routines

- converted all the events code and code that uses it to use struct
  timeval instead of time_t, which allows for microsecond resolution
  instead of 1 second resolution. This was needed for doing the pvfs
  deferred open code, and is why the patch is so big.
(This used to be commit 0d51511d40)
2007-10-10 13:05:23 -05:00
Andrew Tridgell
a99b6219a8 r3481: split out client.h and events.h
(This used to be commit c6f4865744)
2007-10-10 13:05:20 -05:00
Andrew Tridgell
3643fb1109 r3463: separated out some more headers (asn_1.h, messages.h, dlinklist.h and ioctl.h)
(This used to be commit b97e395c81)
2007-10-10 13:05:17 -05:00
Andrew Tridgell
ead3508ac8 r3447: more include/system/XXX.h include files
(This used to be commit 264ce91810)
2007-10-10 13:05:12 -05:00
Andrew Tridgell
09d0b152b7 r3360: improved the deletion of tmp files. smbd now puts all tmp files in var/locks/smbd.tmp/
and deletes that dir on startup.
(This used to be commit 7e942e7f1b)
2007-10-10 13:05:01 -05:00
Andrew Tridgell
990d76f7cb r3314: added a option "socket:testnonblock" to the generic socket code. If
you set this option (either on the command line using --option or in
smb.conf) then every socket recv or send will return short by random
amounts. This allows you to test that the non-blocking socket logic in
your code works correctly.

I also removed the flags argument to socket_accept(), and instead made
the new socket inherit the flags of the old socket, which makes more
sense to me.
(This used to be commit 406d356e69)
2007-10-10 13:04:53 -05:00
Andrew Tridgell
c6888da148 r3304: changed the API to lib/socket/ a little.
The main change is to make socket_recv() take a pre-allocated buffer,
rather than allocating one itself. This allows non-blocking users of
this API to avoid a memcpy(). As a result our messaging code is now
about 10% faster, and the ncacn_ip_tcp and ncalrpc code is also
faster.

The second change was to remove the unused mem_ctx argument from
socket_send(). Having it there implied that memory could be allocated,
which meant the caller had to worry about freeing that memory (if for
example it is sending in a tight loop using the same memory
context). Removing that unused argument keeps life simpler for users.
(This used to be commit a16e4756cd)
2007-10-10 13:04:52 -05:00
Andrew Tridgell
05ad898f68 r3271: use "struct messaging_context *" instead of "void *" in messaging API
(This used to be commit cc93813e4a)
2007-10-10 13:04:48 -05:00
Andrew Tridgell
75ed4f7cc4 r3183: moved the unlink of the messaging unixdom socket to the messaging destructor
(This used to be commit ab222b236a)
2007-10-10 13:04:37 -05:00
Andrew Tridgell
384f87bd38 r3034: - fixed a bug in message dispatch, when the dispatch function called messaging_deregister()
- added a pvfs_lock_close_pending() hook to remove pending locks on file close

 - fixed the private ptr argument to messaging_deregister() in pvfs_wait

 - fixed a bug in continuing lock requests after a lock that is blocking a pending lock is removed

 - removed bogus brl_unlock() call in lock continue

 - corrected error code for LOCKING_ANDX_CHANGE_LOCKTYPE

 - expanded the lock cancel test suite to test lock cancel by unlock and by close

 - added a testsuite for LOCKING_ANDX_CHANGE_LOCKTYPE
(This used to be commit 5ef80f034d)
2007-10-10 13:00:00 -05:00
Andrew Tridgell
d0cc571e30 r3029: implemented byte range lock timeouts.
This adds a pvfs_wait_message() routine which uses the new messaging
system, event timers and talloc destructors to give a nice generic
async event handling system with a easy to use interface. The
extensions to pvfs_lock.c are based on calls to pvfs_wait_message()
routines.

We now pass all of our smbtorture locking tests, although while
writing this code I have thought of some additonal tests that should
be added, particularly for lock cancel operations. I'll work on that
soon.

This commit also extends the smbtorture lock tests to test the rather
weird 0xEEFFFFFF locking semantics that I have discovered in
win2003. Win2003 treats the 0xEEFFFFFF boundary as special, and will
give different error codes on either side of it. Locks on both sides
are allowed, the only difference is which error code is given when a
lock is denied. Anyone like to hazard a guess as to why? It has
me stumped.
(This used to be commit 4395c0557a)
2007-10-10 13:00:00 -05:00
Andrew Tridgell
ca7e02fd37 r3026: - added automatic retry to messages when the servers listen queue is
full. This means callers can just "send and forget" rather than
  having to check for a temporary failure. The mechanism takes nice
  advantage of the timed events handling is our events code. A message
  will only fail now if we completely run out of some resource (such
  as memory).

- changed the test code not to do retries itself, but only to warn on real failures
(This used to be commit 8cddc610a2)
2007-10-10 12:59:59 -05:00
Andrew Tridgell
6cc8941f05 r3023: added immediate send of messages when they are first queued. This makes things a bit more efficient
(This used to be commit 8380225d32)
2007-10-10 12:59:59 -05:00
Andrew Tridgell
5882311fc4 r3018: handle STATUS_MORE_ENTRIES from socket_recv() in the messaging code
(This used to be commit 13739b68d8)
2007-10-10 12:59:58 -05:00
Andrew Tridgell
6591a22614 r3016: - converted the events code to talloc
- added the new messaging system, based on unix domain sockets. It
  gets over 10k messages/second on my laptop without any socket
  cacheing, which is better than I expected.

- added a LOCAL-MESSAGING torture test
(This used to be commit 3af06478da)
2007-10-10 12:59:57 -05:00