int mailsmtp_connect(mailsmtp * session, mailstream * s) { int code; session->stream = s; mailstream_set_logger(s, smtp_logger, session); code = read_response(session); switch (code) { case 220: return MAILSMTP_NO_ERROR; case 554: session->stream = NULL; mailstream_close(s); return MAILSMTP_ERROR_SERVICE_NOT_AVAILABLE; case 0: session->stream = NULL; mailstream_close(s); return MAILSMTP_ERROR_STREAM; default: session->stream = NULL; mailstream_close(s); return MAILSMTP_ERROR_UNEXPECTED_CODE; } }
int newsnntp_connect(newsnntp * f, mailstream * s) { char * response; int r; if (f->nntp_stream != NULL) return NEWSNNTP_ERROR_BAD_STATE; f->nntp_stream = s; mailstream_set_logger(s, nntp_logger, f); response = read_line(f); if (response == NULL) return NEWSNNTP_ERROR_STREAM; r = parse_response(f, response); switch (r) { case 200: f->nntp_readonly = FALSE; return NEWSNNTP_NO_ERROR; case 201: f->nntp_readonly = TRUE; return NEWSNNTP_NO_ERROR; default: f->nntp_stream = NULL; return NEWSNNTP_ERROR_UNEXPECTED_RESPONSE; } }