mxname_ = Name(mxname);
}
+MX::MX(MasterLexer& lexer, const Name*, MasterLoader::Options,
+ MasterLoaderCallbacks&) :
+ preference_(0), mxname_(".")
+{
+ uint32_t num = lexer.getNextToken(MasterToken::NUMBER).getNumber();
+ if (num > 65535) {
+ isc_throw(InvalidRdataText, "Invalid MX preference");
+ }
+
+ preference_ = static_cast<uint16_t>(num);
+ mxname_ = Name(lexer.getNextToken(MasterToken::QSTRING).getString());
+}
+
MX::MX(uint16_t preference, const Name& mxname) :
preference_(preference), mxname_(mxname)
{}
// Exceptions cause NULL to be returned.
EXPECT_FALSE(test::createRdataUsingLexer(RRType::MX(), RRClass::IN(),
"10 mx. example.com"));
+
+ // 65536 is larger than maximum possible preference
+ EXPECT_FALSE(test::createRdataUsingLexer(RRType::MX(), RRClass::IN(),
+ "65536 mx.example.com"));
}
TEST_F(Rdata_MX_Test, toWireRenderer) {