[asterisk-bugs] [LibSS7 0013495]: [patch] isup timers + q.764 compatibility + new cli commands

Asterisk Bug Tracker noreply at bugs.digium.com
Wed Nov 26 18:07:28 CST 2008


A NOTE has been added to this issue. 
====================================================================== 
http://bugs.digium.com/view.php?id=13495 
====================================================================== 
Reported By:                adomjan
Assigned To:                mattf
====================================================================== 
Project:                    LibSS7
Issue ID:                   13495
Category:                   New/Feature
Reproducibility:            always
Severity:                   feature
Priority:                   normal
Status:                     assigned
Asterisk Version:           SVN 
SVN Branch (only for SVN checkouts, not tarball releases): 1.6.0 
SVN Revision (number only!): 140434 
Disclaimer on File?:        N/A 
Request Review:              
====================================================================== 
Date Submitted:             2008-09-16 12:43 CDT
Last Modified:              2008-11-26 18:07 CST
====================================================================== 
Summary:                    [patch] isup timers + q.764 compatibility + new cli
commands
Description: 
This path introduce isup timers, + handle the abnormal situation as the
q.764 require.

not complete, isup_gra and the others have to move to call oriantated
model.

enable isup timers, put those lines after the sigchan lines(values just
example for testing):

isup_timer.t1 = 3000
isup_timer.t5 = 7000
isup_timer.t7 = 20000

isup_timer.t12 = 5000 
isup_timer.t13 = 17000
isup_timer.t14 = 5000 
isup_timer.t15 = 17000

isup_timer.t16 = 5000
isup_timer.t17 = 17000

isup_timer.t18 = 5000
isup_timer.t19 = 17000

isup_timer.t20 = 5000
isup_timer.t21 = 17000

isup_timer.t22 = 5000
isup_timer.t23 = 17000

======================================================================
Relationships       ID      Summary
----------------------------------------------------------------------
related to          0012036 [patch] RFC 3372 SIP-T receive implemen...
====================================================================== 

---------------------------------------------------------------------- 
 (0095561) mattf (administrator) - 2008-11-26 18:07
 http://bugs.digium.com/view.php?id=13495#c95561 
---------------------------------------------------------------------- 
Aside from some code style mismatches that are not architecturally
important (I fixed most of those already), here is what I have found so far
as I've been going through this patch:

chan_dahdi.c:

In ss7_linkset() for case ISUP_EVENT_COT:

                                        if (e->cot.got_sent_msg &
ISUP_GOT_IAM) {
                                                if (e->cot.passed |
p->called_complete) 
                                                        ss7_start_call(p,
linkset);
                                        } else
                                                isup_clear_callflags(ss7,
p->ss7call, ISUP_GOT_IAM); /* we will got a new IAM if cot failed */

Do we need to actually clear the callflags here, since they don't appear
to be set anyways...?

Your original code was:

+                                       /* Don't start call if we didn't
get IAM or COT failed! */
+                                       if (e->cot.got_sent_msg &
ISUP_GOT_IAM) {
+                                               if (e->cot.passed |
p->called_complete)
+                                                              
ss7_start_call(p, linkset);
+                                               } else
+                                                      
isup_clear_callflags(ss7, p->ss7call, ISUP_GOT_IAM); /* we will got a new
IAM if cot failed */

In my working version to be committed, I formatted it so that the code
looks more like it behaves.  Perhaps you didn't put a bracket in the right
place and this is a bug....

Also, is it even necessary to call isup_clear_callflags in chan_dahdi.c? 
Couldn't we just put this in the event handler code in isup.c?

We can probably remove the lock parameter from dahdi_ss7_call_null since
we are using recursive mutexes (which allow locks to be called more than
once) to simplify the interface.

isup.c:
This looks a lot like a bug:

isup_clear_callflags - this function checks for if (flags | ISUP_XXXX....)
which will always be true...

Should this be "if (flags & ISUP_SENT_XXX)" instead?



I am going to keep going through the patch, as there is a lot to think
about.  I'll post more comments as I get further.

Thanks. 

Issue History 
Date Modified    Username       Field                    Change               
====================================================================== 
2008-11-26 18:07 mattf          Note Added: 0095561                          
======================================================================




More information about the asterisk-bugs mailing list