There is a problem with URI parsing that shows up as this error in the
unit tests:

1) test: UrlTest::testBigUriScheme (F) line: 1756 
/home/dworley/sandbox-162/sipX/./sipXtackLib/src/test/net/UrlTest.cpp
assertion failed
- Expression: bigschemeUrl.getScheme() == Url::UnknownUrlScheme
- BUG XPB-843: fails on FC6

Some investigation shows that the same problem shows up when turning
into a Url any string of the form "letters junk", e.g., "a!".  Because
we are willing to allow the specification of the "sip" scheme to be
omitted, the initial portion of the string is interpreted as
"sip:[host-name]", e.g., "sip:a".  But because the Url::parseString
method that does the real work can be used to parse strings that contain
multiple URIs separated with commas, Url::parseString does not declare
an error if the input string can be parsed as a URI followed by
extraneous text, it (thinks that it) returns a pointer to the extraneous
text and returns the parsed form of the URI portion.

The result is that most or all strings that start with a letter can be
parsed as URIs without a detected error.

I think that the proper fix is to revise Url::parseString to sharpen its
error detection:

- if the nextUri parameter (which returns the un-parsed trailing
characters) is NULL, then the parse must consume all of the input string
(urlString).  (If uriForm == NameAddr, there may be trailing SWS.)

- if nextUri is not NULL, the parse must consume all of the input
string, or the parsed portion must be followed by a comma (and
surrounding SWS).

If these conditions are not met, Url::parseString will return false
(indicating parse failed) and set the scheme of the constructed Url to
UnknownUrlScheme.

If Url::parseString is adjusted this way, all of the Url constructors
and other users of parseString can be tweaked to provide the behavior
one intuitively expects, viz., if there is no specified way for the
parsing operation to return information about trailing text, the parse
must consume the entire input string.

Comments?

Dale


_______________________________________________
sipx-dev mailing list [email protected]
List Archive: http://list.sipfoundry.org/archive/sipx-dev
Unsubscribe: http://list.sipfoundry.org/mailman/listinfo/sipx-dev
sipXecs IP PBX -- http://www.sipfoundry.org/

Reply via email to