I've been following this discussion for a bit. I agree that the grammar is
probably overly permissive but it is what it is. Just for fun, I decided to
contribute a bit here. In my implementation, I run the following little
preprocessor bit over all incoming messages. The idea is to try to put the
message in a little bit more "normal" form prior to parsing. This code is
part of the Asterisk implementation as well when the "pendantic" option is
turned on. It does a single pass over the message and collapses it
"in-place" in the provided buffer. It can probably be improved so I'm
interested in any and all comments. No license on this, use it as you
will...
#include <ctype.h>
#include <stdlib.h>
int
lws2sws(char *msgbuf, int len)
{
int h = 0, t = 0;
int lws = 0;
if (msgbuf == NULL)
return (-1);
for (; h < len;) {
/* Eliminate all CRs */
if (msgbuf[h] == '\r') {
h++;
continue;
}
/* Check for end-of-line */
if (msgbuf[h] == '\n') {
/* Check for end-of-message */
if (h + 1 == len)
break;
/* Check for a continuation line */
if (msgbuf[h + 1] == ' ') {
/* Merge continuation line */
h++;
continue;
}
/* Propagate LF and start new line */
msgbuf[t++] = msgbuf[h++];
lws = 0;
continue;
}
if (msgbuf[h] == ' ' || msgbuf[h] == '\t') {
if (lws) {
h++;
continue;
}
msgbuf[t++] = msgbuf[h++];
lws = 1;
continue;
}
msgbuf[t++] = msgbuf[h++];
if (lws)
lws = 0;
}
msgbuf[t] = '\0';
return t;
}
-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Iñaki
Baz Castillo
Sent: Saturday, March 29, 2008 4:26 PM
To: [email protected]
Subject: Re: [Sip-implementors] Why SIP abnf is so permissive???
El Sábado, 29 de Marzo de 2008, Valentin Nechayev escribió:
> Your example
> (b) is too radical, it's better to compare with something like:
>
> === c)
> INVITE sip:[EMAIL PROTECTED] SIP/2.0
> From : alice <[EMAIL PROTECTED]>; tag=1
> To : white rabbit <[EMAIL PROTECTED]>; tag=2
> i : [EMAIL PROTECTED]
> ===
>
> which isn't much worse than non-spaced form.
Sure it's not so bad, but for example I know some SIP devices/softphones
that
fail parsing a message with SP / HTAB between header field name and COLON.
Probably no SIP implementation adds unnecesary SP / HTAB after COLON, so
most
of them can interoperate, but the risk is there.
> > Ok, I understand that SIP was born from HTTP and so, but anyway I hope
in
> > a future SIP/X.0 appears eliminating so many and innecesary permissive
> > syntax.
>
> If to invent such, this already won't be text format
Why not? I like SIP format, it's human readable (AFAIK one of its success
cause) but IMHO a no so much flexible grammar could be nicer (no so much
space allowed, no line folding... ) just it, I wouldn't like to see a binary
format ;)
Thanks a lot for your comment and explanation. Best regards.
--
Iñaki Baz Castillo
_______________________________________________
Sip-implementors mailing list
[email protected]
https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors
_______________________________________________
Sip-implementors mailing list
[email protected]
https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors