]> jfr.im git - irc/atheme/atheme.git/commitdiff
saslserv: use message source to get the source server
authorMax Teufel <redacted>
Mon, 9 Feb 2015 15:08:18 +0000 (16:08 +0100)
committerWilliam Pitcock <redacted>
Mon, 9 Feb 2015 15:31:05 +0000 (09:31 -0600)
include/sasl.h
modules/protocol/inspircd.c
modules/protocol/nefarious.c
modules/protocol/ts6-generic.c
modules/protocol/unreal.c
modules/saslserv/main.c

index 3a33fe9ecdf2a41e2115c72d582b560392ee0de5..841fd6461b1e3816ebef266bc01de59f2386e6eb 100644 (file)
@@ -33,6 +33,8 @@ struct sasl_message_ {
   char mode;
   char *buf;
   char *ext;
+
+  server_t *server;
 };
 
 struct sasl_mechanism_ {
index aef03848ef4339284e95f3c938ba3e4b5b15a11c..1e3d5f420f59d9357ecad52cb0b7ad7866c069af 100644 (file)
@@ -1332,6 +1332,7 @@ static void m_encap(sourceinfo_t *si, int parc, char *parv[])
                smsg.mode = *parv[4];
                smsg.buf = parv[5];
                smsg.ext = parc >= 6 ? parv[6] : NULL;
+               smsg.server = si->s ? si->s : NULL;
                hook_call_sasl_input(&smsg);
        }
 }
index de5d9b59cf998dee3a9214e222856754e3a056e3..40406bcf729f8d2aeb6a283ae8524735faf04726 100644 (file)
@@ -653,6 +653,7 @@ static void m_sasl(sourceinfo_t *si, int parc, char *parv[])
        smsg.mode = *parv[2];
        smsg.buf = parv[3];
        smsg.ext = parc >= 4 ? parv[4] : NULL;
+       smsg.server = si->s ? si->s : NULL;
 
        hook_call_sasl_input(&smsg);
 }
index 95b0cd4a542a4799238d7b2d711540138e1494c0..9e5ba318fb44d26e692eea8a0695e3476564170d 100644 (file)
@@ -1278,6 +1278,7 @@ static void m_encap(sourceinfo_t *si, int parc, char *parv[])
                smsg.mode = *parv[4];
                smsg.buf = parv[5];
                smsg.ext = parc >= 6 ? parv[6] : NULL;
+               smsg.server = si->s ? si->s : NULL;
                hook_call_sasl_input(&smsg);
        }
        else if (!irccasecmp(parv[1], "RSMSG"))
index 1653c1c543b4f2c14b6c95f53a62130f465b84f5..0ed9561cc8bc0dfd055fbe467470c44446bf50f1 100644 (file)
@@ -765,6 +765,7 @@ static void m_sasl(sourceinfo_t *si, int parc, char *parv[])
        smsg.mode = *parv[2];
        smsg.buf = parv[3];
        smsg.ext = parc >= 4 ? parv[4] : NULL;
+       smsg.server = si->s ? si->s : NULL;
 
        hook_call_sasl_input(&smsg);
 }
index 3b59d00856a65e8d768049c6691a3a7f5d4ec4b1..09c6da4ead483e73bc9a0ad7ae75300ffd25728a 100644 (file)
@@ -22,7 +22,7 @@ static char mechlist_string[400];
 static bool hide_server_names;
 
 sasl_session_t *find_session(const char *uid);
-sasl_session_t *make_session(const char *uid);
+sasl_session_t *make_session(const char *uid, server_t *server);
 void destroy_session(sasl_session_t *p);
 static void sasl_logcommand(sasl_session_t *p, myuser_t *login, int level, const char *fmt, ...);
 static void sasl_input(sasl_message_t *smsg);
@@ -186,7 +186,7 @@ sasl_session_t *find_session(const char *uid)
 }
 
 /* create a new session if it does not already exist */
-sasl_session_t *make_session(const char *uid)
+sasl_session_t *make_session(const char *uid, server_t *server)
 {
        sasl_session_t *p = find_session(uid);
        mowgli_node_t *n;
@@ -197,15 +197,7 @@ sasl_session_t *make_session(const char *uid)
        p = malloc(sizeof(sasl_session_t));
        memset(p, 0, sizeof(sasl_session_t));
        p->uid = strdup(uid);
-
-       server_t *s;
-       mowgli_patricia_iteration_state_t state;
-       MOWGLI_PATRICIA_FOREACH(s, &state, servlist)
-       {
-               if (!strncmp(s->sid, p->uid, strlen(s->sid)))
-                       p->server = s;
-       }
-
+       p->server = server;
        n = mowgli_node_create();
        mowgli_node_add(p, n, &sessions);
 
@@ -250,7 +242,7 @@ void destroy_session(sasl_session_t *p)
 /* interpret an AUTHENTICATE message */
 static void sasl_input(sasl_message_t *smsg)
 {
-       sasl_session_t *p = make_session(smsg->uid);
+       sasl_session_t *p = make_session(smsg->uid, smsg->server);
        int len = strlen(smsg->buf);
        char *tmpbuf;
        int tmplen;