diff options
author | Igor Sysoev <igor@sysoev.ru> | 2007-09-13 21:24:27 +0000 |
---|---|---|
committer | Igor Sysoev <igor@sysoev.ru> | 2007-09-13 21:24:27 +0000 |
commit | 5fbe12146e84860a1e7cea077b1b2c705bacfed1 (patch) | |
tree | 0bc45f945103ac77a96fcde0881a5b47cf82b950 /src/mail/ngx_mail_handler.c | |
parent | 05d1de757f08cfe8d7fe8f5e14e98032477e178e (diff) | |
download | nginx-5fbe12146e84860a1e7cea077b1b2c705bacfed1.tar.gz nginx-5fbe12146e84860a1e7cea077b1b2c705bacfed1.zip |
optimizations
Diffstat (limited to 'src/mail/ngx_mail_handler.c')
-rw-r--r-- | src/mail/ngx_mail_handler.c | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/mail/ngx_mail_handler.c b/src/mail/ngx_mail_handler.c index 251d31603..8f549a8d3 100644 --- a/src/mail/ngx_mail_handler.c +++ b/src/mail/ngx_mail_handler.c @@ -285,6 +285,29 @@ ngx_mail_salt(ngx_mail_session_t *s, ngx_connection_t *c, } +#if (NGX_MAIL_SSL) + +ngx_int_t +ngx_mail_starttls_only(ngx_mail_session_t *s, ngx_connection_t *c) +{ + ngx_mail_ssl_conf_t *sslcf; + + if (c->ssl) { + return 0; + } + + sslcf = ngx_mail_get_module_srv_conf(s, ngx_mail_ssl_module); + + if (sslcf->starttls == NGX_MAIL_STARTTLS_ONLY) { + return 1; + } + + return 0; +} + +#endif + + ngx_int_t ngx_mail_auth_plain(ngx_mail_session_t *s, ngx_connection_t *c, ngx_uint_t n) { @@ -405,6 +428,35 @@ ngx_mail_auth_login_password(ngx_mail_session_t *s, ngx_connection_t *c) ngx_int_t +ngx_mail_auth_cram_md5_salt(ngx_mail_session_t *s, ngx_connection_t *c, + char *prefix, size_t len) +{ + u_char *p; + ngx_str_t salt; + ngx_uint_t n; + + p = ngx_palloc(c->pool, len + ngx_base64_encoded_length(s->salt.len) + 2); + if (p == NULL) { + return NGX_ERROR; + } + + salt.data = ngx_cpymem(p, prefix, len); + s->salt.len -= 2; + + ngx_encode_base64(&salt, &s->salt); + + s->salt.len += 2; + n = len + salt.len; + p[n++] = CR; p[n++] = LF; + + s->out.len = n; + s->out.data = p; + + return NGX_OK; +} + + +ngx_int_t ngx_mail_auth_cram_md5(ngx_mail_session_t *s, ngx_connection_t *c) { u_char *p, *last; |