fprintf(stderr, "GnuTLS connection error: %s:", prefix);
if (err != 0) fprintf(stderr, " %s", gnutls_strerror(err));
fprintf(stderr, "\n");
-exit(1);
+exit(98);
}
if (fd < 0)
{
fprintf(stderr, "Failed to open spool/gnutls-params: %s\n", strerror(errno));
- exit(1);
+ exit(97);
}
if (fstat(fd, &statbuf) < 0)
char *end = NULL;
int argi = 1;
int host_af, port, s_len, rc, sock, save_errno;
-int timeout = 1;
+int timeout = 5;
int tls_active = 0;
int sent_starttls = 0;
int tls_on_connect = 0;
strcmp(argv[argi], "--help") == 0 ||
strcmp(argv[argi], "-h") == 0)
{
- printf(HELP_MESSAGE);
+ puts(HELP_MESSAGE);
exit(0);
}
if (strcmp(argv[argi], "-tls-on-connect") == 0)
if (argc < ++argi + 1)
{
fprintf(stderr, "Missing required certificate file for ocsp option\n");
- exit(1);
+ exit(96);
}
ocsp_stapling = argv[argi++];
}
{
fprintf(stderr, "Failed to parse seconds from option <%s>\n",
argv[argi]);
- exit(1);
+ exit(95);
}
if (tmplong > 10000L)
{
- fprintf(stderr, "Unreasonably long wait of %d seconds requested\n",
+ fprintf(stderr, "Unreasonably long wait of %ld seconds requested\n",
tmplong);
- exit(1);
+ exit(94);
}
if (tmplong < 0L)
{
- fprintf(stderr, "Timeout must not be negative (%d)\n", tmplong);
- exit(1);
+ fprintf(stderr, "Timeout must not be negative (%ld)\n", tmplong);
+ exit(93);
}
timeout = (int) tmplong;
argi++;
else
{
fprintf(stderr, "Unrecognized option %s\n", argv[argi]);
- exit(1);
+ exit(92);
}
}
if (argc < argi+1)
{
fprintf(stderr, "No IP address given\n");
- exit(1);
+ exit(91);
}
address = argv[argi++];
if (argc < argi+1)
{
fprintf(stderr, "No port number given\n");
- exit(1);
+ exit(90);
}
port = atoi(argv[argi++]);
if (sock < 0)
{
printf("socket creation failed: %s\n", strerror(errno));
- exit(1);
+ exit(89);
}
/* Bind to a specific interface if requested. On an IPv6 system, this has
if (inet_pton(AF_INET6, interface, &s_in6.sin6_addr) != 1)
{
printf("Unable to parse \"%s\"", interface);
- exit(1);
+ exit(88);
}
}
else
{
printf("Unable to bind outgoing SMTP call to %s: %s",
interface, strerror(errno));
- exit(1);
+ exit(87);
}
}
}
if (inet_pton(host_af, address, &s_in6.sin6_addr) != 1)
{
printf("Unable to parse \"%s\"", address);
- exit(1);
+ exit(86);
}
}
else
{
close(sock);
printf("failed: %s\n", strerror(save_errno));
- exit(1);
+ exit(85);
}
printf("connected\n");
if (ctx == NULL)
{
printf ("SSL_CTX_new failed\n");
- exit(1);
+ exit(84);
}
if (certfile != NULL)
if (!SSL_CTX_use_certificate_file(ctx, certfile, SSL_FILETYPE_PEM))
{
printf("SSL_CTX_use_certificate_file failed\n");
- exit(1);
+ exit(83);
}
printf("Certificate file = %s\n", certfile);
}
if (!SSL_CTX_use_PrivateKey_file(ctx, keyfile, SSL_FILETYPE_PEM))
{
printf("SSL_CTX_use_PrivateKey_file failed\n");
- exit(1);
+ exit(82);
}
printf("Key file = %s\n", keyfile);
}
if (rc < 0)
{
printf("Read error %s\n", strerror(errno));
- exit(1) ;
+ exit(81) ;
}
else if (rc == 0)
{
printf("Unexpected EOF read\n");
close(sock);
- exit(1);
+ exit(80);
}
else
{
if (strncmp(lineptr, outbuffer + 4, (int)strlen(outbuffer) - 4) != 0)
{
printf("\n******** Input mismatch ********\n");
- exit(1);
+ exit(79);
}
#ifdef HAVE_TLS
{
printf("Unconsumed input: %s", inptr);
printf(" About to send: %s\n", outbuffer);
- exit(1);
+ exit(78);
}
#ifdef HAVE_TLS
if (!tls_active)
{
printf("STOPTLS read when TLS not active\n");
- exit(1);
+ exit(77);
}
printf("Shutting down TLS encryption\n");
if (rc < 0)
{
printf("GnuTLS write error: %s\n", gnutls_strerror(rc));
- exit(1);
+ exit(76);
}
#endif
}
if (rc < 0)
{
printf("Write error: %s\n", strerror(errno));
- exit(1);
+ exit(75);
}
}
}