#include <h/signals.h>
#define TRM "."
-#define TRMLEN (sizeof TRM - 1)
static int poprint = 0;
if (user)
netsec_set_userid(nsc, user);
+ netsec_set_hostname(nsc, host);
+
if (oauth_svc != NULL) {
if (netsec_set_oauth_service(nsc, oauth_svc) != OK) {
snprintf(response, sizeof(response), "OAuth2 not supported");
netsec_set_fd(nsc, fd1, fd2);
netsec_set_snoop(nsc, snoop);
- if (tls) {
- if (netsec_set_tls(nsc, 1, &errstr) != OK) {
+ if (tls & P_INITTLS) {
+ if (netsec_set_tls(nsc, 1, tls & P_NOVERIFY, &errstr) != OK) {
snprintf(response, sizeof(response), "%s", errstr);
free(errstr);
return NOTOK;
}
if (sasl) {
- if (netsec_set_sasl_params(nsc, host, "pop", mech,
- pop_sasl_callback, &errstr) != OK) {
+ if (netsec_set_sasl_params(nsc, "pop", mech, pop_sasl_callback,
+ &errstr) != OK) {
snprintf(response, sizeof(response), "%s", errstr);
free(errstr);
return NOTOK;
if (poprint)
fprintf (stderr, "<--- %s\n", response);
if (*response == '+') {
+ nmh_creds_t creds;
+
if (sasl) {
char server_mechs[256];
if (check_mech(server_mechs, sizeof(server_mechs)) != OK)
}
return OK;
}
- nmh_creds_t creds;
if (!(creds = nmh_get_credentials(host, user)))
return NOTOK;
strncpy (buffer, response, sizeof(buffer));
command ("QUIT");
strncpy (response, buffer, sizeof(response));
- /* and fall */
+ /* FALLTHRU */
case NOTOK:
case DONE:
if (line == NULL)
return NOTOK;
- if (strncmp(line, "+OK", 3) != 0) {
+ if (!has_prefix(line, "+OK")) {
netsec_err(errstr, "Authentication failed: %s", line);
return NOTOK;
}
int
multiline (void)
{
- char buffer[BUFSIZ + TRMLEN];
+ char buffer[BUFSIZ + LEN(TRM)];
if (pop_getline (buffer, sizeof buffer, nsc) != OK)
return NOTOK;
- if (strncmp (buffer, TRM, TRMLEN) == 0) {
- if (buffer[TRMLEN] == 0)
+ if (has_prefix(buffer, TRM)) {
+ if (buffer[LEN(TRM)] == 0)
return DONE;
- strncpy (response, buffer + TRMLEN, sizeof(response));
+ strncpy (response, buffer + LEN(TRM), sizeof(response));
}
else
strncpy (response, buffer, sizeof(response));