Hello,

On 09/10/14 13:19, Errol Samuels wrote:
HI Daniel,

Thanks for that.

In my case I would need to use something like:

user_agent_header = "X-Proxy: $ua"
The only purpose of the above line is that Kamailio doesn't add an User-Agent header by itself, but this X-Proxy (which you can change as well).

Then you still add User-Agent in $uac_req(hdrs), but you don't end up with two User-Agent headers anymore.

Hope is more clear now the purpose of X-Proxy header.

Cheers,
Daniel


since we don't what to hardcode a specific value which would affect every device that is registering but rather $ua which would set the real UA of the device that is registering at that time.

Does that make sense?

regards,

Errol


On Thu, Oct 9, 2014 at 12:09 PM, Daniel-Constantin Mierla <mico...@gmail.com <mailto:mico...@gmail.com>> wrote:


    On 08/10/14 19:25, Errol Samuels wrote:
    I followed Daniel's instructions and made some progress but not
    100% there yet.

    -------[Global section]----------

    user_agent_header=""

    -------[Main Routing Logic]-------

    # handle registrations
            if (is_method("REGISTER"))
            {
            $avp(new_user_agent) = $ua;
            }
            route(REGISTRAR);
    .
    .

    # Forward REGISTER to Freeswitch
    route[REGFWD] {

            if(!is_method("REGISTER"))
            {
                    return;
            }
            route(DISPATCH);
            $uac_req(method)="REGISTER";
            $uac_req(ruri)=$du;
            $uac_req(furi)=$fn + "<sip:" + $au + "@" + $ar + ">";
            $uac_req(turi)=$tn + "<sip:" + $au + "@" + $ar + ">";
            $uac_req(hdrs)="Contact: <sip:" + $au + "@"
                                    + $ar
                                    + ";fs_path=sip:"
                                    + $sel(cfg_get.kamailio.bindip)
                                    + ":" +
    $sel(cfg_get.kamailio.bindport)
                                    + ">"
                                    + "\r\n";
            if($sel(contact.expires) != $null)
                    $uac_req(hdrs)= $uac_req(hdrs) + "Expires: " +
    $sel(contact.expires) + "\r\n";
            else
                    $uac_req(hdrs)= $uac_req(hdrs) + "Expires: " +
    $hdr(Expires) + "\r\n";
            $uac_req(hdrs)= $uac_req(hdrs) + "User-Agent: " +
    $avp(new_user_agent) + "\r\n";
            uac_req_send();
            exit;
    }
    #!endif

    ------------

    Now the correct User-Agent appears in the REGISTER message but in
    Freeswitch it shows as unknown.

    U 184.xx.xx.208:5060 -> 184.xx.xx.198:6060
    REGISTER sip:184.x.x.198:6060 SIP/2.0.
    Via: SIP/2.0/UDP 184.xx.xx.208;branch=z9hG4bKa764.668d6dc7.0.
    To: <sip:1...@pbx.mydomain.com <mailto:sip%3a1...@pbx.mydomain.com>>.
    From: <sip:1...@pbx.mydomain.com
    
<mailto:sip%3a1...@pbx.mydomain.com>>;tag=6f72f76f3402bf7cf11f6917529ca761-2ceb.
    CSeq: 10 REGISTER.
    Call-ID: 4570a277563cdffc-61...@184.xx.xx.208
    <mailto:4570a277563cdffc-61...@184.xx.xx.208>.
    Max-Forwards: 70.
    Content-Length: 0.
    .
    Contact: <sip:1...@pbx.mydomain.com
    <mailto:sip%3a1...@pbx.mydomain.com>;fs_path=sip:184.xx.xx.208:5060>.
    Expires: 120.
    User-Agent: Yealink SIP-T46G 28.72.0.26.
    .
    ----------------

    Got some extra dots in there but not sure why they are there and
    how they got there.
    Any ideas? Anything I missed?

    Apparently by setting an empty user-agent header value in kamailio
    config file results in an empty line in headers, which means end
    of headers. So it kind of breaks the headers -- I will fix that in
    kamailio.

    A solution for now will be to use:

    user_agent_header = "X-Proxy: abc"

    Or, in other words, set the value of the parameter to something
    that doesn't include User-Agent: as header name.

    Cheers,
    Daniel


    BR

    Errol



    On Wed, Oct 8, 2014 at 12:34 PM, Daniel-Constantin Mierla
    <mico...@gmail.com <mailto:mico...@gmail.com>> wrote:

        Perhaps you can get it with adding User-Agent header to
        $uac_req(hdrs):

        $uac_req(hdrs)= $uac_req(hdrs) + "User-Agent: " + $ua + "\r\n";

        And sent the global parameter:

        user_agent_header=""

        But then no local generated request has user agent, which
        probably is ok for you.

        There are still ways to use event_route[tm:local-request] to
        set a custom user agent header, but would require something like:
        - add $us in $uac_req(hdrs) as X-UA header
        - in event_route[tm:local-request], remove User-Agent and
        X-UA headers and add again User-Agent taking the value from X-UA

        Cheers,
        Daniel






-- Daniel-Constantin Mierla
    http://twitter.com/#!/miconda  <http://twitter.com/#%21/miconda>  
-http://www.linkedin.com/in/miconda



--
Daniel-Constantin Mierla
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda

_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
sr-users@lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users

Reply via email to