On the sysmoBTS (ARM7TDMI) the parsing of a simple response
with quoted string takes up to 200ms. Parsing the single
digest line takes 40ms itself. Create a custom parser to
speed things up to avoid the backtracking between three
optional parsers that are combined in a choice.
Instead of using auth_param_name which returns token, just use
the token for now. We don't make use of the specific rules in
the SIPParser so there is no used.
Enforcing the legemtimate status values is better done in
the parser and not in the grammar. We don't do it in the
parser yet but that can be done later.
* Do not use >>#instVarNamed:put: but add selectors
* Pre-allocate some arrays with a default string to avoid
re-allocations at the start
* Share same parser trees to avoid construction costs
* Remove some lazy allocation and always allocate it
A rule like "ANY star / quoted_string" will only parse the ANY
rules for '0' times. Change the order to avoid this and add a
small test that we properly parse the From address now.
token requires the presence of at least one match. The usage of
star has been wrong and is corrected now. This was seen due not
being able to parse a From address that included a diplay name.
Remove the trailing ";" to fix the parsing bug.
Add a testcase for testing ProxyAuthenticate and ProxyAuthorize,
extend the grammar and parser to handle the needed bits. Document
another error/failure with the dialog handling code and create a
testcase that fully connects a call.
To support servers behind a NAT we need to include the rport
parameter in our via. This way the server will respond to us
on the sourceport it got the message from.
We will probably need to implement the same and return the
sourceport as rport=1234 to the other end.
Update the grammar to handle the WWW-Authenticate according to the
RFC. Add the parser to compact everything into a Dictionary. Add the
realm last to avoid being overwritten with another parameter.
SWS is optional and will always match. This means the SWS rule
would match everything and we would never finish. Norbert has
pointed out that an optional element will match but not consume
anything. One should avoid a rule like aParser optional plus.
* Change the category for the tests and extensions
* Rewrite usages of >>nl and >>cr
* There are still issues with the Socket code, Datagram handling
and and expands.
Right now the UTF8 support for the displayname is still
missing and needs to be added later. The to_spec is not
part of the RFC but it makes our code more happy if things
look like the from_spec.
Add the grammar for the Via parameter, introduce a generic
array folding class to turn it into a string. Add a data holder
that returns the complete string but also the branch if that
is required.