2) The initiating party must not re-use a context if it is initiated by
other party.
As a consequence, p2p applications will have two contexts. One per
direction.
Yes, this may wotk...
I can see how would you this for TCP and even for connected UDP
socket, but is don't know how would you recognize who has initiated the
communication in the case of non-connected UDP though
Just one more thought...
Perhaps an option for this would be:
suppose that A wants to initiate acommunication with B
A calculates ID(R)=hash(FQDNB)
A then searches for a context with ID(R)
If one context with ID(R) is found, A verifies ID(I),
if ID(I) = hash(FQDNA) then it creates a new context with ID(R) and
ID(I)=random
if ID(I) =! hash(FQDNA) then it just uses this context
This way, you implicetly discover who has created the context.
Do you think this may work?