Re: [reSIProcate] Getting unexpected debug errors
Alan Hawrylyshen wrote:
On 2005.12.13, at 01:07 , John Draper wrote:
Hi,
After getting about 5 or 6 "100 trying" messages in the logs, I got
two "180 Ringing"
messages.... See below.
Honestly John;
You claim that you read RFC 3261, so I propose that you are just
trying to irritate us.
From Section 8.1.1 Generating the Request
Look - there are 275+ pages in just one of 3 or 4 RFC specification
documents. I HAVE
read it, but I cannot possibly remember every word I've read. I know
I'm a slow learner,
but I don't believe I'm out of line asking this. I see others asking
questions that appear
to be as being obvious, but I'm expecting others are also having more
then usual problems
because of the lack of examples and docs, and I know I'm not the only
one saying this.
If I "appear" to be irritating the list, I apologize for it. Like
everyone new that comes
on this list, people are going to ask questions.
...
CSeq : The CSeq header field serves as a way to identify and order
transactions. It consists of a sequence
number and a method. The method MUST match that of the request. For
non-REGISTER requests outside
of a dialog, the sequence number value is arbitrary. The sequence
number value MUST be expressible as a
32-bit unsigned integer and MUST be less than 2**31. As long as it
follows the above guidelines, a client
may use any mechanism it would like to select CSeq header field values.
Section 12.2.1 discusses construction of the CSeq for requests within
a dialog.
Example:
CSeq: 4711 INVITE
Section 12.2.1.1 (Emphasis mine) Generating the Request
*Requests* within a dialog MUST contain strictly monotonically
increasing and contiguous CSeq sequence numbers (increasing-by-one)
in each direction (excepting ACK and CANCEL of course, whose numbers
equal the requests being acknowledged or cancelled). Therefore, if
the local sequence number is not empty, the value of the local
sequence number MUST be incremented by one, and this value MUST be
placed into the CSeq header field. If the local sequence number is
empty, an initial value MUST be chosen using the guidelines of
Section 8.1.1.5. The method field in the CSeq header field value
MUST match the method of the request.
CSeqs in responses match the Request.
Secondly,
maddr is NOT how you route requests. The To line is of little
consequence to the stack. Only proxies (and UAs) care about the To
line URI. Certainly the stack does not. If you want broken SIP that
goes somewhere other than where the protocol says it will go, then
you want to call sendTo(...Tuple...) not send().
Obviously I did not know this. Is this used in any of the test code?
I didn't see any mechanism
of sending used in "test" other then "send". So, no - I did NOT know
about this, but now that
it was brought to my attention, I'll certainly look into it. I don't
suppose anyone might have
some examples how to use it?
If you cannot make DNS do the right thing, you are going to have lots
of problems.
If I can control the DNS from the client side and not the server side,
I would have
no problems. I don't have control over what I can do on the Server
side. Nor can I
make any policy decisions in that regard.
Just to let you know, I AM figuring things out, and I AM making
progress, just not
as fast as I'm used to when dealing with other libraries or modules.
John