X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=mutt_sasl.c;h=8938afa82ca6949ee091eaa943ff7d0c7fef028a;hp=219c36d41494f112f75aa559ffa8582b26658781;hb=049b21f53af51ad7259613f5eefaa0f37b1b2167;hpb=ffb2d4f3705ffc083472d04a3c58146b6bc8bfea diff --git a/mutt_sasl.c b/mutt_sasl.c index 219c36d..8938afa 100644 --- a/mutt_sasl.c +++ b/mutt_sasl.c @@ -11,14 +11,12 @@ #include -#ifdef USE_SASL - #include #include #include #include -#include +#include #include #include "mutt.h" @@ -30,7 +28,23 @@ * a protection buffer. */ #define M_SASL_MAXBUF 65536 -#define IP_PORT_BUFLEN 1024 +typedef struct { + sasl_conn_t *saslconn; + const sasl_ssf_t *ssf; + const unsigned int *pbufsize; + + /* read buffer */ + char *buf; + unsigned blen; + unsigned int bpos; + + /* underlying socket data */ + void *sockdata; + int (*msasl_open) (CONNECTION * conn); + int (*msasl_close) (CONNECTION * conn); + int (*msasl_read) (CONNECTION * conn, char *buf, ssize_t len); + int (*msasl_write) (CONNECTION * conn, const char *buf, ssize_t count); +} SASL_DATA; static sasl_callback_t mutt_sasl_callbacks[5]; @@ -117,7 +131,7 @@ int mutt_sasl_client_new (CONNECTION * conn, sasl_conn_t ** saslconn) struct sockaddr_storage local, remote; socklen_t size; - char iplocalport[IP_PORT_BUFLEN], ipremoteport[IP_PORT_BUFLEN]; + char iplocalport[STRING], ipremoteport[STRING]; const char *service; int rc; @@ -139,14 +153,14 @@ int mutt_sasl_client_new (CONNECTION * conn, sasl_conn_t ** saslconn) size = sizeof(local); if (getsockname(conn->fd, (struct sockaddr *) &local, &size) - || iptostring(&local, iplocalport, IP_PORT_BUFLEN) != SASL_OK) + || iptostring(&local, iplocalport, STRING) != SASL_OK) { return -1; } size = sizeof(remote); if (getpeername(conn->fd, (struct sockaddr *) &remote, &size) - || iptostring(&remote, ipremoteport, IP_PORT_BUFLEN) != SASL_OK) + || iptostring(&remote, ipremoteport, STRING) != SASL_OK) { return -1; } @@ -254,8 +268,8 @@ void mutt_sasl_setup_conn (CONNECTION * conn, sasl_conn_t * saslconn) conn->conn_write = mutt_sasl_conn_write; } -void mutt_sasl_done (void) { - sasl_done (); +void mutt_sasl_shutdown(void) { + sasl_done(); } /* mutt_sasl_cb_authname: callback to retrieve authname or user from ACCOUNT */ @@ -457,5 +471,3 @@ fail: conn->sockdata = sasldata; return -1; } - -#endif /* USE_SASL */