Abstract:
A method and device is disclosed. The method includes performing a deadlock check on a received message of a recursively triggered service; and stopping triggering the service for the message if the deadlock check fails. The method provided by the invention may prevent looping transfer of messages and save network resources.

Description:
RELATED APPLICATION 
       [0001]    This application is a continuation of International Application No. PCT/CN2008/071682, filed on Jul. 17, 2008, which claims priority to Chinese Patent Application No. 200710137777.2, filed on Jul. 19, 2007, both of which are hereby incorporated by reference in their entireties. 
     
    
     FIELD OF THE INVENTION 
       [0002]    The present disclosure relates to the field of telecommunication technology, and more particularly, to a method and device for transferring a message. 
       BACKGROUND 
       [0003]    With the rapid development of mobile communication technology, the Short Message Service and the Multimedia Message Service, etc., as mature and reliable wireless data services, are more and more widely used. 
         [0004]    In the mean time, there are more and more types of message services, such as various value added message services. The Message Forwarding Service (MFS) and the Message Copy Service (MCS) are taken as examples. The MFS refers to a message transfer service similar to Call Forwarding Service. For example, the user does not receive messages. In contrast, he forwards all messages intended for him to another number. Alternatively, he does not receive the messages sent from certain numbers, but transfers these messages to a specified number, not affecting the reception of messages sent from other numbers. The MCS refers to a message service similar to “message copying”. For example, the message sent from others to the user may not only be received by the user himself, but also be sent to another number specified by the user. 
         [0005]    However, the above two types of services are each recursively triggered (referred to as recursively triggered services), therefore, it is highly possible that a closed loop is formed. With the wide application of recursively triggered services, the problem of loop transfer of services becomes prominent. For example, user A sends a message to user B, but user B has set to forward messages to user C, and user C has set to forward messages back to user B. In this case, if user A sends the message to user B, the message is forwarded between users B and C repeatedly forming a closed loop. Alternatively, if user B has set to copy messages to user C, and user C has set to copy messages back to user B. In this case, if user A sends a message to user B, the message is copied between users B and C repeatedly forming a closed loop. Another case may be that user B has set to forward messages to user C, and user C has set to copy messages to user B. In this case, if user A sends a message to user B, the message is forwarded and copied between users B and C repeatedly forming a closed loop. 
         [0006]    Taking the Short Message Service (SMS) as an example, a flow chart is shown in  FIG. 1  to illustrate the Short Message Forwarding Service (SMFS) in a home network of the caller. The Short Message Service Center (SMSC) is the short message scheduling center which transmits and receives short messages and stores identifiers of subscribed services of users. A Data Center for Short Message Services (DCS) stores detailed subscription data for Value Added Services (VASs) subscribed by a user, and provides user terminal oriented short message VASs. In other words, the DCS is responsible for the triggering of VASs. As shown in  FIG. 1 , the method includes the following steps: 
         [0007]    Step  101 : User A submits a short message intended for user B to the home SMSC of user A. 
         [0008]    Step  102 : The SMSC returns an acknowledgement message to user A. 
         [0009]    Step  103 : The SMSC inquires about whether user A and user B have subscribed for the short message VAS. 
         [0010]    If user A and user B have subscribed for the short message VAS, the originally submitted message is forwarded to and processed by the DCS. In one embodiment, it is assumed that the inquiry shows user A and/or user B have subscribed for the VAS. 
         [0011]    Step  104 : The SMSC forwards the originally submitted message to DCS A. 
         [0012]    Step  105 : DCS A returns an acknowledgement, informing the SMSC that the message will be processed by DCS A. 
         [0013]    Step  106 : It is found by DCS A that user B is not a local user, then a service inquiry request message is sent to the home DCS of user B, i.e., DCS B. 
         [0014]    Step  107 : The inquiry by DCS B shows that user B has subscribed for the MFS, and the destination number of the MFS is user C. 
         [0015]    Step  108 : DCS B returns a service inquiry response message to DCS A. 
         [0016]    Step  109 : It is found by DCS A that user C is not a local user, and a service inquiry request message is sent to the home DCS of user C, i.e., DCS C. 
         [0017]    Step  110 : The inquiry by DCS C shows that user C has subscribed for MFS, and the destination number of the MFS is set to be user B. 
         [0018]    Step  111 : DCS C returns a service inquiry response message to DCS A. 
         [0019]    Then, DCS A returns to execute step  106 , and a service inquiry request message is sent to DCS B once again. In this way, steps  106 - 111  are executed repeatedly. 
         [0020]    When a looping transfer of the above message occurs, not only network resources are wasted, but also the users are charged repeatedly, causing unnecessary loss to the users. 
       SUMMARY 
       [0021]    In one embodiment of the invention, a method and a device for transferring a message is provided to prevent a closed looping transfer of messages. 
         [0022]    A method for transferring a message provided in one embodiment of the present invention includes: 
         [0023]    performing a deadlock check on a received message of a recursively triggered service; and stopping triggering the service for the message if the deadlock check fails. 
         [0024]    A device for transferring a message provided in one embodiment of the present invention includes a service triggering unit, and a deadlock check unit. 
         [0025]    The service triggering unit is configured to receive a message of a recursively triggered service and providing information of the received message to the deadlock check unit; to receive a check result of the deadlock check performed by the deadlock check unit on the message of the recursively triggered service; and to stop triggering the service for the message if the deadlock check fails. 
         [0026]    The deadlock check unit is configured to perform deadlock check on the message of the recursively triggered service according to the information of the message from the service triggering unit, and to feed the check result back to the service triggering unit. 
         [0027]    It is seen from above that in embodiments of the invention, a deadlock check is performed on a received message of a recursively triggered service, and the triggering of the service for the message is stopped if the deadlock check fails. Thus, looping transfer of messages may be prevented, and network resources may be saved. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0028]      FIG. 1  is a flowchart illustrating the SMFS in a home network of the caller in the prior art; 
           [0029]      FIG. 2  is a flowchart illustrating an exemplary method for transferring a message in one embodiment of the invention; 
           [0030]      FIG. 3  is a block diagram illustrating an exemplary device for transferring a message in one embodiment of the invention; 
           [0031]      FIG. 4  is a diagram illustrating the internal structure of a deadlock check unit in the device shown in  FIG. 3 ; 
           [0032]      FIG. 5  is a diagram illustrating another internal structure of a deadlock check unit in the device shown in  FIG. 3 ; 
           [0033]      FIG. 6  is a flowchart illustrating the message transfer service in one embodiment of the invention; 
           [0034]      FIG. 7  is a flowchart illustrating the message transfer service in another embodiment of the invention; and 
           [0035]      FIG. 8  is a flowchart illustrating the message transfer service in a further embodiment of the invention. 
       
    
    
     DETAILED DESCRIPTION 
       [0036]    In one embodiment of the invention, a deadlock check is performed on the received message (e.g. short message or multimedia message) of a recursively triggered service. If the deadlock check fails, the triggering of the service for the message is stopped, and the message is delivered to the present user terminal or deleted. The present user terminal refers to the object which the present service is triggered for. For example, user A sends a message to user B, but user B has set to forward messages to user C, and user C has set to forward messages to user B. When the message is forwarded by the DCS (such as DCS B) which is responsible for the triggering of the service related to user B to the DCS (such as DCS C) which is responsible for the triggering of the service related to user C, and the deadlock check fails, the message is not forwarded by the DCS which is responsible for the triggering of the service related to user C back to the DCS which is responsible for the triggering of the service related to user B. The message may be delivered to user C instead. In this case, user C is the present user terminal. 
         [0037]    There are many methods to realize deadlock check. For example, it is determined based on the message of the recursively triggered service and user information whether the message of the recursively triggered service is forwarded back. If the message is forwarded back, the deadlock check fails. The user information may be the user message inside the network, or the user message shared between different operators. In a further embodiment, when the deadlock check succeeds, the traverse information of the message of the recursively triggered service is recorded. In this case, the deadlock check may be matching the triggering information of the received message of the recursively triggered service with the recorded traverse information. If there is a match, the deadlock check is determined as a failure. 
         [0038]    The traverse information may be traversed numbers and/or the number of triggerings. The corresponding triggering information may be the present triggering number and/or threshold for the number of triggerings. The case that a match exists between the triggering information of the received message of the recursively triggered service and the recorded traverse information is that a number in the traversed numbers is the same as the present triggering number, and/or the number of triggerings reaches the threshold, etc. 
         [0039]    In one embodiment, the traverse information may be carried in the message of the recursively triggered service, or the traverse information may be stored in the DCS. 
         [0040]    The purpose, technical solutions and advantages of the present invention will be more apparent from the description of the following embodiments incorporating with the figures. 
         [0041]      FIG. 2  is an exemplary flowchart illustrating the method of transferring a message according to one embodiment of the invention. As illustrated in  FIG. 2 , the method includes the following steps. 
         [0042]    Step  201 : A message of the recursively triggered service presently submitted is received. 
         [0043]    In this step, the message of the recursively triggered service presently submitted may be received by the DCS or the DCM. 
         [0044]    Step  202 : The triggering information of the message of the received recursively triggered service is matched with the traverse information, to determine whether matched traverse information exists. If the matched traverse information exists, the check is determined as a failure, and the process proceeds to step  203 . If the matched traverse information does not exist, the check is determined as a success, and the process proceeds to step  204 . 
         [0045]    There are at least the following two methods for recording the traverse in formation. 
         [0046]    Method 1: A message traverse field is defined beforehand. The message traverse field is adapted to store the traverse information of the message of the recursively triggered service. When the message of the recursively triggered service is triggered, the message traverse field of the recursively triggered service is carried. 
         [0047]    The recorded traverse information is accordingly the traverse information filled in the message traverse field. 
         [0048]    In one embodiment, for the home network of the caller, when a service inquiry request is sent from the home location of the caller (such as the home DCS of the caller) to the home location of the called or the service triggering user (such as the home DCS of the called or the service triggering user), the above message traverse field may be carried in the service inquiry request. The caller number, the called number or the caller number, the called number and the first service triggering number are filled in the message traverse field. When a service inquiry response message is returned from the home location of the called or the service triggering user to the home location of the caller, the above message traverse field may be carried in the service inquiry response message. The caller number, the called number and the first service triggering number or the caller number, the called number, the first service triggering number and the second service triggering number are filled in the message traverse field. It is seen that the message traverse field may be carried in the service inquiry message. 
         [0049]    In another embodiment, for the home network of the called, when a service forwarding message is sent from the home location of the caller (such as the home DCS of the caller) to the home location of the called (such as the home DCS of the called), the above message traverse field may be carried in the service forwarding message. The caller number and the called number are filled in the message traverse field. When a service forwarding message is sent from the home location of the called to the home location of the service triggering user, the above message traverse field may be carried in the service forwarding message. The caller number, the called number and the service triggering number are filled in the message traverse field. It is seen that the message traverse field may be carried in the service forwarding message. 
         [0050]    In a further embodiment, for different networks or different operators, when an interconnecting network between the different networks or different operators submits a message to the SMSC, or the SMSC sends a service forwarding message to the DCS, the above message traverse field may be carried in the message. The caller number, the called number and the service triggering number are filled in the message traverse field. 
         [0051]    Method 2: A message information storage area may be defined beforehand in the DCS which triggers the recursively triggered service, and is used to store the traverse information of the message of the recursively triggered service. When a message of the recursively triggered service is sent, the traverse information corresponding to the message of the recursively triggered service is stored in the defined storage area. The recorded traverse information is the traverse information filled in the storage area of the message information. 
         [0052]    The traverse information may be the traversed number of the message of the recursively triggered service. Taking the MFS as an example, the traverse information may include the caller number, the called number and the traversed MFS numbers, and/or the traverse information may be the number of triggerings. Taking the MFS as an example, the traverse information may include the present number of times by which the message is forwarded. 
         [0053]    In the present step, when the deadlock check is performed, the traverse information of the message of the recursively triggered service may be obtained from the received message for method 1, and the traverse information of the message of the recursively triggered service may be obtained from the message information storage area in the DCS for method 2. 
         [0054]    When the triggering information of the received message of the recursively triggered service is matched with the recorded traverse information, if traversed numbers are included in the traverse information, the triggering information should include the present triggering number. The match may be performed to find out whether a number the same as the present triggering number exists in the traversed numbers. If there is a matching number in the traversed numbers, the deadlock check is determined as a failure. If there is not any matching number in the traversed numbers, the deadlock check is determined as a success. If the number of triggerings is included in the traverse information, the triggering information should include the threshold of the number of triggerings. The match may be performed to find out whether the number of triggerings reaches the threshold of the number of triggerings. If the number of triggerings reaches the threshold, the deadlock check is determined as a failure. If the number of triggerings does not reach the threshold, the deadlock check is determined as a success. If the traversed numbers and the number of triggerings are both included in the traverse information, the triggering information may include both the present triggering number and the threshold of the number of triggerings. If a number the same as the present triggering number exists in the traversed numbers and/or the number of triggerings reaches the threshold of the number of triggerings, the deadlock check is determined as a failure. Otherwise, the deadlock check is determined as a success. If both the traversed numbers and the number of triggerings are included in the traverse information, the traverse information may alternatively include one of the present triggering numbers and the threshold of the number of triggerings. In this case, if a number the same as the present triggering number exists in the traversed numbers or the number of triggerings reaches the threshold of the number of triggerings, the deadlock check is determined as a failure. Otherwise, the deadlock check is determined as a success. 
         [0055]    Step  203 : The triggering of the recursively triggered service for the presently submitted message is stopped, and the process ends. 
         [0056]    In this step, the triggering of the recursively triggered service for the presently submitted message is stopped. For example, for the message of MFS, its forwarding is stopped. The step may further include deleting the presently submitted message, or no process is performed for this message. The message may alternatively be delivered to the present user terminal. The traverse information corresponding to the message may further be deleted. 
         [0057]    Step  204 : The traverse information of the recursively triggered service for the presently submitted message is stored and the triggering of the service for the present message continues. 
         [0058]    In this step, for method 1 described in the description of step  202 , the traverse information of the message of the presently submitted recursively triggered service is stored in the message traverse field, the triggering of the present message continues, and the message traverse field is carried for transfer. For the method 2 described in the description of step  202 , the message of the presently submitted recursively triggered service is stored in the message information storage area, and the triggering of the present message continues. 
         [0059]    If traversed numbers are included in the traverse information and the message traverse field or the message information storage area is empty, the caller number, the called number and the present triggering number should be added when traverse information is stored in the message traverse field or the message information storage area. If the message traverse field or the message information storage area is not empty, or in other words, the caller number, the called number and the traversed triggering numbers are stored in them, the present triggering number needs to be added. 
         [0060]    If the number of triggerings is included in the traverse information, the present number of triggerings needs to be updated every time when the number of triggerings is stored in the message traverse field or the message information storage area. 
         [0061]    Then, the process ends. 
         [0062]    A method of transferring a message according to one embodiment of the invention has been described above in detail. The device for transferring a message according to one embodiment of the invention will be described below in detail. 
         [0063]      FIG. 3  is a block diagram illustrating the device for transferring a message according to one embodiment of the invention. As illustrated in  FIG. 3 , the device includes a service triggering unit  301  and a deadlock check unit  302 . 
         [0064]    The service triggering unit  301  is configured to receive a message of a recursively triggered service and providing information of the received message to the deadlock check unit  302 . The check result from the deadlock check unit is received. The triggering of the service for the message is stopped if the deadlock check fails. 
         [0065]    The deadlock check unit  302  is configured to perform deadlock check on the message of the recursively triggered service according to the information of the message from the service triggering unit  301 , and to feed the check result back to the service triggering unit  301 . 
         [0066]    Specifically, the deadlock check unit  302  may be implemented in a variety of ways. Two examples are shown below. 
         [0067]      FIG. 4  is a block diagram illustrating the internal structure of the deadlock check unit  302  according to one embodiment of the invention. As illustrated in  FIG. 4 , the deadlock check unit  302  includes an information extracting module  401  and a check and determination module  402 . 
         [0068]    The information extracting module  401  is configured to extract the traverse information of the message of the recursively triggered service from the information of the message of the recursively triggered service, to inquire about the triggering information of the message from the stored user service data, and to provide the extracted traverse information and the triggering information obtained by inquiry to the check and determination module  402 . 
         [0069]    The check and determination module  402  is configured to match the triggering information of the message of the recursively triggered service with the traverse information; to determine that the deadlock check fails if there is a match; to determine that the deadlock check succeeds if there is not any match; and to feed the check result back to the service triggering unit  301 . 
         [0070]    The service triggering unit  301  is configured to carry the traverse information of the message and trigger the service if the deadlock check succeeds. 
         [0071]      FIG. 5  is a block diagram illustrating another internal structure of the deadlock check unit  302 . As illustrated in  FIG. 5 , the deadlock check unit  302  includes an information storage module  501 , an information extracting module  502  and a check and determination module  503 . 
         [0072]    The information storage module  501  is configured to store the traverse information of the message on which the deadlock check succeeds. 
         [0073]    The information extracting module  502  is configured to extract the traverse information of the message of the recursively triggered service from the information storage module  501 , to inquire about the triggering information of the message from stored user service data, and to provide the extracted traverse information and the triggering information inquired for to the check and determination module  503 . 
         [0074]    The check and determination module  503  is configured to match the triggering information of the message of the recursively triggered service with the traverse information; to determine that the deadlock check fails if there is a match; to determine that the deadlock check succeeds if there is not any match; and to feed the check result back to the service triggering unit. 
         [0075]    The service triggering unit  301  is configured to further provide the traverse information of the service to the information storage module  501  if the deadlock check succeeds. 
         [0076]    The message transfer device may be implemented in a DCS or an MCS. 
         [0077]    The specific operations of the function units of the device illustrated in  FIG. 3  may be in accordance with the steps in the above described methods. 
         [0078]    A method and a device for transferring a message in one embodiment of the invention have been described in detail. A method and a device for transferring a message according to one embodiment of the invention are described below in detail with reference to specific examples, taking the SMS as an example and assuming a case of recursive deadlock in the SMS. 
         [0079]    In all the embodiments described below, the case of adding a message transfer field that may be carried and transferred is taken as an example, and the message traverse field is noted ForwardTrace field, as shown in Table 1. 
         [0000]    
       
         
               
               
               
               
             
           
               
                 TABLE 1 
               
               
                   
               
             
             
               
                 ForwardTrace 
                 Variable 
                 String Type 
                 Table of Traversed 
               
               
                   
                 Length 
                 (C_OctetString) 
                 Numbers of Message, 
               
               
                   
                 (Var) 0-420 
                   
                 Variable Length 
               
               
                   
               
             
          
         
       
     
       Embodiment 1 
       [0080]    In this embodiment, the case that a forwarding loop exists in the home network of the caller is taken as an example. It is assumed that user A sends a short message to user B, user B has set to forward messages to user C, and user C has also set to forward messages to user B. It is also assumed that the operations about message forwarding are described. Other operations in the SMSC such as authentication and debiting are not described. 
         [0081]      FIG. 6  is a flowchart illustrating the short message transfer service according to one embodiment of the invention. As illustrated in  FIG. 6 , the process includes the following steps. 
         [0082]    Step  601 : User A submits the short message intended for user B to the home SMSC A of user A. 
         [0083]    Step  602 : SMSC A returns an acknowledgement message to user A. 
         [0084]    Step  603 : SMAC A inquires about whether user A and user B have subscribed for the short message VAS. 
         [0085]    If the short message VAS is subscribed for, the originally submitted message is forwarded to and processed by the DCS. In one embodiment of the invention, it is assumed that the inquiry shows that the users have subscribed for VAS. 
         [0086]    Step  604 : SMSC A forwards the originally submitted message to DCS A. 
         [0087]    Step  605 : DCS A returns an acknowledgement to SMSC A, notifying SMSC A that this message will be processed by DCS A. 
         [0088]    Step  606 : It is found by DCS A that user B is not a local user, and a service inquiry request message is sent to the home DCS of user B, i.e., DCS B. 
         [0089]    In this step, a ForwardTrace field is carried in the service inquiry request message, and the caller number and the called number are filled in the field, such as in the form of [A-B]. 
         [0090]    Step  607 : The inquiry by DCS B shows that user B has subscribed for MFS, and the destination number of the MFS is user C. 
         [0091]    A matching is performed by DCS B between the content of the ForwardTrace field and the destination number C of the MFS. If a number the same as the destination number of the MFS is found in the ForwardTrace field, the process proceeds to step  608 . 
         [0092]    Step  608 : DCS B returns a service inquiry response message to DCS A. 
         [0093]    In this step, a ForwardTrace field is carried in the service inquiry response message, and the destination number of the MFS C is filled in the field. In other words, the content of the field may be [A-B-C]. 
         [0094]    Step  609 : It is found by DCS A that user C is not a local user, and a service inquiry request message is sent to the home DCS of user C, i.e., DCS C. 
         [0095]    In this step, a ForwardTrace field is carried by DCS A in the service inquiry request message, and the caller number, the called number and the destination number of the MFS C are filled in the field. In other words, the content of the field may be [A-B-C]. 
         [0096]    Step  610 : The inquiry by DCS C shows that user C has subscribed for MFS, and the destination number of the MFS is set to be user B. 
         [0097]    A matching is performed by DCS C between the content of the ForwardTrace field and the destination number B of the MFS obtained by the present inquiry. If a number the same as the destination number B of the MFS is found in the ForwardTrace field, the check is determined as a failure, the process of the call forwarding is stopped, and the process proceeds to step  611 . 
         [0098]    Step  611 : DCS C submits the short message to SMSC C. 
         [0099]    Step  612 : SMSC C returns a submission response to DCS C. 
         [0100]    Step  613 : SMSC C delivers the short message to USER C. 
         [0101]    Step  614 : User C returns a correct reception acknowledgement to SMSC C. 
       Embodiment 2 
       [0102]    In this embodiment, the case that a forwarding loop exists in the home network of the called is taken as an example. It is assumed that user A sends a short message to user B, user B has set to forward messages to user C, and user C has also set to forward messages to user B. It is also assumed that the operations about message forwarding are described. Other operations in the SMSC such as authentication and debiting are not described. 
         [0103]      FIG. 7  is a flowchart illustrating the short message transfer service according to one embodiment of the invention. As illustrated in  FIG. 7 , the process includes the following steps. 
         [0104]    Step  701 ; User A submits the short message intended for user B to the home SMSC A of user A. 
         [0105]    Step  702 : SMSC A returns an acknowledgement message to user A. 
         [0106]    Step  703 : SMAC A inquires about whether user A and user B have subscribed for the short message VAS. 
         [0107]    If the short message VAS is subscribed for, the originally submitted message is forwarded to and processed by the DCS. In one embodiment of the invention, it is assumed that the inquiry shows that the users have subscribed for VAS. 
         [0108]    Step  704 : SMSC A forwards the originally submitted message to DCS A. 
         [0109]    Step  705 : DCS A returns an acknowledgement to SMSC A, notifying SMSC A that this message will be processed by DCS A. 
         [0110]    Step  706 : It is found by DCS A that user B is not a local user, and a service forwarding message is sent to the home DCS of user B, i.e., the service message is forwarded to DCS B. 
         [0111]    In this step, a ForwardTrace field is carried in the service forwarding message, and the caller number and the called number are filled in the field, such as in the form of [A-B]. 
         [0112]    Step  707 : DCS B returns a forwarding response message to DCS A. 
         [0113]    Step  708 : The inquiry by DCS B shows that user B has subscribed for MFS, and the destination number of the MFS is user C. 
         [0114]    A matching is performed by DCS B between the content of the ForwardTrace field and the destination number C of the MFS. If a number the same as the destination number of the MFS is found in the ForwardTrace field, the process proceeds to step  709 . 
         [0115]    Step  709 : It is found by DCS B that user C is not a local user, and a service forwarding message is sent to the home DCS of user C, i.e., the service message is forwarded to DCS C. 
         [0116]    In this step, a ForwardTrace field is carried in the service forwarding message, and the caller number, the called number and the destination number C are filled in the field, i.e., the content of the field may be in the form of [A-B-C]. 
         [0117]    Step  710 : DCS C returns a response message to DCS B. 
         [0118]    Step  711 : It is found by DCS C that user C has subscribed for the MFS, and the destination number of the MFS is B. 
         [0119]    A matching is performed by DCS C between the content of the ForwardTrace field and the destination number B of the MFS. If a number the same as the destination number B of the MFS is found in the ForwardTrace field, the deadlock check is determined as a failure, the message forwarding process is stopped and the process proceeds to step  712 . 
         [0120]    Step  712 : DCS C submits the short message to SMSC C. 
         [0121]    Step  713 : SMSC C returns a submission response to DCS C. 
         [0122]    Step  714 : SMSC C delivers the short message to user C. 
         [0123]    Step  715 : User C returns a correct reception acknowledgement to SMSC C. 
       Embodiment 3 
       [0124]    In this embodiment, the case that a forwarding loop exists between different networks or different operators is taken as an example. It is assumed that user A sends a short message to user B, user B has set to forward messages to user A, and user A has also set to forward messages to user B. It is also assumed that the operations about message forwarding are described. Other operations in the SMSC such as authentication and debiting are not described. 
         [0125]      FIG. 8  is a flowchart illustrating the short message transfer service according to one embodiment of the invention. As illustrated in  FIG. 8 , the process includes the following steps. 
         [0126]    Step  801 : User A submits the short message intended for user B to the home SMSC A of user A. 
         [0127]    Step  802 : SMSC A returns an acknowledgement message to user A. 
         [0128]    Step  803 : SMAC A inquires about whether user A and user B have subscribed for the short message VAS. 
         [0129]    In this embodiment, it is assumed that the inquiry shows that A has subscribed for SMFS, and user B is a user of an external network. The process proceeds to step  804 . 
         [0130]    Step  804 : SMSC A delivers the original message to the Short Message GateWay (SMGW) to process the short message VAS subscribed by the user. 
         [0131]    The SMGW is the bridge for communicating short messages between different operators or different networks, and functions to forward messages. Differences between network types and protocol types may be masked out by forwarding through an SMGW. 
         [0132]    Step  805 : The SMGW returns an acknowledgement to SMSC A. 
         [0133]    Step  806 : The SMGW submits the message to the SMSC which the called belongs to, i.e., SMSC B. 
         [0134]    Step  807 : SMSC B returns an acknowledgement to the SMGW. 
         [0135]    Step  808 : The inquiry by the SMSC B shows that user B has subscribed for the short message VAS. 
         [0136]    Step  809 : SMSC B forwards the originally submitted message to DCS B to be processed by DCS B. 
         [0137]    Step  810 : DCS B returns an acknowledgement to SMSC B, notifying SMSC B that the message will be processed by DCS B. 
         [0138]    Step  811 : It is found by DCS B that user B has subscribed for forwarding service, and the forwarding destination is user A. 
         [0139]    Step  812 : DCS B submits the message to SMSC B, specifying user A as the called user. 
         [0140]    In this step, DCS B causes the ForwardTrace field to be carried in the service submission message, and the caller number, the called number and the destination number A of the MFS are filled in the field, i.e., the content of the field may be [A-B-A]. 
         [0141]    Step  813 : SMSC B returns an acknowledgement to DCS B. 
         [0142]    Step  814 : The inquiry by SMSC B shows that user A is a user of an external network, and SMSC B delivers a message for replacing the destination number to the SMGW. 
         [0143]    In this step, the ForwardTrace field filled with the caller number, the called number and the forwarding number is sent by SMSC B. The content of the field is [A-B-A]. 
         [0144]    Step  815 : The SMGW returns an acknowledgement to SMSC B. 
         [0145]    Step  816 : The SMGW delivers the message SMSC A which user A belongs to. 
         [0146]    In this step, the ForwardTrace field filled with the caller number, the called number and the forwarding number is carried in the service submission message. 
         [0147]    Step  817 : SMSC A returns an acknowledgement to the SMGW. 
         [0148]    Step  818 : The inquiry by SMSC A shows that user A has subscribed for the short message VAS. 
         [0149]    Step  819 : SMSC A forwards the message to DCS A to be processed by DCS A. 
         [0150]    In this step, the ForwardTrace field filled with the caller number, the called number and the forwarding number is carried in the message. 
         [0151]    Step  820 : DCS A returns an acknowledgement to SMSC A, notifying SMSC A that this message will be processed by DCS A. 
         [0152]    Step  821 : It is found by DCS A that user A has subscribed for the MFS, and the destination number of the MFS is B. 
         [0153]    A matching is performed by DCS A between the content of the ForwardTrace field and the called number B obtained by the inquiry, and the number B is found in the content. The deadlock check is then determined as a failure. The message forwarding process is stopped and step  822  is executed. 
         [0154]    Step  822 : DCS A submits the short message to SMSC A. 
         [0155]    Step  823 : SMSC A returns a submission response to DCS A. 
         [0156]    Step  824 : SMSC A delivers the short message to user C. 
         [0157]    Step  825 : User A returns a correct reception acknowledgement to SMSC C. 
         [0158]    In the three embodiments described above, the case in which the traverse information is the traversed numbers is taken as an example. If the traverse information is the number of triggerings, the operations are similar. The operation of carrying the field of ForwardTrace is needed to be replaced with carrying a field filled with the number of triggerings. For example, a ForwardTimes field may be set for the trigger times to be filled in, as shown in Table 2. 
         [0000]    
       
         
               
               
               
               
               
             
           
               
                   
                 TABLE 2 
               
               
                   
                   
               
             
             
               
                   
                 ForwardTimes 
                 1 
                 Integer 
                 Number of Triggerings 
               
               
                   
                   
               
             
          
         
       
     
         [0159]    The operation of filling new traversed numbers should be changed to updating the number of triggerings in the ForwardTimes field, and the operation of matching the current triggering number with the traversed numbers should be changed to comparing the number of triggerings with a threshold of the number of triggerings. 
         [0160]    Alternatively, the ForwardTrace field and the ForwardTimes field may be carried simultaneously. In this case, a double matching is performed. The deadlock check is to be a failure if any one of the two matching operations shows that a matching exists. 
         [0161]    For the setting of the storage area for message information in the DCS, please refer to the case described above, and is not described here in detail. 
         [0162]    For the internal structure of the DCS in the embodiments, please refer to the device described in  FIGS. 3 to 5 . 
         [0163]    From the above description of embodiments, it is apparent to the person skilled in the art that the invention may be realized by means software, hardware or both of them. The software may be stored in a storage medium, such as ROM/RAM, disks, including instructions for a computer, such as a Personal Computer, a server or a network device, to implement the embodiments. 
         [0164]    The previous description of the disclosed embodiments is provided to enable any person skilled in the art to make or use the present invention. Various modifications to these embodiments will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other embodiments without departing from the spirit or scope of the invention. Thus, the present invention is not intended to be limited to the embodiments shown herein but is to be accorded with the widest scope consistent with the principles and novel features disclosed here.