diff --git a/bigbluebutton/api/bigbluebutton.py b/bigbluebutton/api/bigbluebutton.py index aec5215be2adc7956eb88177a287afa4d0ff1323..00f870c39da7236d59bd243a4c569aa68da23f55 100644 --- a/bigbluebutton/api/bigbluebutton.py +++ b/bigbluebutton/api/bigbluebutton.py @@ -142,7 +142,18 @@ class BigBlueButton: if res.status_code != 200: raise BigBlueButtonError(f"Backend returned HTTP status {res.status_code}.") - xml = xmltodict.parse(res.text) + try: + xml = xmltodict.parse(res.text) + except Exception as ex: + raise BigBlueButtonError("Failed to parse XML response from backend.") from ex + + if xml.get("returncode", "FAILED").upper() == "FAILED": + message_key = res.get("messageKey", "") + message = res.get("message", "Unknown error") + + ex = BigBlueButtonError(f"Backend returned FAILED response: {message}") + ex.message_key = message_key + raise ex return xml["response"]