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

200 Commits

Author SHA1 Message Date
Stefan Metzmacher
06a24497dc s4:nbt_server/wins/: fix compiler warnings in winsdb.c
metze
2009-02-01 00:17:18 +01:00
Simo Sorce
d4aeed879b Fix all other modules to use ldb_module.h instead of ldb_private.h
The only 2 modules escaping the rule so far are rootdse and partitions
2009-01-30 17:07:25 -05:00
Simo Sorce
380874ef86 Fix the mess with ldb includes.
Separate again the public from the private headers.

Add a new header specific for modules.
Also add service function for modules as now ldb_context and ldb_module are
opaque structures for them.
2009-01-30 01:02:03 -05:00
Stefan Metzmacher
afd405dd90 nbt_server/wins: winsdb_handle() can be static
metze
(from samba4wins tree ba45b14b48f62eb1668509738f83fa17a4ce95fd)
2009-01-19 07:05:54 +01:00
Stefan Metzmacher
2973af5111 nbt_server/wins: add some const
metze
(from samba4wins tree e54b2d3ddbf338fe5d9802724e76f320fd4423e5)
2009-01-19 07:05:54 +01:00
Stefan Metzmacher
2dcac3c5e6 nbt_server/wins: use talloc_zero() to create struct winsdb_handle
metze
(from samba4wins tree 0f2995f77ab092d71e539c2473c94956f9c253fb)
2009-01-19 07:05:54 +01:00
Stefan Metzmacher
e1c968afd8 winsserver: add "wreplsrv:propagate name releases" option
Add an option to propagate name releases directly.
This make the results for #1C name queries more consistent
among all servers.

It's off by default to match windows.

metze
(from samba4wins tree 166e9fdffb9f4e26513c3b4ec1f6f168ecbe18f8)
2009-01-19 07:05:52 +01:00
Stefan Metzmacher
fb64b12be5 winsserver_release: update the expire time if only one address is released
We also take the ownership if the record isn't owned.
This matches windows...

metze
(from samba4wins tree d7b19339c0444cbe0989fcfa91a22323215d2f6b)
2009-01-19 07:05:52 +01:00
Stefan Metzmacher
780bc13736 winsdb: the we_are_owner in winsdb_lookup() needs to be per address
This fixes a bug where #1C addresses are registered with different
WINS-Servers and a merged #1C record.

metze
(from samba4wins tree 72e055394a0fd1f543be9c196b4179356a1033f6)
2009-01-19 07:05:50 +01:00
Stefan Metzmacher
ee8f481d94 winsserver: we need to ignore duplicated name register requests.
This fixes the following bug:

While we reply with a WACK response to a client.
Instead of waiting for the final reply some
windows client just resends the request using
the same name_trn_id in the nbt_name_packet.
We handled this as a new request and send a
WACK response (and the challenges) again.
Then the first request gets its final success
response, but the when we try to send the success
for the "second" request we notice that
the record was changed in between and we return
an error.

Windows 2003 (and I assume all other versions as well)
detect the packet is just a resent of a currently pending
request and ignores it.

So we now keep a list of all pending WINS name register
requests which result in a WACK response. On each incoming
name register request we search through the list to find
duplicate requests and ignore them. In theory we should
do that for all requests, but name register requests
are the only requests we response async and only
if we have to go via the WACK code path.

metze
(from samba4wins tree 382e7d384b70d03e9f81c7bb353afaed288d80f0)
2009-01-19 07:05:21 +01:00
Stefan Metzmacher
183c379fe5 s4:lib/tevent: rename structs
list=""
list="$list event_context:tevent_context"
list="$list fd_event:tevent_fd"
list="$list timed_event:tevent_timer"

for s in $list; do
	o=`echo $s | cut -d ':' -f1`
	n=`echo $s | cut -d ':' -f2`
	r=`git grep "struct $o" |cut -d ':' -f1 |sort -u`
	files=`echo "$r" | grep -v source3 | grep -v nsswitch | grep -v packaging4`
	for f in $files; do
		cat $f | sed -e "s/struct $o/struct $n/g" > $f.tmp
		mv $f.tmp $f
	done
done

metze
2008-12-29 20:46:40 +01:00
Jelmer Vernooij
23302413b3 Remove unused include param/param.h. 2008-10-24 16:37:56 +02:00
Jelmer Vernooij
218f482fbf Use common strlist implementation in Samba 3 and Samba 4. 2008-10-12 00:56:56 +02:00
Simo Sorce
508527890a Merge ldb_search() and ldb_search_exp_fmt() into a simgle function.
The previous ldb_search() interface made it way too easy to leak results,
and being able to use a printf-like expression turns to be really useful.
2008-09-23 18:17:46 -04:00
Günther Deschner
13a3971438 s4-nbt: use private_data instead of private.
Guenther
2008-09-23 09:37:24 +02:00
Stefan Metzmacher
be46118091 nbt_server/wins: add forward declaration for struct event_context
metze
(This used to be commit 5ff4ffd162)
2008-06-27 09:46:24 +02:00
Jelmer Vernooij
21fc767378 Specify event_context to ldb_wrap_connect explicitly.
(This used to be commit b4e1ae07a2)
2008-04-17 12:23:44 +02:00
Jelmer Vernooij
39a817d310 Fix use of some modules (needed _PUBLIC_).
(This used to be commit ce332130ea)
2008-02-20 04:33:43 +01:00
Jelmer Vernooij
16109a40c0 Use struct-based rather than function-based initialization for ldb modules everywhere.
(This used to be commit 85c96a3258)
2008-02-20 01:54:32 +01:00
Jelmer Vernooij
2da3464080 r26670: Janitorial: Remove global_loadparm uses.
(This used to be commit 13cc6ca1d3)
2008-01-05 09:42:02 -06:00
Jelmer Vernooij
aa32619c5c r26426: Remove uses of global_loadparm.
(This used to be commit e1d177c8c1)
2007-12-21 05:49:52 +01:00
Jelmer Vernooij
4b0199a549 r26409: Pass smb ports along.
(This used to be commit 2833f320de)
2007-12-21 05:49:42 +01:00
Jelmer Vernooij
33582dffcc r26408: Remove use of global_loadparm.
(This used to be commit f933b43621)
2007-12-21 05:49:39 +01:00
Jelmer Vernooij
70f1f33af8 r26402: Require a talloc context in libnetif.
(This used to be commit a35e51871b)
2007-12-21 05:49:33 +01:00
Jelmer Vernooij
6f2252dace r26401: Don't cache interfaces context in libnetif.
(This used to be commit 9f975417cc)
2007-12-21 05:49:32 +01:00
Jelmer Vernooij
c5bf20c5fe r26325: Remove use of global_loadparm in netif.
(This used to be commit e452cb2859)
2007-12-21 05:48:37 +01:00
Jelmer Vernooij
2f5ca872a8 r26313: Fix more uses of static loadparm.
(This used to be commit 6fd0d9d3b7)
2007-12-21 05:48:25 +01:00
Jelmer Vernooij
b84be078c1 r26309: Move specification of port higher up the all stack.
(This used to be commit 7de55cde7c)
2007-12-21 05:48:21 +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
Jelmer Vernooij
b09047b78e r25624: Remove ipv4_addr hack. Only causes 4 extra includes of system/network.h because we stripped down includes.
(This used to be commit 262c1c23a6)
2007-12-21 05:43:00 +01:00
Jelmer Vernooij
cac2379a2f r25546: Convert to standard bool type.
(This used to be commit ac83dbf199)
2007-10-10 15:07:52 -05: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
60a1046c5c r25430: Add the loadparm context to all parametric options.
(This used to be commit fd697d77c9)
2007-10-10 15:07:31 -05:00
Jelmer Vernooij
37d53832a4 r25398: Parse loadparm context to all lp_*() functions.
(This used to be commit 3fcc960839)
2007-10-10 15:07:25 -05:00
Jeremy Allison
9a012df08e r25175: Change to talloc_asprintf_append_buffer().
Jeremy.
(This used to be commit 0844dbf597)
2007-10-10 15:06:46 -05:00
Jelmer Vernooij
98b57d5eb6 r25035: Fix some more warnings, use service pointer rather than service number in more places.
(This used to be commit df9cebcb97)
2007-10-10 15:05:43 -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
959915a8cb r25001: Fix more C++ and other warnings, fix some of the indentation with ts=4 lines that I accidently added earlier.
(This used to be commit 0bcb21ed74)
2007-10-10 15:05:28 -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
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
Stefan Metzmacher
1f2b94b7b7 r21317: this happens very often when you have multihomed nodes
and isn't an error.

metze
(This used to be commit 6f5e084a7b)
2007-10-10 14:48:09 -05:00
Stefan Metzmacher
18732ba952 r21086: add some notes
metze
(This used to be commit dfbdb95841)
2007-10-10 14:44:29 -05:00
Stefan Metzmacher
3d409a43f4 r21085: implement something like the parameter
HKEY_LOCAL_MACHINE\System\CurrentControlset\Services\WINS\Parameters\Randomize1CList

nbtd:wins_randomize1Clist=yes
nbtd:wins_randomize1Clist_mask=255.255.0.0

metze
(This used to be commit eee635ab4d)
2007-10-10 14:44:28 -05:00
Stefan Metzmacher
6c138c8a58 r21059: add an option to implement what windows wins server confgure via
HKEY_LOCAL_MACHINE\System\CurrentControlset\Services\WINS\Parameters\Prepend1BTo1CQueries

nbtd:wins_prepend1Bto1Cqueries=no will turn it off

metze
(This used to be commit 5362eede6b)
2007-10-10 14:44:26 -05:00
Simo Sorce
a9e31b33b5 r19832: better prototypes for the linearization functions:
- ldb_dn_get_linearized
  returns a const string

- ldb_dn_alloc_linearized
  allocs astring with the linearized dn
(This used to be commit 3929c086d5)
2007-10-10 14:28:22 -05:00
Simo Sorce
4889eb9f7a r19831: Big ldb_dn optimization and interfaces enhancement patch
This patch changes a lot of the code in ldb_dn.c, and also
removes and add a number of manipulation functions around.

The aim is to avoid validating a dn if not necessary as the
validation code is necessarily slow. This is mainly to speed up
internal operations where input is not user generated and so we
can assume the DNs need no validation. The code is designed to
keep the data as a string if possible.

The code is not yet 100% perfect, but pass all the tests so far.
A memleak is certainly present, I'll work on that next.

Simo.
(This used to be commit a580c871d3)
2007-10-10 14:28:22 -05:00
Simo Sorce
b7774527fa r19531: Make struct ldb_dn opaque and local to ldb_dn.c
(This used to be commit 889fb983ba)
2007-10-10 14:24:44 -05:00
Simo Sorce
7f833458ca r19489: Change ldb_msg_add_value and ldb_msg_add_empty to take a foruth argument.
This is a pointer to an element pointer. If it is not null it will be
filled with the pointer of the manipulated element.
Will avoid double searches on the elements list in some cases.
(This used to be commit 0fa5d4bc22)
2007-10-10 14:24:38 -05:00
Simo Sorce
59b66744f7 r19299: Fix possible memleaks
(This used to be commit 6fad80bb09)
2007-10-10 14:21:04 -05:00
Stefan Metzmacher
eb06c35f12 r19092: active replica records cannot expire!
we handle that in the scavenging code, but were missing that
in the wins server name query code...

metze
(This used to be commit 7fb8dd3ab7)
2007-10-10 14:20:34 -05:00
Stefan Metzmacher
1713b43c1a r17792: io.out.winsserver is a const char *,
and iname->winserver = talloc_steal(iname, io.out.winsserver)
generated a warning, so I changed iname->winsserver to also
be a const char *.

then a talloc_free(iname->winsserver) would generate a warning,
but we can steal it into the tmp_ctx without a warning
and that gets free'ed a few lines later.

metze
(This used to be commit fdef17f81e)
2007-10-10 14:16:43 -05:00
Stefan Metzmacher
a2eca9174c r17586: merge lib/netif into lib/socket and use -lnsl -lsocket on the
configure check for the interfaces.

should fix the build on some old sun boxes

metze
(This used to be commit f20e251bfd)
2007-10-10 14:15:39 -05:00
Simo Sorce
a23b63a8e5 r17516: Change helper function names to make more clear what they are meant to do
(This used to be commit ad75cf8695)
2007-10-10 14:15:31 -05:00
Simo Sorce
faed817506 r17514: Simplify the way to set ldb errors and add another
helper function to set them.
(This used to be commit 260868bae5)
2007-10-10 14:15:31 -05:00
Stefan Metzmacher
9796f75568 r15956: fix warnings
metze
(This used to be commit e874a09966)
2007-10-10 14:08:44 -05:00
Simo Sorce
2d19dca9c8 r15944: rename LDB_ASYNC_ADD -> LDB_ADD, LDB_ASYNC_MODIFY -> LDB_MODIFY, etc...
(This used to be commit 55d97ef88f)
2007-10-10 14:08:43 -05:00
Simo Sorce
0c7b82e5f6 r15942: Remove the sync internal ldb calls altogether.
This means that some modules have been disabled as well as they
have not been ported to the async interface

One of them is the ugly objectclass module.
I hope that the change in samldb module will make the MMC happy
without the need of this crappy module, we need proper handling
in a decent schema module.

proxy and ldb_map have also been disabled
ldb_sqlite3 need to be ported as well (currenlty just broken).
(This used to be commit 51083de795)
2007-10-10 14:08:43 -05:00
Simo Sorce
3a4d7eb2c0 r15927: Optimize ldb module traverse while keeping the API intact.
I was sick of jumping inot each module for each request,
even the ones not handle by that module.
(This used to be commit 7d65105e88)
2007-10-10 14:08:41 -05:00
Stefan Metzmacher
767685e9fd r14709: allways use the unicast socket of the interface, when reply to DGRAM
requests...

this fixes a bug where I thought windows would try KRB5 via broadcast...

metze
(This used to be commit 0e7b224294)
2007-10-10 13:59:11 -05:00
Jelmer Vernooij
8528016978 r14464: Don't include ndr_BASENAME.h files unless strictly required, instead
try to include just the BASENAME.h files (containing only structs)
(This used to be commit 3dd477ca51)
2007-10-10 13:57:27 -05:00
Simo Sorce
753bf8fb99 r14459: Make this async compatible
(This used to be commit a71d762acf)
2007-10-10 13:57:27 -05:00
Jelmer Vernooij
e3f2414cf9 r14380: Reduce the size of structs.h
(This used to be commit 1a16a6f1df)
2007-10-10 13:57:16 -05:00
Stefan Metzmacher
60823d1878 r14078: move ldb_global_init() to the main smbd code,
to fix the process_model standard

metze
(This used to be commit a465126e15)
2007-10-10 13:56:49 -05:00
Jelmer Vernooij
4ac2be9958 r13924: Split more prototypes out of include/proto.h + initial work on header
file dependencies
(This used to be commit 1228358767)
2007-10-10 13:52:24 -05:00
Jelmer Vernooij
26af14c39b r13786: [merge] Add registration functions for LDB modules
Applications that use LDB modules will now have to run ldb_global_init()
before they can use LDB.

The next step will be adding support for loading LDB modules from .so
files. This will also allow us to use one LDB without difference between the
standalone and the Samba-specific build
(This used to be commit 52a2356505)
2007-10-10 13:52:11 -05:00
Simo Sorce
d590dea10b r13615: Make ldb_set_errstring get ldb instead of module as parameter.
The module was just used to get to the ldb so it was meningless.

Also add LDB_WAIT_ONCE e relative code in ldb_ildap.c
(This used to be commit d5b467b7c1)
2007-10-10 13:51:59 -05:00
Stefan Metzmacher
d3fd4c466f r13117: the caller may reference the winsdb_addr struct,
and as a winsdb_record has a short lifetime, it's no problem
to not free unused addresses directly

metze
(This used to be commit 2a7e22c117)
2007-10-10 13:51:27 -05:00
Stefan Metzmacher
8311b9e9e7 r13116: make sure we don't add more than 25 addresses to a record,
and don't return more than 25 in a name query reply

we now also order the addresses from the newest owned address
to the oldest replica address

metze
(This used to be commit 602ec0f1c6)
2007-10-10 13:51:27 -05:00
Stefan Metzmacher
5304f34132 r13115: call the wins hook script on modifications of the wins.ldb
tridge: can you please look at the /* TODO: close file handles */
        btw I'm not interessted in any result from the script...

metze
(This used to be commit 93409faddf)
2007-10-10 13:51:27 -05:00
Stefan Metzmacher
dd5afc5a77 r13087: don't store timestamps for static records
(only a per record timestamp when it's not active)

metze
(This used to be commit aba54b8708)
2007-10-10 13:51:23 -05:00
Stefan Metzmacher
f25ad21617 r13060: - return only active addresses in name query responses
- replicate only active addresses

metze
(This used to be commit 6325abd95c)
2007-10-10 13:51:20 -05:00
Stefan Metzmacher
ba4df97eb9 r13005: - use nbtd:max_refresh_time=12345 also for name refresh with a wins server
metze
(This used to be commit 5e3639edaf)
2007-10-10 13:51:17 -05:00
Stefan Metzmacher
cd9752d61f r12909: add an ldb module for the wins.ldb,
it currently doesn't do much, but it's later
prevent adding corrupted records via ldbedit,
and will take care of the versionID counter

metze
(This used to be commit a6f279bc43)
2007-10-10 13:51:02 -05:00
Stefan Metzmacher
4c117a001f r12906: return the correct nb_flags
metze
(This used to be commit c52436108d)
2007-10-10 13:51:01 -05:00
Stefan Metzmacher
c4a5381154 r12898: prepare the 'wins hook' feature, but we only debug out a 'TODO: run script ...'
metze
(This used to be commit d28c8ce66d)
2007-10-10 13:51:00 -05:00
Stefan Metzmacher
f3ef8fc691 r12897: make it possible to use nosync transaction to speed things up,
(just for testing)

metze
(This used to be commit 677c1aa466)
2007-10-10 13:51:00 -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
Stefan Metzmacher
d93e1b018e r12779: allow static tomstones
metze
(This used to be commit 966872646e)
2007-10-10 13:49:54 -05:00
Stefan Metzmacher
da8151ae9f r12755: check the return value of ldb_timestring(), as this fails,
when gmtime() fails...

metze
(This used to be commit 523746f271)
2007-10-10 13:49:50 -05:00
Stefan Metzmacher
a417674925 r12700: fix name release of replica records, we need to become the owner and allocate a new versionID
so that it gets replicated to the old owning wins server directly

metze
(This used to be commit 72198f00ea)
2007-10-10 13:49:41 -05:00
Stefan Metzmacher
6d16a217d3 r12673: create functions for get_maxVersion(), set_maxVersion() and get_seqnumber()
at the winsdb layer. the ones in wrepl_server/ will be removed later.

metze
(This used to be commit 22cdbc75df)
2007-10-10 13:49:36 -05:00
Stefan Metzmacher
c4d0b5729a r12648: implement the dns proxy feature
metze
(This used to be commit b07b201c86)
2007-10-10 13:49:34 -05:00
Stefan Metzmacher
24c54281a9 r12647: make use of the str_list_add function
metze
(This used to be commit e47873a1a3)
2007-10-10 13:49:34 -05:00
Stefan Metzmacher
706ef631f7 r12644: prepare the dns proxy feature for the wins server
metze
(This used to be commit 48842cd9ab)
2007-10-10 13:49:34 -05:00
Stefan Metzmacher
5a26b2d72b r12619: make sure we don't return more than 25 addresses, as w2k3 crashes in that case
I still need to make sure we didn't write such records to our database...

metze
(This used to be commit d0dc0ffa31)
2007-10-10 13:49:05 -05:00
Stefan Metzmacher
905c3ff8e1 r12618: use our primary interface address or the "winsdb:local_owner" -address
as winsOwner: attrbute for owned records

metze
(This used to be commit 37dece8304)
2007-10-10 13:49:05 -05:00
Stefan Metzmacher
0391b1cb3a r12617: create a winsdb_handle and pass that arround,
so we later can hang the local owner address, on this handle too

metze
(This used to be commit 49ba4cc111)
2007-10-10 13:49:05 -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
Stefan Metzmacher
ab8cd4470c r12607: fix the build
metze
(This used to be commit 5cc955bf54)
2007-10-10 13:49:03 -05:00
Stefan Metzmacher
805f5d861f r12606: - fix multihomed registrations
always remove the addresses which are no longer valid
- use the wins_challenge_send/recv calls which are also used by the replication
  challenge

metze
(This used to be commit 037b5d9f36)
2007-10-10 13:49:03 -05:00
Stefan Metzmacher
70a15ba4df r12580: return the first 0x1B address as first address to 0x1C queries
metze
(This used to be commit 669009579d)
2007-10-10 13:48:56 -05:00
Stefan Metzmacher
2842acf5e3 r12578: - w2k3 allows entries with 127.0.0.1 as address, so we should do
to make it possible to add a static record for localhost or so...
- we already make sure we don't register 127.0.0.1 with our wins server,
  so the check for loopback in the non-wins name queries is enough

metze
(This used to be commit f68a883daf)
2007-10-10 13:48:56 -05:00
Jelmer Vernooij
2cd5ca7d25 r12542: Move some more prototypes out to seperate headers
(This used to be commit 0aca5fd513)
2007-10-10 13:47:55 -05:00
Andrew Tridgell
1984ba6ee9 r12535: - simplify string list handling in a couple of places using str_list_add()
- don't reply with 127.0.0.1 in NBT or WINS name queries unless the
  query came in on the loopback interface. Otherwise clients can end
  up talking to themselves, which is not very productive :-)
(This used to be commit df00f8b342)
2007-10-10 13:47:53 -05:00
Stefan Metzmacher
ac4ee3e20b r12440: fix crash bugs
metze
(This used to be commit c7049f8bb6)
2007-10-10 13:47:39 -05:00
Stefan Metzmacher
9f270fd112 r12429: make static records always active with a max expire time
metze
(This used to be commit 387d680b6f)
2007-10-10 13:47:37 -05:00
Stefan Metzmacher
0e77fdc0b9 r12428: releases on 0x1D names are ignored
metze
(This used to be commit 84ba71ba27)
2007-10-10 13:47:37 -05:00
Stefan Metzmacher
b1ea93c016 r12426: w2k3 refused 0x1B names registered as group names
metze
(This used to be commit 4ce4baa1b9)
2007-10-10 13:47:37 -05:00
Stefan Metzmacher
aa682976cd r12425: match w2k3 and store 0x1D names when they're registered as group name,
but queries still give not found

metze
(This used to be commit 2e69a7cc21)
2007-10-10 13:47:36 -05:00
Stefan Metzmacher
8b7387ee13 r12424: static records should not be released
metze
(This used to be commit 3f90e72e5a)
2007-10-10 13:47:36 -05:00