int
mu_smtp_capa_iterator (mu_smtp_t smtp, mu_iterator_t *itr)
{
  if (!smtp || !itr)
    return EINVAL;
  if (MU_SMTP_FISSET (smtp, _MU_SMTP_ERR))
    return MU_ERR_FAILURE;
  if (!smtp->capa)
    {
      int rc = mu_smtp_ehlo (smtp);
      if (rc)
	return rc;
    }
  if (!MU_SMTP_FISSET (smtp, _MU_SMTP_ESMTP))
    return MU_ERR_FAILURE;
  return mu_list_get_iterator (smtp->capa, itr);
}
Beispiel #2
0
int
mu_smtp_set_secret (mu_smtp_t smtp, mu_secret_t secret)
{
  if (!smtp)
    return EINVAL;
  if (smtp->secret)
    {
      if (MU_SMTP_FISSET (smtp, _MU_SMTP_CLNPASS))
	mu_secret_password_unref (smtp->secret);
      mu_secret_destroy (&smtp->secret);
    }
  if (!secret)
    return 0;
  return mu_secret_dup (secret, &smtp->secret);
}
Beispiel #3
0
int
mu_smtp_send_stream (mu_smtp_t smtp, mu_stream_t stream)
{
  int status;
  mu_stream_t input;
  
  if (!smtp)
    return EINVAL;
  if (MU_SMTP_FISSET (smtp, _MU_SMTP_ERR))
    return MU_ERR_FAILURE;
  if (smtp->state != MU_SMTP_MORE)
    return MU_ERR_SEQ;

  status = mu_filter_create (&input, stream, "CRLFDOT", MU_FILTER_ENCODE,
			     MU_STREAM_READ);
  if (status)
    return status;
  
  status = _smtp_data_send (smtp, input);
  mu_stream_destroy (&input);
  return status;
}