diff options
author | Luke Leighton <lkcl@samba.org> | 1998-09-24 19:42:31 +0000 |
---|---|---|
committer | Luke Leighton <lkcl@samba.org> | 1998-09-24 19:42:31 +0000 |
commit | 9e17c7093d8626ed21bb25a858a8bc2df4e0641d (patch) | |
tree | a010820c33a54f9d7e2578639c0172050776e525 | |
parent | 921b171acfcc7e55c1770bf095d9137e815199b5 (diff) | |
download | samba-9e17c7093d8626ed21bb25a858a8bc2df4e0641d.tar.gz samba-9e17c7093d8626ed21bb25a858a8bc2df4e0641d.tar.bz2 samba-9e17c7093d8626ed21bb25a858a8bc2df4e0641d.zip |
replaced one of the paragraphs describing nmbd problems. could someone
review this please?
(This used to be commit dd718c26f7f4d3ef906e0829d27208f07f3ed619)
-rw-r--r-- | source3/architecture.doc | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/source3/architecture.doc b/source3/architecture.doc index afcec6d50a..ff0fcefb86 100644 --- a/source3/architecture.doc +++ b/source3/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 |