< Previous by Date Date Index Next by Date >
< Previous in Thread Thread Index Next in Thread >

Re: [reSIProcate-users] Problem resending a received message


        You need to add another Via to received, like so:

received.header(h_Vias).push_front(Via());

You also should perform the strict route fixup required by RFC 3261, like so:

Helper::processStrictRoute(received);

        Also, you need to decrement Max-Forwards at some point:

received.header(h_MaxForwards).value()--;

Best regards,
Byron Campen

Hello,

I have a problem making a proxy. When receiving a message I want to send
it to another node, but it never reaches the net. I can construct an
identical message and it is sended correctly. I have tried to change the "isExternal" value to the received message, so the stack can treat it as
a received from tu message.

Here the code, inmediatly received message:


    if (received.exists(h_Routes))
        received.header(h_Routes).pop_front();

    received.setFromTU();

    NameAddr target("sip:DESTINO@xxxxxxxxxxxx:5080;transport=udp");
    NameAddr from("sip:ORIGEN@xxxxxxxxxxxxxxxxxx;transport=udp");
    NameAddr contact("sip:192.168.1.14");
    NameAddr scscf("sip:david.tarifa:5080;transport=udp");

    //Create INVITE

    //auto_ptr<SipMessage> request(Helper::makeInvite(target, from,
contact));
    SipMessage* request = new SipMessage;
    MethodTypes method(INVITE);
    RequestLine rLine(method);
    rLine.uri() = target.uri();
    request->header(h_To) = target;
    request->header(h_RequestLine) = rLine;
    request->header(h_MaxForwards).value() = 70;
    request->header(h_CSeq).method() = method;
    request->header(h_CSeq).sequence() = 1;
    request->header(h_From) = from;
    request->header(h_From).param(p_tag) =
Helper::computeTag(Helper::tagSize);
    request->header(h_Contacts).push_back(contact);
    request->header(h_CallId).value() =
received.header(h_CallId).value();   //Helper::computeCallId();
    request->header(h_Vias).push_back(via);
    request->header(h_Routes).push_back(target);



if (received.isRequest() && (received.method() == INVITE)) {
    cout << "message to be sent" << endl;
    cout << received << endl;
    //cout << *request << endl;


    mStack.send(received);
    //mStack.send(*request);
}



I switch between sending received and request, only request works.
Printing them shows the same.

Thanks in advance

      David



_______________________________________________
resiprocate-users mailing list
resiprocate-users@xxxxxxxxxxxxxxx
List Archive: http://resiprocate.org/archive/resiprocate-users/