| 698 | |
| 699 | #ifdef TM_TIMER_DEBUG |
| 700 | static void check_timer_list( struct timer* timer_list, char *txt) |
| 701 | { |
| 702 | struct timer_link *tl ; |
| 703 | struct timer_link *tl1 ; |
| 704 | |
| 705 | if (list_id<0 || list_id>=NR_OF_TIMER_LISTS) { |
| 706 | LM_CRIT("TM TIMER list [%d] bug [%s]\n",timer_list->id, txt); |
| 707 | abort(); |
| 708 | } |
| 709 | |
| 710 | tl = timer_list->last_tl.prev_tl; |
| 711 | while (tl!=&timer_list->first_tl) { |
| 712 | if (tl->prev_tl==0) { |
| 713 | LM_CRIT("TM TIMER list [%d] prev_tl==0 [%s]\n",timer_list->id, txt); |
| 714 | abort(); |
| 715 | } |
| 716 | tl = tl->prev_tl; |
| 717 | } |
| 718 | |
| 719 | tl = timer_list->first_tl.next_tl; |
| 720 | while (tl!=&timer_list->last_tl) { |
| 721 | if (tl->next_tl==0) { |
| 722 | LM_CRIT("TM TIMER list [%d] next_tl==0 [%s]\n",timer_list->id, txt); |
| 723 | abort(); |
| 724 | } |
| 725 | tl = tl->next_tl; |
| 726 | } |
| 727 | |
| 728 | tl = timer_list->first_tl.next_tl; |
| 729 | while (tl!=&timer_list->last_tl) { |
| 730 | if (tl->ld_tl==0) { |
| 731 | LM_CRIT("TM TIMER list [%d] corrupted - ld=0 [%s]\n", |
| 732 | timer_list->id, txt); |
| 733 | abort(); |
| 734 | } |
| 735 | if (tl->ld_tl->ld_tl!=tl) { |
| 736 | LM_CRIT("TM TIMER list [%d] corrupted - ld cycle broken [%s]\n", |
| 737 | timer_list->id, txt); |
| 738 | abort(); |
| 739 | } |
| 740 | |
| 741 | if (tl->ld_tl!=tl) { |
| 742 | tl1 = tl->next_tl; |
| 743 | while(tl1!=tl->ld_tl) { |
| 744 | if (tl1->ld_tl) { |
| 745 | LM_CRIT("TM TIMER list [%d] corrupted - ld!=0 inside " |
| 746 | "cycle [%s]\n", timer_list->id, txt); |
| 747 | abort(); |
| 748 | } |
| 749 | tl1 = tl1->next_tl; |
| 750 | } |
| 751 | } |
| 752 | |
| 753 | tl = tl->ld_tl->next_tl; |
| 754 | } |
| 755 | } |
| 756 | #endif |
| 757 |
no outgoing calls
no test coverage detected