Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
savoirfairelinux
jami-daemon
Commits
d13f5b3a
Commit
d13f5b3a
authored
Oct 06, 2009
by
Alexandre Savard
Browse files
[#2209] Fix trasnfering a call during a conference
parent
afc43a9f
Changes
1
Hide whitespace changes
Inline
Side-by-side
sflphone-common/src/managerimpl.cpp
View file @
d13f5b3a
...
...
@@ -495,6 +495,7 @@ ManagerImpl::hangupConference (const ConfID& id)
AccountID
currentAccountId
;
// Call* call = NULL;
if
(
iter_conf
!=
_conferencemap
.
end
())
{
...
...
@@ -697,38 +698,58 @@ ManagerImpl::offHoldCall (const CallID& call_id)
//THREAD=Main
bool
ManagerImpl
::
transferCall
(
const
CallID
&
id
,
const
std
::
string
&
to
)
ManagerImpl
::
transferCall
(
const
CallID
&
call_
id
,
const
std
::
string
&
to
)
{
AccountID
accountid
;
bool
returnValue
;
stopTone
(
true
);
CallID
current_call_id
=
getCurrentCallId
();
/* Direct IP to IP call */
if
(
getConfigFromCall
(
id
)
==
Call
::
IPtoIP
)
{
returnValue
=
SIPVoIPLink
::
instance
(
AccountNULL
)
->
transfer
(
id
,
to
);
if
(
getConfigFromCall
(
call_
id
)
==
Call
::
IPtoIP
)
{
returnValue
=
SIPVoIPLink
::
instance
(
AccountNULL
)
->
transfer
(
call_
id
,
to
);
}
/* Classic call, attached to an account */
else
{
accountid
=
getAccountFromCall
(
id
);
accountid
=
getAccountFromCall
(
call_
id
);
if
(
accountid
==
AccountNULL
)
{
_debug
(
"! Manager Transfer Call: Call doesn't exists
\n
"
);
return
false
;
}
returnValue
=
getAccountLink
(
accountid
)
->
transfer
(
id
,
to
);
returnValue
=
getAccountLink
(
accountid
)
->
transfer
(
call_
id
,
to
);
removeCallAccount
(
id
);
removeCallAccount
(
call_
id
);
}
removeWaitingCall
(
id
);
removeWaitingCall
(
call_
id
);
switchCall
(
""
);
if
(
participToConference
(
call_id
))
{
Conference
*
conf
=
getConferenceFromCallID
(
call_id
);
if
(
_dbus
)
_dbus
->
getCallManager
()
->
callStateChanged
(
id
,
"HUNGUP"
);
if
(
conf
!=
NULL
)
{
// remove this participant
removeParticipant
(
call_id
);
processRemainingParticipant
(
current_call_id
,
conf
);
}
}
else
{
// we are not participating to a conference, current call switched to ""
if
(
!
isConference
(
current_call_id
))
switchCall
(
""
);
}
if
(
_dbus
)
_dbus
->
getCallManager
()
->
callStateChanged
(
call_id
,
"HUNGUP"
);
return
returnValue
;
}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment