From 79d488b2839aa9dfd68adfb57effb26e0b3e6de2 Mon Sep 17 00:00:00 2001 From: William Pitcock Date: Sat, 4 Feb 2012 02:03:52 -0600 Subject: [PATCH] m_server: reenable required cap negotiation --- modules/core/m_server.c | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/modules/core/m_server.c b/modules/core/m_server.c index a957b871c..e1ab4a5f4 100644 --- a/modules/core/m_server.c +++ b/modules/core/m_server.c @@ -75,7 +75,7 @@ mr_server(struct Client *client_p, struct Client *source_p, int parc, const char const char *name; struct Client *target_p; int hop; - struct Capability *cap; + unsigned int required_mask; name = parv[1]; hop = atoi(parv[2]); @@ -109,24 +109,15 @@ mr_server(struct Client *client_p, struct Client *source_p, int parc, const char return 0; } -#ifdef NOTYET /* check to ensure any "required" caps are set. --nenolod */ - for (cap = captab; cap->name; cap++) + /* XXX: show required CAPABs. */ + required_mask = capability_index_get_required(serv_capindex); + if (!(client_p->localClient->caps & required_mask)) { - if (!cap->required) - continue; + exit_client(client_p, client_p, client_p, "Missing required CAPABs"); - if (!(client_p->localClient->caps & cap->cap)) - { - char exitbuf[BUFSIZE]; - - rb_snprintf(exitbuf, BUFSIZE, "Missing required CAPAB [%s]", cap->name); - exit_client(client_p, client_p, client_p, exitbuf); - - return 0; - } + return 0; } -#endif /* Now we just have to call check_server and everything should be * check for us... -A1kmm. */