diff --git a/src/conference/handlers/local-conference-list-event-handler.cpp b/src/conference/handlers/local-conference-list-event-handler.cpp index 4eb089136..cf42999b7 100644 --- a/src/conference/handlers/local-conference-list-event-handler.cpp +++ b/src/conference/handlers/local-conference-list-event-handler.cpp @@ -61,7 +61,6 @@ void LocalConferenceListEventHandler::subscribeReceived (LinphoneEvent *lev, con linphone_event_deny_subscription(lev, LinphoneReasonDeclined); return; } - linphone_event_accept_subscription(lev); const LinphoneAddress *lAddr = linphone_event_get_from(lev); char *addrStr = linphone_address_as_string(lAddr); @@ -81,6 +80,7 @@ void LocalConferenceListEventHandler::subscribeReceived (LinphoneEvent *lev, con Xsd::Rlmi::List::ResourceSequence resources; // Parse resource list + bool noContent = true; istringstream data(xmlBody); unique_ptr rl(Xsd::ResourceLists::parseResourceLists( data, @@ -119,6 +119,7 @@ void LocalConferenceListEventHandler::subscribeReceived (LinphoneEvent *lev, con } device->setConferenceSubscribeEvent((subscriptionState == LinphoneSubscriptionIncomingReceived) ? lev : nullptr); + noContent = false; Content content; if (notifyId > 0) { ContentType contentType(ContentType::Multipart); @@ -147,6 +148,12 @@ void LocalConferenceListEventHandler::subscribeReceived (LinphoneEvent *lev, con } } + if (noContent) { + linphone_event_deny_subscription(lev, LinphoneReasonDeclined); + return; + } + linphone_event_accept_subscription(lev); + Xsd::Rlmi::List list("", 0, TRUE); list.setResource(resources); Xsd::XmlSchema::NamespaceInfomap map;