#include "s_serv.h"
#include "s_user.h"
#include "send.h"
+#include "s_conf.h"
+#include "hash.h"
typedef int (*bqcmp)(const void *, const void *);
_CLICAP("away-notify", CLICAP_AWAY_NOTIFY, 0, 0, 0),
_CLICAP("tls", CLICAP_TLS, 0, 0, 0),
_CLICAP("userhost-in-names", CLICAP_USERHOST_IN_NAMES, 0, 0, 0),
+ _CLICAP("cap-notify", CLICAP_CAP_NOTIFY, 0, 0, 0),
};
#define CLICAP_LIST_LEN (sizeof(clicap_list) / sizeof(struct clicap))
continue;
}
+ if (clicap_list[i].cap_serv == CLICAP_SASL)
+ {
+ struct Client *agent_p = NULL;
+
+ if (!ConfigFileEntry.sasl_service)
+ continue;
+
+ agent_p = find_named_client(ConfigFileEntry.sasl_service);
+ if (agent_p == NULL || !IsService(agent_p))
+ continue;
+ }
+
/* \r\n\0, possible "-~=", space, " *" */
if(buflen + clicap_list[i].namelen >= BUFSIZE - 10)
{
break;
}
+ if (cap->cap_serv == CLICAP_SASL)
+ {
+ struct Client *agent_p = NULL;
+
+ if (!ConfigFileEntry.sasl_service)
+ {
+ finished = 0;
+ break;
+ }
+
+ agent_p = find_named_client(ConfigFileEntry.sasl_service);
+ if (agent_p == NULL || !IsService(agent_p))
+ {
+ finished = 0;
+ break;
+ }
+ }
+
if(cap->flags & CLICAP_FLAGS_STICKY)
{
strcat(pbuf[i], "=");