Example #1
0
bool broker_t::handle_request()  {
    message_pack_t message;
    if(!m_socket->recv(message))
        return false; // interrupted

    message_part_t sender = message.pop_head();
    message_part_t empty = message.pop_head();
    message_part_t header = message.pop_head();

    try {
        if(message::equal_to(*header, codes::header::sender)) {
            handle_sender(message);
        }
        else if(message::equal_to(*header, codes::header::receiver)) {
            message.push_head(std::move(sender));
            handle_receiver(message);
        }
        else {
            m_ctx->log(LL_WARNING) << "Message discarded (header part is corrupted)";
        }
    }
    catch(const runtime_error_t& e) {
        m_ctx->log(LL_WARNING) <<  e.what();
    }

    return true;
}
Example #2
0
// FIXME: if rules_reset fails, exit
static int MAIL(void)
{
  const response* resp;
  msg2("MAIL ", arg.s);
  do_reset();
  if ((resp = parse_addr_arg()) == 0) {
    if ((resp = handle_sender(&addr, &params)) == 0)
      resp = &resp_accepted_sender;
    if (number_ok(resp)) {
      saw_mail = 1;
    }
  }
  return respond(resp);
}