diff options
Diffstat (limited to 'linden/indra/newview/llimpanel.cpp')
-rw-r--r-- | linden/indra/newview/llimpanel.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/linden/indra/newview/llimpanel.cpp b/linden/indra/newview/llimpanel.cpp index f30ae8c..7e4ed19 100644 --- a/linden/indra/newview/llimpanel.cpp +++ b/linden/indra/newview/llimpanel.cpp | |||
@@ -2009,6 +2009,42 @@ void LLFloaterIMPanel::sendMsg() | |||
2009 | std::string utf8_text = wstring_to_utf8str(text); | 2009 | std::string utf8_text = wstring_to_utf8str(text); |
2010 | utf8_text = utf8str_truncate(utf8_text, MAX_MSG_BUF_SIZE - 1); | 2010 | utf8_text = utf8str_truncate(utf8_text, MAX_MSG_BUF_SIZE - 1); |
2011 | 2011 | ||
2012 | // [RLVa:KB] - Checked: 2009-07-10 (RLVa-1.0.0g) | Modified: RLVa-1.0.0g | ||
2013 | if (gRlvHandler.hasBehaviour(RLV_BHVR_SENDIM)) | ||
2014 | { | ||
2015 | if (IM_NOTHING_SPECIAL == mDialog) // One-on-one IM: allow if recipient is a sendim exception | ||
2016 | { | ||
2017 | if (!gRlvHandler.isException(RLV_BHVR_SENDIM, mOtherParticipantUUID)) | ||
2018 | utf8_text = rlv_handler_t::cstrBlockedSendIM; | ||
2019 | } | ||
2020 | else if (gAgent.isInGroup(mSessionUUID)) // Group chat: allow if recipient is a sendim exception | ||
2021 | { | ||
2022 | if (!gRlvHandler.isException(RLV_BHVR_SENDIM, mSessionUUID)) | ||
2023 | utf8_text = rlv_handler_t::cstrBlockedSendIM; | ||
2024 | } | ||
2025 | else if (mSpeakers) // Conference chat: allow if all participants are sendim exceptions | ||
2026 | { | ||
2027 | LLSpeakerMgr::speaker_list_t speakers; | ||
2028 | mSpeakers->getSpeakerList(&speakers, TRUE); | ||
2029 | |||
2030 | for (LLSpeakerMgr::speaker_list_t::const_iterator itSpeaker = speakers.begin(); | ||
2031 | itSpeaker != speakers.end(); ++itSpeaker) | ||
2032 | { | ||
2033 | LLSpeaker* pSpeaker = *itSpeaker; | ||
2034 | if ( (gAgent.getID() != pSpeaker->mID) && (!gRlvHandler.isException(RLV_BHVR_SENDIM, pSpeaker->mID)) ) | ||
2035 | { | ||
2036 | utf8_text = rlv_handler_t::cstrBlockedSendIM; | ||
2037 | break; | ||
2038 | } | ||
2039 | } | ||
2040 | } | ||
2041 | else // Catch all fall-through | ||
2042 | { | ||
2043 | utf8_text = rlv_handler_t::cstrBlockedSendIM; | ||
2044 | } | ||
2045 | } | ||
2046 | // [/RLVa:KB] | ||
2047 | |||
2012 | if ( mSessionInitialized ) | 2048 | if ( mSessionInitialized ) |
2013 | { | 2049 | { |
2014 | deliver_message(utf8_text, | 2050 | deliver_message(utf8_text, |