process_command (FILE *peer, FILE *output, const char *command)
{
if (STRNCMP_LITERAL (command, "EHLO ") == 0) {
- fprintf (peer, "502\r\n");
+ fprintf (peer, "502 not implemented\r\n");
fflush (peer);
} else if (STRNCMP_LITERAL (command, "HELO ") == 0) {
fprintf (peer, "250 localhost\r\n");
static void
do_smtp_to_file (FILE *peer, FILE *output)
{
- char buf[4096];
- ssize_t bytes;
- char greeting[] = "220 localhost smtp-dummy\r\n";
char *line = NULL;
size_t line_size;
ssize_t line_len;
if (argc != 2) {
fprintf (stderr, "Usage: %s <output-file>\n", argv[0]);
- exit (1);
+ return 1;
}
output_filename = argv[1];
if (output == NULL) {
fprintf (stderr, "Failed to open %s for writing: %s\n",
output_filename, strerror (errno));
- exit (1);
+ return 1;
}
sock = socket (AF_INET, SOCK_STREAM, 0);
if (sock == -1) {
fprintf (stderr, "Error: socket() failed: %s\n",
strerror (errno));
- exit (1);
+ return 1;
}
reuse = 1;
if (err) {
fprintf (stderr, "Error: setsockopt() failed: %s\n",
strerror (errno));
- exit (1);
+ return 1;
}
hostinfo = gethostbyname ("localhost");
if (hostinfo == NULL) {
fprintf (stderr, "Unknown host: localhost\n");
- exit (1);
+ return 1;
}
+ memset (&addr, 0, sizeof (addr));
addr.sin_family = AF_INET;
addr.sin_port = htons (25025);
addr.sin_addr = *(struct in_addr *) hostinfo->h_addr;
fprintf (stderr, "Error: bind() failed: %s\n",
strerror (errno));
close (sock);
- exit (1);
+ return 1;
}
err = listen (sock, 1);
fprintf (stderr, "Error: listen() failed: %s\n",
strerror (errno));
close (sock);
- exit (1);
+ return 1;
}
peer_addr_len = sizeof (peer_addr);
if (peer == -1) {
fprintf (stderr, "Error: accept() failed: %s\n",
strerror (errno));
- exit (1);
+ return 1;
}
peer_file = fdopen (peer, "w+");
if (peer_file == NULL) {
fprintf (stderr, "Error: fdopen() failed: %s\n",
strerror (errno));
- return;
+ return 1;
}
do_smtp_to_file (peer_file, output);