Called periodicially to check for SIP timer expiration.
| 827 | |
| 828 | // Called periodicially to check for SIP timer expiration. |
| 829 | bool SipDialog::dialogPeriodicService() |
| 830 | { |
| 831 | // Take care. This is a potential deadlock if somone tries to add a locked SipDialog into the DialogMap, |
| 832 | // because the kicker code locks the whole DialogMap against modification. |
| 833 | ScopedLock lock(mDialogLock,__FILE__,__LINE__); |
| 834 | // Now we use TransactionUsers for client transactions, so this code handles only server transactions. |
| 835 | // The in-dialog server transactions are trivial - the transaction-layer simply resends the final |
| 836 | // response each time the request is received. |
| 837 | switch (mDialogType) { |
| 838 | case SIPDTUndefined: |
| 839 | case SIPDTRegister: |
| 840 | case SIPDTUnregister: |
| 841 | // FIXME: I dont think we delete these, ever. |
| 842 | break; |
| 843 | case SIPDTMTSMS: |
| 844 | case SIPDTMTC: |
| 845 | return mtPeriodicService(); |
| 846 | break; |
| 847 | case SIPDTMOSMS: |
| 848 | case SIPDTMOC: |
| 849 | case SIPDTMOUssd: |
| 850 | return moPeriodicService(); |
| 851 | break; |
| 852 | //default: break; |
| 853 | } |
| 854 | return false; |
| 855 | } |
| 856 | |
| 857 | |
| 858 | const char *DialogState::msgStateString(DialogState::msgState dstate) |