[OpenSER-Devel] PV issues (was Re: discussion: issues with local_route)
Dan Pascu
dan at ag-projects.com
Mon Jun 23 22:03:34 CEST 2008
On Monday 23 June 2008, Daniel-Constantin Mierla wrote:
> Hello Dan,
>
> On 06/19/08 16:02, Dan Pascu wrote:
> > [...]
> > Should I remind you that
> > even after about 3 incarnations, the pseudovariable system still has
> > issues dealing with NULL values correctly (by design) and that
> > certain operators do not work in all cases?
>
Daniel,
the purpose of my message was to highlight that no functionality in
openser was ever pushed in its final, complete form. Everything started
with something smaller and later evolved into something more complex.
If this new functionality doesn't break backward compatibility by
interfering and altering the current way things are processed by openser,
I see no reason to remove it just to wait for a more complete version to
appear. As far as I see, nothing old is broken, and those who'll start to
use it, will face the same problems as they did when they tried any new
feature that was just added to openser: they will discover some things
that don't work as expected and will file bug reports to get them fixed.
So my message was not intended to start a new thread discussion PV issues.
> can you summarize the operators and the issues? The redesign for PVs
> were to allow indexes and names, then dynamic indexes and names, there
> was no redesign of the functionality, just that the functions behind
> were moved from xlog to core and renamed.
I will, but we should pick this up after the release, because it's more
than a bug fix process.
>
> The NULL behaves differently for specific classes of PV, some delete
> and some reset. I do not recall right now if it is an item opened on
> the tracker, but if not, let;s open one and gather all these there.
The problem was raised by both Juha and me and in the end you discarded it
because it was not possible to fix it with the existing design.
>
> AVPs and VARs do not have null values, also $r[uUd] - null gets a
> different meaning, like delete or reset. I don't see how to make it
> behave same for all PV, unless we remove the null, and stick to
> functions like delete or reset.
I do not recall all the details, but I can try to highlight what I
remember, at least about the issues with null.
- null is not a real value, so it doesn't behave like one most of the
time. if you try to write a simple test like if ($avp(s:xyz)) will not be
false if $avp(s:xyz) is not set, i.e. is null, so one has to write it
like if (!is_avp_set("$avp(s:xyz)") || $avp(s:xyz)) which is unnatural.
- $var(x) however doesn't have this issue, as an unassigned var is the
same as the integer 0, unlike an unassigned avp which is null. so
sometimes when you copy an avp to a var, or when you compare an avp and a
var, if the avp is not set you get an error mesage, so again you have to
check before you do the operation, which increases the number of checks
too much in the script and forces one to write heavy code.
IMO, an unset avp, an empty string or the integer 0 should all act as a
false value to simplify how the script is written and to make it more
consistent.
As I said, I do not want to enter into a discussion right now how to do
this, let's leave it for after the release, when I'll try to remember all
the issues I had with it and we can see how it can be fixed.
--
Dan
More information about the Devel
mailing list