MT#63298 AmB2BSession: introduce `addFakeSDPbasedOnPort()`

A helper to generate fake AmMimeBody based on given port.
No functional change.

Change-Id: Id9263a80fc47f554f315169c079875c8dfd0a581
mr13.5
Donat Zenichev 1 year ago
parent 458f4b7eca
commit d4200b6ba3

@ -285,6 +285,23 @@ static void sdp2body(const AmSdp &sdp, AmMimeBody &body)
else body.parse(SIP_APPLICATION_SDP, (const unsigned char*)body_str.c_str(), body_str.length());
}
void AmB2BSession::addFakeSDPbasedOnPort(const AmMimeBody *src_sdp, AmMimeBody &new_body,
unsigned int& desired_port)
{
/* create fake AmSdp from AmMimeBody */
AmSdp fake_sdp;
AmMimeBody fake_mimebody;
fake_sdp.parse((const char *)src_sdp->getPayload());
for (auto it = fake_sdp.media.begin(); it != fake_sdp.media.end(); ++it)
{
it->port = desired_port;
}
sdp2body(fake_sdp, fake_mimebody);
createFakeReply(&fake_mimebody, new_body);
}
void AmB2BSession::acceptPendingInvite(AmSipRequest *invite)
{
// reply the INVITE with fake 200 reply
@ -321,19 +338,7 @@ void AmB2BSession::acceptPendingInviteB2B(const AmSipRequest& invite)
if (remote_port > 0) {
ILOG_DLG(L_DBG, "Using remotely seen SDP port for faking this reply: '%d'\n", remote_port);
/* create fake AmSdp from AmMimeBody */
AmSdp fake_sdp;
AmMimeBody fake_mimebody;
fake_sdp.parse((const char *)sdp->getPayload());
for (auto it = fake_sdp.media.begin(); it != fake_sdp.media.end(); ++it)
{
it->port = remote_port;
}
sdp2body(fake_sdp, fake_mimebody);
createFakeReply(&fake_mimebody, n_reply.body);
addFakeSDPbasedOnPort(sdp, n_reply.body, remote_port);
}
else {
createFakeReply(sdp, n_reply.body);

@ -210,6 +210,9 @@ private:
/** generate fake body (c=0.0.0.0) reply */
void createFakeReply(const AmMimeBody *sdp, AmMimeBody& reply_body);
/** create fake AmSipReply. SDP body based on SDP offer, but with a desired port */
void addFakeSDPbasedOnPort(const AmMimeBody *src_sdp, AmMimeBody &new_body, unsigned int& desired_port);
/** generate 200 SIP reply on a pending INVITE (uses fake body) */
virtual void acceptPendingInvite(AmSipRequest *invite);

Loading…
Cancel
Save