]> granicus.if.org Git - mutt/commitdiff
SASL2 support for popo_auth.c.
authorNathan Dushman <nhd+mutt@andrew.cmu.edu>
Thu, 23 Jan 2003 22:05:02 +0000 (22:05 +0000)
committerNathan Dushman <nhd+mutt@andrew.cmu.edu>
Thu, 23 Jan 2003 22:05:02 +0000 (22:05 +0000)
pop_auth.c

index 253883d7042ce601fb1e10ab7d314ad4d7648eda..20cc7f094dc56fe88a953e3d0f397f4838e66b24 100644 (file)
 #include <unistd.h>
 
 #ifdef USE_SASL
+#ifdef USE_SASL2
+#include <sasl/sasl.h>
+#include <sasl/saslutil.h>
+#else
 #include <sasl.h>
 #include <saslutil.h>
+#endif
 
 #include "mutt_sasl.h"
 #endif
@@ -41,7 +46,11 @@ static pop_auth_res_t pop_auth_sasl (POP_DATA *pop_data, const char *method)
   char buf[LONG_STRING];
   char inbuf[LONG_STRING];
   const char* mech;
+#ifdef USE_SASL2
+  const char *pc = NULL;
+#else
   char* pc = NULL;
+#endif
   unsigned int len, olen;
   unsigned char client_start;
 
@@ -56,8 +65,12 @@ static pop_auth_res_t pop_auth_sasl (POP_DATA *pop_data, const char *method)
 
   FOREVER
   {
+#ifdef USE_SASL2
+       rc = sasl_client_start(saslconn, method, &interaction, &pc, &olen, &mech);
+#else
     rc = sasl_client_start (saslconn, method, NULL,
                            &interaction, &pc, &olen, &mech);
+#endif
     if (rc != SASL_INTERACT)
       break;
     mutt_sasl_interact (interaction);
@@ -96,7 +109,11 @@ static pop_auth_res_t pop_auth_sasl (POP_DATA *pop_data, const char *method)
     if (mutt_strncmp (inbuf, "+ ", 2))
       goto bail;
 
+#ifdef USE_SASL2
+    if (sasl_decode64 (inbuf, strlen (inbuf), buf, LONG_STRING-1, &len) != SASL_OK)
+#else
     if (sasl_decode64 (inbuf, strlen (inbuf), buf, &len) != SASL_OK)
+#endif
     {
       dprint (1, (debugfile, "pop_auth_sasl: error base64-decoding server response.\n"));
       goto bail;
@@ -127,7 +144,9 @@ static pop_auth_res_t pop_auth_sasl (POP_DATA *pop_data, const char *method)
 
       /* sasl_client_st(art|ep) allocate pc with malloc, expect me to 
        * free it */
+#ifndef USE_SASL2
       FREE (&pc);
+#endif
     }
   }