Patent ID: 8234360

Claim:
A method for preventing message looping occurring during servicing of a message by a network device having a plurality of executable service modules for supporting network telephony, the message having a message type, the method comprising the steps of: for each of the plurality of executable service modules registering resource data, the resource data specifying one or more message types that the executable service module can process, each of the plurality of executable service modules having a unique identifier; for each of the plurality of executable service modules that process the message within the network device, recording an entry in a dispatching table for the message that specifies the unique identifier value assigned to a current executable service module that is processing the message, the entry also specifying the resource data related to the current executable service module in relation to the message, the dispatching table having an entry for each executable service module that has processed the message; and selecting by the current executable service module a next executable service module of the plurality of executable service modules that is to process the message, the selecting being based at least in part on a comparison of the message type of the message with the one or more message types that the executable service modules can process based at least in part on the registered resource data; and after selecting the next executable service module and before passing the message to the next executable service module, checking each entry of the dispatching table against the unique identifier value and associated resource data of the next executable service module to determine if the message has been processed by the next executable service module before; after determining that the message has been processed by the next executable service module, discarding the message; and after determining that the message has not been processed by the next executable service module, passing the message to the next executable service module for processing.