Add support for smtpd filter protocol <v0.5

master
Thor 4 years ago
parent f49b45792d
commit 5d85050633
  1. 1
      include/protocol/protocol.hpp
  2. 11
      src/protocol/protocol.cpp

@ -48,6 +48,7 @@ namespace protocol {
private:
handler_map_t handlers;
size_t max_pattern_length;
std::string version;
void send_data_line(const session_key_t& session_key, const std::string& data_line);
};

@ -38,6 +38,10 @@ namespace protocol {
auto pattern = token::pattern_t(tokens, false);
debug && cerr << "Received pattern " << pattern << endl;
if(tokens.size() >= 2 && tokens.at(0) == "filter") {
version = tokens.at(1);
}
auto element = handlers.find(pattern);
if(element == handlers.end()) {
debug && cerr << "Unknown pattern " << pattern << endl;
@ -47,7 +51,12 @@ namespace protocol {
}
void protocol_t::send_result(const session_key_t& session_key, token::list_t tokens) {
token::list_t result{"filter-result", session_key.session, session_key.token};
token::list_t result{"filter-result"};
if(version < "0.5") {
result.insert(result.end(), {session_key.token, session_key.session});
} else {
result.insert(result.end(), {session_key.session, session_key.token});
}
for(auto& token : tokens) {
result.push_back(token);
}

Loading…
Cancel
Save