#include <unistd.h>
#include "i18n.h"
#include "fetchmail.h"
+#include "sdump.h"
#include "smtp.h"
#include "socket.h"
{
int ok;
- ok = SMTP_ok(sock);
+ (void)argbuf;
+ ok = SMTP_ok(sock, SMTP_MODE, TIMEOUT_DEFAULT);
if (ok == SM_UNRECOVERABLE)
return(PS_PROTOCOL);
else
char buf [MSGBUFSIZE+1];
struct idlist *qnp; /* pointer to Q names */
- if ((ok = SMTP_ehlo(sock, fetchmailhost,
+ (void)id;
+ if ((ok = SMTP_ehlo(sock, SMTP_MODE, fetchmailhost,
ctl->server.esmtp_name, ctl->server.esmtp_password,
&opts)))
{
report(stderr, GT_("Authentication required.\n"));
return(PS_AUTHFAIL);
- default:
- report(stderr, GT_("Unknown ODMR error %d\n"), atoi(buf));
- return(PS_PROTOCOL);
+ default: {
+ char *t = sdump(buf, strlen(buf));
+ report(stderr, GT_("Unknown ODMR error \"%s\"\n"), t);
+ xfree(t);
+ return(PS_PROTOCOL);
+ }
}
/*
* instead, we'll use select(2) to watch the read sides of both
* sockets and just throw their data at each other.
*/
- if ((smtp_sock = smtp_open(ctl)) == -1)
+ if ((smtp_sock = smtp_setup(ctl)) == -1)
return(PS_SOCKET);
else
{
{
fd_set readfds;
struct timeval timeout;
- char buf[MSGBUFSIZE];
FD_ZERO(&readfds);
FD_SET(sock, &readfds);
static const struct method odmr =
{
"ODMR", /* ODMR protocol */
-#ifdef INET6_ENABLE
- "odmr", /* standard SMTP port */
- "odmrs", /* ssl SMTP port */
-#else /* INET6_ENABLE */
- 366, /* standard SMTP port */
- 2366, /* ssl SMTP port (BOGUS! RANDOM VALUE) */
-#endif /* INET6_ENABLE */
+ "odmr", /* standard ODMR port */
+ "odmrs", /* ssl ODMR port */
FALSE, /* this is not a tagged protocol */
FALSE, /* this does not use a message delimiter */
odmr_ok, /* parse command response */
NULL, /* no message trailer */
NULL, /* how to delete a message */
NULL, /* how to mark a message as seen */
+ NULL, /* no mailbox support */
odmr_logout, /* log out, we're done */
FALSE, /* no, we can't re-poll */
};
return(PS_SYNTAX);
}
if (ctl->mailboxes->id) {
- fprintf(stderr, GT_("Option --remote is not supported with ODMR\n"));
+ fprintf(stderr, GT_("Option --folder is not supported with ODMR\n"));
return(PS_SYNTAX);
}
if (check_only) {