thank you fro you help klaus, I did not know about sipwise.com.
> Date: Thu, 13 Nov 2008 10:06:11 +0100
> From: klaus.mailinglists@pernau.at
> To: fborot@hotmail.com
> CC: users@lists.kamailio.org
> Subject: Re: [Kamailio-Users] help understanding kamailio.cfg and processing call flow
>
> 1. read the confige file from sipwise.com - IMO it is very self explanatory.
>
> some comments below:
>
> Fabian Borot schrieb:
> > hello
> >
> > Register with Auth:
> >
> > 1- user sends REGISTER request w/o the encripted credentials
> > 2- kamailio answers with 401 and sends the challenge
> > 3- the uac sends the REGISTER again, this time with the right
> > credentials and after verifying kamailio sends 200 OK
> > 4- if the user is behind a NAT we can fix the contact info before saving
> > it to the location db.
> >
> >
> > With the help of the forum and the tutorials I have found in the
> > internet I have been able to accomplish it with these
> > commands:
> >
> > route{
> > if (uri==myself) {
> > if (method=="REGISTER") {
> > xlog("L_INFO","mylog: starting to process
> > REGISTER.Info.\n");
> > if (!www_authorize("", "subscriber")) {
> > xlog("L_INFO","mylog: REGISTER came without
> > auth, sending challenge.\n");
> > www_challenge("", "0");
> > exit;
> > };
> > if (nat_uac_test("1")){
> > xlog("L_INFO","mylog: REGISTER-Device behind
> > NAT.\n");
> > fix_nated_register();
> > }
> > force_rport();
> > save("location");
> > xlog("L_INFO","mylog: save-location successful.\n");
> > exit;
> > }
> > route(1);
> > }
> > route[1] {
> > if (t_relay()) {
> > xlog("L_INFO","mylog: Route 1 section. Method [$rm].");
> > } else {
> > sl_reply_error();
> > xlog("L_INFO","mylog: Route 1 section. T_Relay failed.
> > Method [$rm].");
> > };
> > exit;
> > }
> >
> > but here come the first questions:
> > 1- when the uac sends the first REGISTER, the function www_challenge()
> > is the one that actually sends the "401" message?
>
> Yes, it sends 401 and exits immediately. Thus the exit after 401 would
> not be needed, but it is good to have it there as it eases reading the
> config script.
>
> > or the "exit" just exit out the "if" block and the script will continue
> > with route(1) which in turns executes "t_relay()?
> >
> > ++from the doc, www_challenge() function++++
> > The function challenges a user agent. It will generate a WWW-Authorize
> > header field containing a digest challenge, it
> > will put the header field into a response generated from the request the
> > server is processing and send the reply.
> > +++++++++++++++++++++++++++++++++
> >
> >
> > 2- the "exit" after the save("location") function I assume would stop
> > the execution of the script and at that point kamailio
> > responds with "200 ok"? or just exit out the "if" block, the script then
> > reaches the "route(1)" section and the "t_relay()"
> > sends the "200 ok"?
>
> save stores the record and send back 200 OK. But it does not stop
> processing. Thus, you MUST have an exit after save().
>
> >
> > ++ from the doc, core-cookbook, exit() function+++++++
> > Stop the execution of the configuration script – it has the same
> > behaviour as return(0). It does not affect the
> > implicit action to be taken after script execution.
> > ++++++++++++++++++++++++++++
> >
> > 3- the "t_relay" function: does that function creates and sends the
> > approriate response for each request?
> > ex1: an INVITE is received, does t_relay() "know" that it can send "100
> > trying" automatically?
>
> t_relay() sends automatically 100 trying to the caller (except you call
> it with some special flags (see README of tm module)) and forwards the
> request to the next destination.
>
> > ex2: a "200 OK" is received as a response to an INVITE, does t_relay
> > knows that it has to send an "ACK"?
>
> No. The proxy does not send ACK. The proxy forwards the response to the
> caller. Then the caller will send the ACK which will be forwarded by the
> proxy to the callee. For successful call setups the proxy wont send
> ACKs. The proxy will send ACK to the callee by itself only if a call
> gets cancelled.
>
> >
> > ++++++from the doc, t_relay() funcion ++++++++++
> > From user's perspective, the major function is t_relay(). It setup
> > transaction state, absorb retransmissions from upstream,
> > generate downstream retransmissions and correlate replies to requests.
> > +++++++++++++++++++++++++++++
> >
> >
> > 4- why do I see ";" even after a "}", is it needed sometimes?
>
> };
> is the same as
> }
>
> choose the syntax you like
>
> > 5- is "exit" the same as "exit()"?
>
> I don't know - I always use exit;
> Probably exit() is just an alias.
>
>
> regards
> klaus
>
>
>
> >
> >
> > These may sound like dumb questions for some of the experienced users,
> > but for a newbie they are not. Also, if this sounds like "
> > hey, code my config file for me" I assure you that that is not the
> > intended purpose.
> > I would appreciate any help and thank everybody in advance.
> >
> >
> > Fabian
> >
> >
> >
> >
> >
> > ------------------------------------------------------------------------
> > Color coding for safety: Windows Live Hotmail alerts you to suspicious
> > email. Sign up today.
> > <http://windowslive.com/Explore/Hotmail?ocid=TXT_TAGLM_WL_hotmail_acq_safety_112008>
> >
> >
> > ------------------------------------------------------------------------
> >
> > _______________________________________________
> > Users mailing list
> > Users@lists.kamailio.org
> > http://lists.kamailio.org/cgi-bin/mailman/listinfo/users
Color coding for safety: Windows Live Hotmail alerts you to suspicious email. Sign up today.