static int quit_code(thread_t * thread, int status) { smtp_t *smtp = THREAD_ARG(thread); /* final state, we are disconnected from the remote host */ free_smtp_all(smtp); close(thread->u.fd); return 0; }
/* layer4 connection handlers */ static int connection_error(thread_t * thread) { smtp_t *smtp = THREAD_ARG(thread); log_message(LOG_INFO, "SMTP connection ERROR to %s." , FMT_SMTP_HOST()); free_smtp_all(smtp); return 0; }
static int connection_timeout(thread_t * thread) { smtp_t *smtp = THREAD_ARG(thread); log_message(LOG_INFO, "Timeout connecting SMTP server %s." , FMT_SMTP_HOST()); free_smtp_all(smtp); return 0; }
/* layer4 connection handlers */ static int connection_error(thread_t * thread) { smtp_t *smtp = THREAD_ARG(thread); log_message(LOG_INFO, "SMTP connection ERROR to [%s]:%d." , inet_sockaddrtos(&global_data->smtp_server), SMTP_PORT); free_smtp_all(smtp); return 0; }
static int connection_timeout(thread_t * thread) { smtp_t *smtp = THREAD_ARG(thread); log_message(LOG_INFO, "Timeout connecting SMTP server [%s]:%d." , inet_sockaddrtos(&global_data->smtp_server), SMTP_PORT); free_smtp_all(smtp); return 0; }
/* connect remote SMTP server */ static void smtp_connect(smtp_t * smtp) { enum connect_result status; if ((smtp->fd = socket(global_data->smtp_server.ss_family, SOCK_STREAM, IPPROTO_TCP)) == -1) { DBG("SMTP connect fail to create socket."); free_smtp_all(smtp); return; } status = tcp_connect(smtp->fd, &global_data->smtp_server); /* Handle connection status code */ thread_add_event(master, SMTP_FSM[status].send, smtp, smtp->fd); }
/* connect remote SMTP server */ static void smtp_connect(smtp_t * smtp) { enum connect_result status; if ((smtp->fd = socket(global_data->smtp_server.ss_family, SOCK_STREAM | SOCK_CLOEXEC, IPPROTO_TCP)) == -1) { DBG("SMTP connect fail to create socket."); free_smtp_all(smtp); return; } #if !HAVE_DECL_SOCK_CLOEXEC if (set_sock_flags(smtp->fd, F_SETFD, FD_CLOEXEC)) log_message(LOG_INFO, "Unable to set CLOEXEC on smtp_connect socket - %s (%d)", strerror(errno), errno); #endif status = tcp_connect(smtp->fd, &global_data->smtp_server); /* Handle connection status code */ thread_add_event(master, SMTP_FSM[status].send, smtp, smtp->fd); }