The Signal module maintains the AOR (Address-of-Record) and Contact sets for each Request it processed. The module starts the Forking process by processing addresses in the AOR set.
When a 2xx response is received while processing any AOR, AOR processing stops. If the Request was an INVITE request, all outstanding Requests relayed to other AORs are canceled.
When all AORs have been processed, the module returns the "best" processing result to the Request source.
When an AOR to be processed is Routed to a non-local address, that address is placed into the Contact set.
When an AOR to be processed is Routed to a local Group, all Group members are added to the AOR set.
When an AOR to be processed is Routed to a local Account, all Account active Registrations (registered addresses of the Account user devices) are added to the Contact set.
If an AOR already exists in the AOR set, it is not added to the AOR set.
If an address already exists in the Contact set, it is not added to the Contact set.
The Signal module checks each address it adds to the Contact set. If the new Contact address is a Local Node address, the Request is passed to that Node for processing. If the new Contact address is an external address, the Request is passed to the SIP Module for relaying.
When a local or an external entity returns a redirect-type Response, the module checks the initial AOR (the Request URI).