degesch: allow changing the list of used CAPs
Bump liberty.
This commit is contained in:
parent
a850ee45f1
commit
333ad2c981
2
NEWS
2
NEWS
|
@ -12,6 +12,8 @@
|
|||
|
||||
* degesch: backlog limit was made configurable
|
||||
|
||||
* degesch: allow changing the list IRC capabilities to use
|
||||
|
||||
* degesch: optimize buffer memory usage
|
||||
|
||||
* kike: add support for IRCv3.2 server-time
|
||||
|
|
21
degesch.c
21
degesch.c
|
@ -1802,6 +1802,12 @@ static struct config_schema g_config_server[] =
|
|||
.comment = "Password to connect to the server, if any",
|
||||
.type = CONFIG_ITEM_STRING,
|
||||
.validate = config_validate_nonjunk_string },
|
||||
// XXX: if we add support for new capabilities, the value stays unchanged
|
||||
{ .name = "capabilities",
|
||||
.comment = "Capabilities to use if supported by server",
|
||||
.type = CONFIG_ITEM_STRING_ARRAY,
|
||||
.validate = config_validate_nonjunk_string,
|
||||
.default_ = "\"multi-prefix,invite-notify,server-time,echo-message\"" },
|
||||
|
||||
{ .name = "tls",
|
||||
.comment = "Whether to use TLS",
|
||||
|
@ -5470,22 +5476,25 @@ irc_handle_cap (struct server *s, const struct irc_message *msg)
|
|||
log_server_status (s, s->buffer,
|
||||
"#s: #S", "Capabilities supported", args);
|
||||
|
||||
struct str_vector chosen;
|
||||
str_vector_init (&chosen);
|
||||
struct str_vector chosen; str_vector_init (&chosen);
|
||||
struct str_vector use; str_vector_init (&use);
|
||||
|
||||
cstr_split_ignore_empty
|
||||
(get_config_string (s->config, "capabilities"), ',', &use);
|
||||
|
||||
// Filter server capabilities for ones we can make use of
|
||||
for (size_t i = 0; i < v.len; i++)
|
||||
{
|
||||
const char *cap = v.vector[i];
|
||||
if (!strcasecmp_ascii (cap, "multi-prefix")
|
||||
|| !strcasecmp_ascii (cap, "invite-notify")
|
||||
|| !strcasecmp_ascii (cap, "server-time")
|
||||
|| !strcasecmp_ascii (cap, "echo-message"))
|
||||
for (size_t k = 0; k < use.len; k++)
|
||||
if (!strcasecmp_ascii (use.vector[k], cap))
|
||||
str_vector_add (&chosen, cap);
|
||||
}
|
||||
|
||||
char *chosen_str = join_str_vector (&chosen, ' ');
|
||||
str_vector_free (&chosen);
|
||||
str_vector_free (&use);
|
||||
|
||||
irc_send (s, "CAP REQ :%s", chosen_str);
|
||||
log_server_status (s, s->buffer,
|
||||
"#s: #S", "Capabilities requested", chosen_str);
|
||||
|
|
2
liberty
2
liberty
|
@ -1 +1 @@
|
|||
Subproject commit f213a76ad494efe150a786b195a744e4b87c5ca9
|
||||
Subproject commit 9bff16f5ec777d3f4a9f7e8e8140907f3b404fa2
|
Loading…
Reference in New Issue