return 404 if rfc 4240 room naming is used and conference room id is empty

git-svn-id: http://svn.berlios.de/svnroot/repos/sems/trunk@1173 8eb893ce-cfd4-0310-b710-fb5ebe64c474
sayer/1.4-spce2.6
Stefan Sayer 18 years ago
parent 5a99fab0a2
commit cd701d1a9f

@ -71,6 +71,8 @@ string ConferenceFactory::DialoutSuffix;
PlayoutType ConferenceFactory::m_PlayoutType = ADAPTIVE_PLAYOUT;
unsigned int ConferenceFactory::MaxParticipants;
bool ConferenceFactory::UseRFC4240Rooms;
#ifdef USE_MYSQL
mysqlpp::Connection ConferenceFactory::Connection(mysqlpp::use_exceptions);
@ -291,6 +293,9 @@ int ConferenceFactory::onLoad()
ERROR("while parsing max_participants parameter\n");
}
UseRFC4240Rooms = cfg.getParameter("use_rfc4240_rooms")=="yes";
DBG("%ssing RFC4240 room naming.\n", UseRFC4240Rooms?"U":"Not u");
return 0;
}
@ -302,7 +307,21 @@ AmSession* ConferenceFactory::onInvite(const AmSipRequest& req)
DBG("Conference is full.\n");
throw AmSession::Exception(486, "Busy Here");
}
return new ConferenceDialog(req.user);
string conf_id=req.user;
if (UseRFC4240Rooms) {
// see RFC4240 5. Conference Service
if (req.user.length()<5)
throw AmSession::Exception(404, "Not Found");
if (req.user.substr(0,5)!="conf=")
throw AmSession::Exception(404, "Not Found");
conf_id = req.user.substr(5);
}
return new ConferenceDialog(conf_id);
}
AmSession* ConferenceFactory::onRefer(const AmSipRequest& req)
@ -351,8 +370,7 @@ ConferenceDialog::~ConferenceDialog()
#endif
}
void ConferenceDialog::onStart()
{
void ConferenceDialog::onStart() {
}
void ConferenceDialog::onSessionStart(const AmSipRequest& req)

@ -83,6 +83,8 @@ public:
static string DialoutSuffix;
static PlayoutType m_PlayoutType;
static unsigned int MaxParticipants;
static bool UseRFC4240Rooms;
#ifdef USE_MYSQL
static mysqlpp::Connection Connection;

@ -22,3 +22,14 @@ playout_type=adaptive_playout
# Maximum number of participants in a conference
# default = 0 (unlimited)
#max_participants=10
# use_rfc4240_rooms=[yes|no]
#
# RFC4240 specifies for Conference service that the conference
# room is specified in the user part of the Request URI as:
# sip:conf=uniqueIdentifier@mediaserver.example.net
# If the conference-id is empty, a 404 is returned.
#
#default:
# use_rfc4240_rooms=no
#
Loading…
Cancel
Save