File

plugins/muc/name.lib.lua @ 11516:83822be7704d

util.xmppstream: Send <?xml?> declaration in same call as stream open If network_settings.opportunistic_writes is enabled then this would previously have resulted in two socket writes, and possibly two packets being sent. This caused some issues in older versions of Gajim, which apparently expected the stream opening in the first packet, and thus it could not connect. With this change and opportunistic_writes enabled, the first packet should contain both the xml declaration and the stream open tag. Without opportunistic_writes, there should be no observable change. Tested with Gajim 1.1.2 (on same machine). Unsure if loopback behaves differently than the network here.
author Kim Alvefur <zash@zash.se>
date Wed, 14 Apr 2021 15:21:13 +0200
parent 11057:13eee48071c8
line wrap: on
line source

-- Prosody IM
-- Copyright (C) 2008-2010 Matthew Wild
-- Copyright (C) 2008-2010 Waqas Hussain
-- Copyright (C) 2014 Daurnimator
--
-- This project is MIT/X11 licensed. Please see the
-- COPYING file in the source package for more information.
--

local function get_name(room)
	return room._data.name;
end

local function set_name(room, name)
	if name == "" then name = nil; end
	if room._data.name == name then return false; end
	room._data.name = name;
	return true;
end

local function insert_name_into_form(event)
	table.insert(event.form, {
		name = "muc#roomconfig_roomname";
		type = "text-single";
		label = "Title";
		value = event.room._data.name;
	});
end

module:hook("muc-disco#info", function(event)
	event.reply:tag("identity", {category="conference", type="text", name=get_name(event.room)}):up();
	insert_name_into_form(event);
end);

module:hook("muc-config-form", insert_name_into_form, 100-1);

module:hook("muc-config-submitted/muc#roomconfig_roomname", function(event)
	if set_name(event.room, event.value) then
		event.status_codes["104"] = true;
	end
end);

return {
	get = get_name;
	set = set_name;
};