diff options
author | Matthias Andree <matthias.andree@gmx.de> | 2010-10-09 11:26:12 +0200 |
---|---|---|
committer | Matthias Andree <matthias.andree@gmx.de> | 2010-10-09 11:26:12 +0200 |
commit | 269cba9b00fa7ecb0d707ef5b6f10d34e049327c (patch) | |
tree | 22c97d10c58e31384ec3c0b8b8d548d70efd907a /pop3.c | |
parent | 6668c8f23a040036a5e52d1a506b86983e109149 (diff) | |
download | fetchmail-269cba9b00fa7ecb0d707ef5b6f10d34e049327c.tar.gz fetchmail-269cba9b00fa7ecb0d707ef5b6f10d34e049327c.tar.bz2 fetchmail-269cba9b00fa7ecb0d707ef5b6f10d34e049327c.zip |
Factor out common NTLM code.
Diffstat (limited to 'pop3.c')
-rw-r--r-- | pop3.c | 53 |
1 files changed, 5 insertions, 48 deletions
@@ -82,60 +82,17 @@ char *sdps_envto; static int do_pop3_ntlm(int sock, struct query *ctl, int msn_instead /** if true, send AUTH MSN, else send AUTH NTLM */) { - tSmbNtlmAuthRequest request; - tSmbNtlmAuthChallenge challenge; - tSmbNtlmAuthResponse response; + char msgbuf[POPBUFSIZE+1]; + int result; - char msgbuf[2048]; - int result,len; - gen_send(sock, msn_instead ? "AUTH MSN" : "AUTH NTLM"); - if ((result = gen_recv(sock, msgbuf, sizeof msgbuf))) + if ((result = ntlm_helper(sock, ctl, "POP3"))) return result; - - if (msgbuf[0] != '+') - return PS_AUTHFAIL; - - buildSmbNtlmAuthRequest(&request,ctl->remotename,NULL); - - if (outlevel >= O_DEBUG) - dumpSmbNtlmAuthRequest(stdout, &request); - - memset(msgbuf,0,sizeof msgbuf); - to64frombits (msgbuf, &request, SmbLength(&request)); - - if (outlevel >= O_MONITOR) - report(stdout, "POP3> %s\n", msgbuf); - - strcat(msgbuf,"\r\n"); - SockWrite (sock, msgbuf, strlen (msgbuf)); - - if ((gen_recv(sock, msgbuf, sizeof msgbuf))) - return result; - - (void)from64tobits (&challenge, msgbuf, sizeof(msgbuf)); - - if (outlevel >= O_DEBUG) - dumpSmbNtlmAuthChallenge(stdout, &challenge); - - buildSmbNtlmAuthResponse(&challenge, &response,ctl->remotename,ctl->password); - - if (outlevel >= O_DEBUG) - dumpSmbNtlmAuthResponse(stdout, &response); - - memset(msgbuf,0,sizeof msgbuf); - to64frombits (msgbuf, &response, SmbLength(&response)); - - if (outlevel >= O_MONITOR) - report(stdout, "POP3> %s\n", msgbuf); - - strcat(msgbuf,"\r\n"); - SockWrite (sock, msgbuf, strlen (msgbuf)); - + if ((result = gen_recv (sock, msgbuf, sizeof msgbuf))) return result; - + if (strstr (msgbuf, "OK")) return PS_SUCCESS; else |