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

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


Thanks Byron!

It works perfectly

It could get me a long time to realise on it.


Byron Campen escribió:
>     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/
>
>
>