Delayed entry
When you use delayed entry, you're blocking some modified clients that bypass the share checking by not sending $MyINFO at all. Now these lamers can taste their own medicine... They are not allowed in before they send $MyINFO (ie. they can not search anything or connect to anyone because they don't know anyone else is online) you can block the people sharing too little before their existence is broadcasted to other users. This helps reduce the required bendwidth. Also it makes using clients a lot nicer, because the user list is not so much "on the move" (no users appearing and disappearing all of the time)
Okay... Those were the advantages. There is a possible disadvantage that some client does not eat this sort of "messed up" protocol, but at least all the clients I've seen can cope with this just nicely. So this is just theoretical disadvantage, but possible however.
The easiest way to tell exactly what is being done is by these three transcripts of a conversation between the hub and two clients when the other client TestUser2 is connecting (the other one TestUser1 is already connected). Another one of these conversations is done with normal entry (the way NMDCH handles it) the second with delayed entry (our new method) when client is allowed in and the third with delayed entry when client is not allowed to enter. In this example we can imagine the already connected client TestUser1 to represent every other already connected client.
Notice, that we transfer exactly the same amount of data in both of the first two examples (where we let the user enter), only the order is a bit different depending on the method. However, if we choose to disallow a connecting client after it sends $MyINFO, we gain the network traffic to all other clients.
NORMAL
''TestUser2'' connects to the hub ''HUB'' -> ''TestUser2'' $Lock <LOCKSTRING> ''HUB'' -> ''TestUser2'' $HubName <HUBNAME> ''HUB'' -> ''TestUser2'' <HUB> <WELCOME> ''TestUser2'' -> ''HUB'' $Key <KEYSTRING> ''TestUser2'' -> ''HUB'' $ValidateNick TestUser2 ''HUB'' -> ''TestUser1'' $Hello TestUser2 ''HUB'' -> ''TestUser2'' $Hello TestUser2 ''TestUser2'' -> ''HUB'' $Version 1,0091 ''TestUser2'' -> ''HUB'' $GetNickList ''HUB'' -> ''TestUser2'' $NickList TestUser2$$TestUser1$$ ''TestUser2'' -> ''HUB'' $MyINFO $ALL TestUser2 <++ V:0.181,M:A,H:0,S:1>$ $DSL�$$0$ ''HUB'' -> ''TestUser1'' $MyINFO $ALL TestUser2 <++ V:0.181,M:A,H:0,S:1>$ $DSL�$$0$ ''TestUser2'' -> ''HUB'' $GetINFO TestUser2 TestUser2 ''HUB'' -> ''TestUser2'' $MyINFO $ALL TestUser2 <++ V:0.181,M:A,H:0,S:1>$ $DSL�$$0$ ''TestUser2'' -> ''HUB'' $GetINFO TestUser1 TestUser2 ''HUB'' -> ''TestUser2'' $MyINFO $ALL TestUser1 <++ V:0.181,M:A,H:0,S:1>$ $DSL�$$0$
DELAYED (ACCESS GRANTED)
''TestUser2'' connects to the hub ''HUB'' -> ''TestUser2'' $Lock <LOCKSTRING> ''HUB'' -> ''TestUser2'' $HubName <HUBNAME> ''HUB'' -> ''TestUser2'' <HUB> <WELCOME> ''TestUser2'' -> ''HUB'' $Key <KEYSTRING> ''TestUser2'' -> ''HUB'' $ValidateNick TestUser2 ''HUB'' -> ''TestUser2'' $Hello TestUser2 ''TestUser2'' -> ''HUB'' $Version 1,0091 ''TestUser2'' -> ''HUB'' $GetNickList ''TestUser2'' -> ''HUB'' $MyINFO $ALL TestUser2 <++ V:0.181,M:A,H:0,S:1>$ $DSL�$$0$ ''HUB'' -> ''TestUser1'' $Hello TestUser2 ''HUB'' -> ''TestUser2'' $NickList TestUser2$$TestUser1$$ ''HUB'' -> ''TestUser1'' $MyINFO $ALL TestUser2 <++ V:0.181,M:A,H:0,S:1>$ $DSL�$$0$ ''TestUser2'' -> ''HUB'' $GetINFO TestUser2 TestUser2 ''HUB'' -> ''TestUser2'' $MyINFO $ALL TestUser2 <++ V:0.181,M:A,H:0,S:1>$ $DSL�$$0$ ''TestUser2'' -> ''HUB'' $GetINFO TestUser1 TestUser2 ''HUB'' -> ''TestUser2'' $MyINFO $ALL TestUser1 <++ V:0.181,M:A,H:0,S:1>$ $DSL�$$0$
DELAYED (ACCESS DENIED)
''TestUser2'' connects to the hub ''HUB'' -> ''TestUser2'' $Lock <LOCKSTRING> ''HUB'' -> ''TestUser2'' $HubName <HUBNAME> ''HUB'' -> ''TestUser2'' <HUB> <WELCOME> ''TestUser2'' -> ''HUB'' $Key <KEYSTRING> ''TestUser2'' -> ''HUB'' $ValidateNick TestUser2 ''HUB'' -> ''TestUser2'' $Hello TestUser2 ''TestUser2'' -> ''HUB'' $Version 1,0091 ''TestUser2'' -> ''HUB'' $GetNickList ''TestUser2'' -> ''HUB'' $MyINFO $ALL TestUser2 <++ V:0.181,M:A,H:0,S:1>$ $DSL�$$0$
