[asterisk-dev] [Code Review] 3173: chan_sip refactor - sip_route

wdoekes reviewboard at asterisk.org
Mon Feb 3 08:25:07 CST 2014



> On Feb. 3, 2014, 1:26 p.m., wdoekes wrote:
> > /trunk/channels/sip/include/route.h, lines 33-35
> > <https://reviewboard.asterisk.org/r/3173/diff/1/?file=53352#file53352line33>
> >
> >     A bit uncommon to have the unknown between the known values.
> 
> Corey Farrell wrote:
>     route_loose = 0 because a route is loose when no hops exist, and the field is zero when sip_route's are created (as part of a larger ast_calloc).
>     
>     route_unknown is used when a hop is inserted to the head of sip_route->list.  Maybe it would be better if I rename route_unknown to route_invalidated, document that strict/loose needs to be rechecked?

I don't have an opinion regarding unknown vs. invalidated, but if you're using the 0-value implicitly through the calloc, you should document doing so.


> On Feb. 3, 2014, 1:26 p.m., wdoekes wrote:
> > /trunk/channels/sip/route.c, line 180
> > <https://reviewboard.asterisk.org/r/3173/diff/1/?file=53354#file53354line180>
> >
> >     const struct sip_route ?
> 
> Corey Farrell wrote:
>     No.  sip_route_is_strict writes to route->type when it equals route_unknown.

I can see that. But I'm not fond of is_something() taking a non-const.

(Although the alternatives of an explicit sip_route_finalize() call or (worse) const-casting aren't too pretty either.)


- wdoekes


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/3173/#review10741
-----------------------------------------------------------


On Feb. 3, 2014, 2:10 p.m., Corey Farrell wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviewboard.asterisk.org/r/3173/
> -----------------------------------------------------------
> 
> (Updated Feb. 3, 2014, 2:10 p.m.)
> 
> 
> Review request for Asterisk Developers.
> 
> 
> Bugs: ASTERISK-22582
>     https://issues.asterisk.org/jira/browse/ASTERISK-22582
> 
> 
> Repository: Asterisk
> 
> 
> Description
> -------
> 
> Isolates code that manages struct sip_route.
> 
> * Move route code to sip/route.c + sip/include/route.h
> * Rename functions to sip_route_*
> * Replace ad-hoc list code with macro's from linkedlists.h
> * Create sip_route_process_header() to processes Path and Record-Route headers (previously done with different code in build_route and build_path)
> * Make sip_route uri accessor return a const
> * Move struct uriparams, struct contact and contactliststruct from sip.h to reqresp_parser.h.  sip/route.c uses reqresp_parser.h but not sip.h, this was a problem.  These moved declares are not used outside of reqresp_parser.
> * While modifying reqprep() the lack of {} caused me trouble.  I added them.
> * Code outside route.c treats sip_route as an opaque structure, using macro's or procedures for all access.
> 
> 
> Diffs
> -----
> 
>   /trunk/channels/sip/route.c PRE-CREATION 
>   /trunk/channels/sip/include/sip.h 407178 
>   /trunk/channels/sip/include/route.h PRE-CREATION 
>   /trunk/channels/sip/include/reqresp_parser.h 407178 
>   /trunk/channels/chan_sip.c 407178 
> 
> Diff: https://reviewboard.asterisk.org/r/3173/diff/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Corey Farrell
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20140203/c900657a/attachment-0001.html>


More information about the asterisk-dev mailing list