summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuke Leighton <lkcl@samba.org>1998-09-24 19:42:31 +0000
committerLuke Leighton <lkcl@samba.org>1998-09-24 19:42:31 +0000
commitdd718c26f7f4d3ef906e0829d27208f07f3ed619 (patch)
tree11b27f612d5ebe3ef38696b1d24403481de85b14
parentb18cd03c0bf3b7a6815d69a9bbeba7d1b076765c (diff)
downloadsamba-dd718c26f7f4d3ef906e0829d27208f07f3ed619.tar.gz
samba-dd718c26f7f4d3ef906e0829d27208f07f3ed619.tar.xz
samba-dd718c26f7f4d3ef906e0829d27208f07f3ed619.zip
replaced one of the paragraphs describing nmbd problems. could someone
review this please?
-rw-r--r--source/architecture.doc21
1 files changed, 10 insertions, 11 deletions
diff --git a/source/architecture.doc b/source/architecture.doc
index afcec6d50a8..ff0fcefb868 100644
--- a/source/architecture.doc
+++ b/source/architecture.doc
@@ -105,17 +105,16 @@ nbmd Design
Originally Andrew used recursion to simulate a multi-threaded
environment, which use the stack enormously and made for really
confusing debugging sessions. Luke Leighton rewrote it to use a
-queuing system that keeps state information on each packet. During the
-1.9.18 alpha series it was decided that this was too unwieldy to
-manage. If the protocol was cleaner than it is then it would be OK
-but with the way the protocol works you really need some data hiding.
-The mistake we made was to transfer all the info from the packets to
-more specialised structures. It bit us badly when we then found we
-needed some detail of the original packet to handle some special
-case. The specialised structures kept growing till they almost
-contained all the info of the original packet! The code became
-extremely hairy, which became particularly evident when Jeremy fixed
-browsing on multiple subnets for 1.9.17.
+queuing system that keeps state information on each packet. The
+first version used a single structure which was used by all the
+pending states. As the initialisation of this structure was
+done by adding arguments, as the functionality developed, it got
+pretty messy. So, it was replaced with a higher-order function
+and a pointer to a user-defined memory block. This suddenly
+made things much simpler: large numbers of functions could be
+made static, and modularised. This is the same principle as used
+in NT's kernel, and achieves the same effect as threads, but in
+a single process.
Then Jeremy rewrote nmbd. The packet data in nmbd isn't what's on the
wire. It's a nice format that is very amenable to processing but still