| Index: net/dns/mdns_client_unittest.cc
|
| diff --git a/net/dns/mdns_client_unittest.cc b/net/dns/mdns_client_unittest.cc
|
| index cbe464ae0082a094e74067a1e4d46524c7a19a84..324b4dfbee056afaa53a8d49d1bdc6540a066801 100644
|
| --- a/net/dns/mdns_client_unittest.cc
|
| +++ b/net/dns/mdns_client_unittest.cc
|
| @@ -28,311 +28,315 @@ namespace net {
|
|
|
| namespace {
|
|
|
| -const char kSamplePacket1[] = {
|
| +const uint8 kSamplePacket1[] = {
|
| // Header
|
| - '\x00', '\x00', // ID is zeroed out
|
| - '\x81', '\x80', // Standard query response, RA, no error
|
| - '\x00', '\x00', // No questions (for simplicity)
|
| - '\x00', '\x02', // 2 RRs (answers)
|
| - '\x00', '\x00', // 0 authority RRs
|
| - '\x00', '\x00', // 0 additional RRs
|
| + 0x00, 0x00, // ID is zeroed out
|
| + 0x81, 0x80, // Standard query response, RA, no error
|
| + 0x00, 0x00, // No questions (for simplicity)
|
| + 0x00, 0x02, // 2 RRs (answers)
|
| + 0x00, 0x00, // 0 authority RRs
|
| + 0x00, 0x00, // 0 additional RRs
|
|
|
| // Answer 1
|
| - '\x07', '_', 'p', 'r', 'i', 'v', 'e', 't',
|
| - '\x04', '_', 't', 'c', 'p',
|
| - '\x05', 'l', 'o', 'c', 'a', 'l',
|
| - '\x00',
|
| - '\x00', '\x0c', // TYPE is PTR.
|
| - '\x00', '\x01', // CLASS is IN.
|
| - '\x00', '\x00', // TTL (4 bytes) is 1 second;
|
| - '\x00', '\x01',
|
| - '\x00', '\x08', // RDLENGTH is 8 bytes.
|
| - '\x05', 'h', 'e', 'l', 'l', 'o',
|
| - '\xc0', '\x0c',
|
| + 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't',
|
| + 0x04, '_', 't', 'c', 'p',
|
| + 0x05, 'l', 'o', 'c', 'a', 'l',
|
| + 0x00,
|
| + 0x00, 0x0c, // TYPE is PTR.
|
| + 0x00, 0x01, // CLASS is IN.
|
| + 0x00, 0x00, // TTL (4 bytes) is 1 second;
|
| + 0x00, 0x01,
|
| + 0x00, 0x08, // RDLENGTH is 8 bytes.
|
| + 0x05, 'h', 'e', 'l', 'l', 'o',
|
| + 0xc0, 0x0c,
|
|
|
| // Answer 2
|
| - '\x08', '_', 'p', 'r', 'i', 'n', 't', 'e', 'r',
|
| - '\xc0', '\x14', // Pointer to "._tcp.local"
|
| - '\x00', '\x0c', // TYPE is PTR.
|
| - '\x00', '\x01', // CLASS is IN.
|
| - '\x00', '\x01', // TTL (4 bytes) is 20 hours, 47 minutes, 49 seconds.
|
| - '\x24', '\x75',
|
| - '\x00', '\x08', // RDLENGTH is 8 bytes.
|
| - '\x05', 'h', 'e', 'l', 'l', 'o',
|
| - '\xc0', '\x32'
|
| + 0x08, '_', 'p', 'r', 'i', 'n', 't', 'e', 'r',
|
| + 0xc0, 0x14, // Pointer to "._tcp.local"
|
| + 0x00, 0x0c, // TYPE is PTR.
|
| + 0x00, 0x01, // CLASS is IN.
|
| + 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 49 seconds.
|
| + 0x24, 0x75,
|
| + 0x00, 0x08, // RDLENGTH is 8 bytes.
|
| + 0x05, 'h', 'e', 'l', 'l', 'o',
|
| + 0xc0, 0x32
|
| };
|
|
|
| -const char kCorruptedPacketBadQuestion[] = {
|
| +const uint8 kCorruptedPacketBadQuestion[] = {
|
| // Header
|
| - '\x00', '\x00', // ID is zeroed out
|
| - '\x81', '\x80', // Standard query response, RA, no error
|
| - '\x00', '\x01', // One question
|
| - '\x00', '\x02', // 2 RRs (answers)
|
| - '\x00', '\x00', // 0 authority RRs
|
| - '\x00', '\x00', // 0 additional RRs
|
| + 0x00, 0x00, // ID is zeroed out
|
| + 0x81, 0x80, // Standard query response, RA, no error
|
| + 0x00, 0x01, // One question
|
| + 0x00, 0x02, // 2 RRs (answers)
|
| + 0x00, 0x00, // 0 authority RRs
|
| + 0x00, 0x00, // 0 additional RRs
|
|
|
| // Question is corrupted and cannot be read.
|
| - '\x99', 'h', 'e', 'l', 'l', 'o',
|
| - '\x00',
|
| - '\x00', '\x00',
|
| - '\x00', '\x00',
|
| + 0x99, 'h', 'e', 'l', 'l', 'o',
|
| + 0x00,
|
| + 0x00, 0x00,
|
| + 0x00, 0x00,
|
|
|
| // Answer 1
|
| - '\x07', '_', 'p', 'r', 'i', 'v', 'e', 't',
|
| - '\x04', '_', 't', 'c', 'p',
|
| - '\x05', 'l', 'o', 'c', 'a', 'l',
|
| - '\x00',
|
| - '\x00', '\x0c', // TYPE is PTR.
|
| - '\x00', '\x01', // CLASS is IN.
|
| - '\x00', '\x01', // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
|
| - '\x24', '\x74',
|
| - '\x00', '\x99', // RDLENGTH is impossible
|
| - '\x05', 'h', 'e', 'l', 'l', 'o',
|
| - '\xc0', '\x0c',
|
| + 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't',
|
| + 0x04, '_', 't', 'c', 'p',
|
| + 0x05, 'l', 'o', 'c', 'a', 'l',
|
| + 0x00,
|
| + 0x00, 0x0c, // TYPE is PTR.
|
| + 0x00, 0x01, // CLASS is IN.
|
| + 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
|
| + 0x24, 0x74,
|
| + 0x00, 0x99, // RDLENGTH is impossible
|
| + 0x05, 'h', 'e', 'l', 'l', 'o',
|
| + 0xc0, 0x0c,
|
|
|
| // Answer 2
|
| - '\x08', '_', 'p', 'r', // Useless trailing data.
|
| + 0x08, '_', 'p', 'r', // Useless trailing data.
|
| };
|
|
|
| -const char kCorruptedPacketUnsalvagable[] = {
|
| +const uint8 kCorruptedPacketUnsalvagable[] = {
|
| // Header
|
| - '\x00', '\x00', // ID is zeroed out
|
| - '\x81', '\x80', // Standard query response, RA, no error
|
| - '\x00', '\x00', // No questions (for simplicity)
|
| - '\x00', '\x02', // 2 RRs (answers)
|
| - '\x00', '\x00', // 0 authority RRs
|
| - '\x00', '\x00', // 0 additional RRs
|
| + 0x00, 0x00, // ID is zeroed out
|
| + 0x81, 0x80, // Standard query response, RA, no error
|
| + 0x00, 0x00, // No questions (for simplicity)
|
| + 0x00, 0x02, // 2 RRs (answers)
|
| + 0x00, 0x00, // 0 authority RRs
|
| + 0x00, 0x00, // 0 additional RRs
|
|
|
| // Answer 1
|
| - '\x07', '_', 'p', 'r', 'i', 'v', 'e', 't',
|
| - '\x04', '_', 't', 'c', 'p',
|
| - '\x05', 'l', 'o', 'c', 'a', 'l',
|
| - '\x00',
|
| - '\x00', '\x0c', // TYPE is PTR.
|
| - '\x00', '\x01', // CLASS is IN.
|
| - '\x00', '\x01', // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
|
| - '\x24', '\x74',
|
| - '\x00', '\x99', // RDLENGTH is impossible
|
| - '\x05', 'h', 'e', 'l', 'l', 'o',
|
| - '\xc0', '\x0c',
|
| + 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't',
|
| + 0x04, '_', 't', 'c', 'p',
|
| + 0x05, 'l', 'o', 'c', 'a', 'l',
|
| + 0x00,
|
| + 0x00, 0x0c, // TYPE is PTR.
|
| + 0x00, 0x01, // CLASS is IN.
|
| + 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
|
| + 0x24, 0x74,
|
| + 0x00, 0x99, // RDLENGTH is impossible
|
| + 0x05, 'h', 'e', 'l', 'l', 'o',
|
| + 0xc0, 0x0c,
|
|
|
| // Answer 2
|
| - '\x08', '_', 'p', 'r', // Useless trailing data.
|
| + 0x08, '_', 'p', 'r', // Useless trailing data.
|
| };
|
|
|
| -const char kCorruptedPacketDoubleRecord[] = {
|
| +const uint8 kCorruptedPacketDoubleRecord[] = {
|
| // Header
|
| - '\x00', '\x00', // ID is zeroed out
|
| - '\x81', '\x80', // Standard query response, RA, no error
|
| - '\x00', '\x00', // No questions (for simplicity)
|
| - '\x00', '\x02', // 2 RRs (answers)
|
| - '\x00', '\x00', // 0 authority RRs
|
| - '\x00', '\x00', // 0 additional RRs
|
| + 0x00, 0x00, // ID is zeroed out
|
| + 0x81, 0x80, // Standard query response, RA, no error
|
| + 0x00, 0x00, // No questions (for simplicity)
|
| + 0x00, 0x02, // 2 RRs (answers)
|
| + 0x00, 0x00, // 0 authority RRs
|
| + 0x00, 0x00, // 0 additional RRs
|
|
|
| // Answer 1
|
| - '\x06', 'p', 'r', 'i', 'v', 'e', 't',
|
| - '\x05', 'l', 'o', 'c', 'a', 'l',
|
| - '\x00',
|
| - '\x00', '\x01', // TYPE is A.
|
| - '\x00', '\x01', // CLASS is IN.
|
| - '\x00', '\x01', // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
|
| - '\x24', '\x74',
|
| - '\x00', '\x04', // RDLENGTH is 4
|
| - '\x05', '\x03',
|
| - '\xc0', '\x0c',
|
| + 0x06, 'p', 'r', 'i', 'v', 'e', 't',
|
| + 0x05, 'l', 'o', 'c', 'a', 'l',
|
| + 0x00,
|
| + 0x00, 0x01, // TYPE is A.
|
| + 0x00, 0x01, // CLASS is IN.
|
| + 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
|
| + 0x24, 0x74,
|
| + 0x00, 0x04, // RDLENGTH is 4
|
| + 0x05, 0x03,
|
| + 0xc0, 0x0c,
|
|
|
| // Answer 2 -- Same key
|
| - '\x06', 'p', 'r', 'i', 'v', 'e', 't',
|
| - '\x05', 'l', 'o', 'c', 'a', 'l',
|
| - '\x00',
|
| - '\x00', '\x01', // TYPE is A.
|
| - '\x00', '\x01', // CLASS is IN.
|
| - '\x00', '\x01', // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
|
| - '\x24', '\x74',
|
| - '\x00', '\x04', // RDLENGTH is 4
|
| - '\x02', '\x03',
|
| - '\x04', '\x05',
|
| + 0x06, 'p', 'r', 'i', 'v', 'e', 't',
|
| + 0x05, 'l', 'o', 'c', 'a', 'l',
|
| + 0x00,
|
| + 0x00, 0x01, // TYPE is A.
|
| + 0x00, 0x01, // CLASS is IN.
|
| + 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
|
| + 0x24, 0x74,
|
| + 0x00, 0x04, // RDLENGTH is 4
|
| + 0x02, 0x03,
|
| + 0x04, 0x05,
|
| };
|
|
|
| -const char kCorruptedPacketSalvagable[] = {
|
| +const uint8 kCorruptedPacketSalvagable[] = {
|
| // Header
|
| - '\x00', '\x00', // ID is zeroed out
|
| - '\x81', '\x80', // Standard query response, RA, no error
|
| - '\x00', '\x00', // No questions (for simplicity)
|
| - '\x00', '\x02', // 2 RRs (answers)
|
| - '\x00', '\x00', // 0 authority RRs
|
| - '\x00', '\x00', // 0 additional RRs
|
| + 0x00, 0x00, // ID is zeroed out
|
| + 0x81, 0x80, // Standard query response, RA, no error
|
| + 0x00, 0x00, // No questions (for simplicity)
|
| + 0x00, 0x02, // 2 RRs (answers)
|
| + 0x00, 0x00, // 0 authority RRs
|
| + 0x00, 0x00, // 0 additional RRs
|
|
|
| // Answer 1
|
| - '\x07', '_', 'p', 'r', 'i', 'v', 'e', 't',
|
| - '\x04', '_', 't', 'c', 'p',
|
| - '\x05', 'l', 'o', 'c', 'a', 'l',
|
| - '\x00',
|
| - '\x00', '\x0c', // TYPE is PTR.
|
| - '\x00', '\x01', // CLASS is IN.
|
| - '\x00', '\x01', // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
|
| - '\x24', '\x74',
|
| - '\x00', '\x08', // RDLENGTH is 8 bytes.
|
| - '\x99', 'h', 'e', 'l', 'l', 'o', // Bad RDATA format.
|
| - '\xc0', '\x0c',
|
| + 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't',
|
| + 0x04, '_', 't', 'c', 'p',
|
| + 0x05, 'l', 'o', 'c', 'a', 'l',
|
| + 0x00,
|
| + 0x00, 0x0c, // TYPE is PTR.
|
| + 0x00, 0x01, // CLASS is IN.
|
| + 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
|
| + 0x24, 0x74,
|
| + 0x00, 0x08, // RDLENGTH is 8 bytes.
|
| + 0x99, 'h', 'e', 'l', 'l', 'o', // Bad RDATA format.
|
| + 0xc0, 0x0c,
|
|
|
| // Answer 2
|
| - '\x08', '_', 'p', 'r', 'i', 'n', 't', 'e', 'r',
|
| - '\xc0', '\x14', // Pointer to "._tcp.local"
|
| - '\x00', '\x0c', // TYPE is PTR.
|
| - '\x00', '\x01', // CLASS is IN.
|
| - '\x00', '\x01', // TTL (4 bytes) is 20 hours, 47 minutes, 49 seconds.
|
| - '\x24', '\x75',
|
| - '\x00', '\x08', // RDLENGTH is 8 bytes.
|
| - '\x05', 'h', 'e', 'l', 'l', 'o',
|
| - '\xc0', '\x32'
|
| + 0x08, '_', 'p', 'r', 'i', 'n', 't', 'e', 'r',
|
| + 0xc0, 0x14, // Pointer to "._tcp.local"
|
| + 0x00, 0x0c, // TYPE is PTR.
|
| + 0x00, 0x01, // CLASS is IN.
|
| + 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 49 seconds.
|
| + 0x24, 0x75,
|
| + 0x00, 0x08, // RDLENGTH is 8 bytes.
|
| + 0x05, 'h', 'e', 'l', 'l', 'o',
|
| + 0xc0, 0x32
|
| };
|
|
|
| -const char kSamplePacket2[] = {
|
| +const uint8 kSamplePacket2[] = {
|
| // Header
|
| - '\x00', '\x00', // ID is zeroed out
|
| - '\x81', '\x80', // Standard query response, RA, no error
|
| - '\x00', '\x00', // No questions (for simplicity)
|
| - '\x00', '\x02', // 2 RRs (answers)
|
| - '\x00', '\x00', // 0 authority RRs
|
| - '\x00', '\x00', // 0 additional RRs
|
| + 0x00, 0x00, // ID is zeroed out
|
| + 0x81, 0x80, // Standard query response, RA, no error
|
| + 0x00, 0x00, // No questions (for simplicity)
|
| + 0x00, 0x02, // 2 RRs (answers)
|
| + 0x00, 0x00, // 0 authority RRs
|
| + 0x00, 0x00, // 0 additional RRs
|
|
|
| // Answer 1
|
| - '\x07', '_', 'p', 'r', 'i', 'v', 'e', 't',
|
| - '\x04', '_', 't', 'c', 'p',
|
| - '\x05', 'l', 'o', 'c', 'a', 'l',
|
| - '\x00',
|
| - '\x00', '\x0c', // TYPE is PTR.
|
| - '\x00', '\x01', // CLASS is IN.
|
| - '\x00', '\x01', // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
|
| - '\x24', '\x74',
|
| - '\x00', '\x08', // RDLENGTH is 8 bytes.
|
| - '\x05', 'z', 'z', 'z', 'z', 'z',
|
| - '\xc0', '\x0c',
|
| + 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't',
|
| + 0x04, '_', 't', 'c', 'p',
|
| + 0x05, 'l', 'o', 'c', 'a', 'l',
|
| + 0x00,
|
| + 0x00, 0x0c, // TYPE is PTR.
|
| + 0x00, 0x01, // CLASS is IN.
|
| + 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
|
| + 0x24, 0x74,
|
| + 0x00, 0x08, // RDLENGTH is 8 bytes.
|
| + 0x05, 'z', 'z', 'z', 'z', 'z',
|
| + 0xc0, 0x0c,
|
|
|
| // Answer 2
|
| - '\x08', '_', 'p', 'r', 'i', 'n', 't', 'e', 'r',
|
| - '\xc0', '\x14', // Pointer to "._tcp.local"
|
| - '\x00', '\x0c', // TYPE is PTR.
|
| - '\x00', '\x01', // CLASS is IN.
|
| - '\x00', '\x01', // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
|
| - '\x24', '\x74',
|
| - '\x00', '\x08', // RDLENGTH is 8 bytes.
|
| - '\x05', 'z', 'z', 'z', 'z', 'z',
|
| - '\xc0', '\x32'
|
| + 0x08, '_', 'p', 'r', 'i', 'n', 't', 'e', 'r',
|
| + 0xc0, 0x14, // Pointer to "._tcp.local"
|
| + 0x00, 0x0c, // TYPE is PTR.
|
| + 0x00, 0x01, // CLASS is IN.
|
| + 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
|
| + 0x24, 0x74,
|
| + 0x00, 0x08, // RDLENGTH is 8 bytes.
|
| + 0x05, 'z', 'z', 'z', 'z', 'z',
|
| + 0xc0, 0x32
|
| };
|
|
|
| -const char kQueryPacketPrivet[] = {
|
| +const uint8 kQueryPacketPrivet[] = {
|
| // Header
|
| - '\x00', '\x00', // ID is zeroed out
|
| - '\x00', '\x00', // No flags.
|
| - '\x00', '\x01', // One question.
|
| - '\x00', '\x00', // 0 RRs (answers)
|
| - '\x00', '\x00', // 0 authority RRs
|
| - '\x00', '\x00', // 0 additional RRs
|
| + 0x00, 0x00, // ID is zeroed out
|
| + 0x00, 0x00, // No flags.
|
| + 0x00, 0x01, // One question.
|
| + 0x00, 0x00, // 0 RRs (answers)
|
| + 0x00, 0x00, // 0 authority RRs
|
| + 0x00, 0x00, // 0 additional RRs
|
|
|
| // Question
|
| // This part is echoed back from the respective query.
|
| - '\x07', '_', 'p', 'r', 'i', 'v', 'e', 't',
|
| - '\x04', '_', 't', 'c', 'p',
|
| - '\x05', 'l', 'o', 'c', 'a', 'l',
|
| - '\x00',
|
| - '\x00', '\x0c', // TYPE is PTR.
|
| - '\x00', '\x01', // CLASS is IN.
|
| + 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't',
|
| + 0x04, '_', 't', 'c', 'p',
|
| + 0x05, 'l', 'o', 'c', 'a', 'l',
|
| + 0x00,
|
| + 0x00, 0x0c, // TYPE is PTR.
|
| + 0x00, 0x01, // CLASS is IN.
|
| };
|
|
|
| -const char kSamplePacketAdditionalOnly[] = {
|
| +const uint8 kSamplePacketAdditionalOnly[] = {
|
| // Header
|
| - '\x00', '\x00', // ID is zeroed out
|
| - '\x81', '\x80', // Standard query response, RA, no error
|
| - '\x00', '\x00', // No questions (for simplicity)
|
| - '\x00', '\x00', // 2 RRs (answers)
|
| - '\x00', '\x00', // 0 authority RRs
|
| - '\x00', '\x01', // 0 additional RRs
|
| + 0x00, 0x00, // ID is zeroed out
|
| + 0x81, 0x80, // Standard query response, RA, no error
|
| + 0x00, 0x00, // No questions (for simplicity)
|
| + 0x00, 0x00, // 2 RRs (answers)
|
| + 0x00, 0x00, // 0 authority RRs
|
| + 0x00, 0x01, // 0 additional RRs
|
|
|
| // Answer 1
|
| - '\x07', '_', 'p', 'r', 'i', 'v', 'e', 't',
|
| - '\x04', '_', 't', 'c', 'p',
|
| - '\x05', 'l', 'o', 'c', 'a', 'l',
|
| - '\x00',
|
| - '\x00', '\x0c', // TYPE is PTR.
|
| - '\x00', '\x01', // CLASS is IN.
|
| - '\x00', '\x01', // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
|
| - '\x24', '\x74',
|
| - '\x00', '\x08', // RDLENGTH is 8 bytes.
|
| - '\x05', 'h', 'e', 'l', 'l', 'o',
|
| - '\xc0', '\x0c',
|
| + 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't',
|
| + 0x04, '_', 't', 'c', 'p',
|
| + 0x05, 'l', 'o', 'c', 'a', 'l',
|
| + 0x00,
|
| + 0x00, 0x0c, // TYPE is PTR.
|
| + 0x00, 0x01, // CLASS is IN.
|
| + 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
|
| + 0x24, 0x74,
|
| + 0x00, 0x08, // RDLENGTH is 8 bytes.
|
| + 0x05, 'h', 'e', 'l', 'l', 'o',
|
| + 0xc0, 0x0c,
|
| };
|
|
|
| -const char kSamplePacketNsec[] = {
|
| +const uint8 kSamplePacketNsec[] = {
|
| // Header
|
| - '\x00', '\x00', // ID is zeroed out
|
| - '\x81', '\x80', // Standard query response, RA, no error
|
| - '\x00', '\x00', // No questions (for simplicity)
|
| - '\x00', '\x01', // 1 RR (answers)
|
| - '\x00', '\x00', // 0 authority RRs
|
| - '\x00', '\x00', // 0 additional RRs
|
| + 0x00, 0x00, // ID is zeroed out
|
| + 0x81, 0x80, // Standard query response, RA, no error
|
| + 0x00, 0x00, // No questions (for simplicity)
|
| + 0x00, 0x01, // 1 RR (answers)
|
| + 0x00, 0x00, // 0 authority RRs
|
| + 0x00, 0x00, // 0 additional RRs
|
|
|
| // Answer 1
|
| - '\x07', '_', 'p', 'r', 'i', 'v', 'e', 't',
|
| - '\x04', '_', 't', 'c', 'p',
|
| - '\x05', 'l', 'o', 'c', 'a', 'l',
|
| - '\x00',
|
| - '\x00', '\x2f', // TYPE is NSEC.
|
| - '\x00', '\x01', // CLASS is IN.
|
| - '\x00', '\x01', // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
|
| - '\x24', '\x74',
|
| - '\x00', '\x06', // RDLENGTH is 6 bytes.
|
| - '\xc0', '\x0c',
|
| - '\x00', '\x02', '\x00', '\x08' // Only A record present
|
| + 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't',
|
| + 0x04, '_', 't', 'c', 'p',
|
| + 0x05, 'l', 'o', 'c', 'a', 'l',
|
| + 0x00,
|
| + 0x00, 0x2f, // TYPE is NSEC.
|
| + 0x00, 0x01, // CLASS is IN.
|
| + 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
|
| + 0x24, 0x74,
|
| + 0x00, 0x06, // RDLENGTH is 6 bytes.
|
| + 0xc0, 0x0c,
|
| + 0x00, 0x02, 0x00, 0x08 // Only A record present
|
| };
|
|
|
| -const char kSamplePacketAPrivet[] = {
|
| +const uint8 kSamplePacketAPrivet[] = {
|
| // Header
|
| - '\x00', '\x00', // ID is zeroed out
|
| - '\x81', '\x80', // Standard query response, RA, no error
|
| - '\x00', '\x00', // No questions (for simplicity)
|
| - '\x00', '\x01', // 1 RR (answers)
|
| - '\x00', '\x00', // 0 authority RRs
|
| - '\x00', '\x00', // 0 additional RRs
|
| + 0x00, 0x00, // ID is zeroed out
|
| + 0x81, 0x80, // Standard query response, RA, no error
|
| + 0x00, 0x00, // No questions (for simplicity)
|
| + 0x00, 0x01, // 1 RR (answers)
|
| + 0x00, 0x00, // 0 authority RRs
|
| + 0x00, 0x00, // 0 additional RRs
|
|
|
| // Answer 1
|
| - '\x07', '_', 'p', 'r', 'i', 'v', 'e', 't',
|
| - '\x04', '_', 't', 'c', 'p',
|
| - '\x05', 'l', 'o', 'c', 'a', 'l',
|
| - '\x00',
|
| - '\x00', '\x01', // TYPE is A.
|
| - '\x00', '\x01', // CLASS is IN.
|
| - '\x00', '\x01', // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
|
| - '\x24', '\x74',
|
| - '\x00', '\x04', // RDLENGTH is 4 bytes.
|
| - '\xc0', '\x0c',
|
| - '\x00', '\x02',
|
| + 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't',
|
| + 0x04, '_', 't', 'c', 'p',
|
| + 0x05, 'l', 'o', 'c', 'a', 'l',
|
| + 0x00,
|
| + 0x00, 0x01, // TYPE is A.
|
| + 0x00, 0x01, // CLASS is IN.
|
| + 0x00, 0x01, // TTL (4 bytes) is 20 hours, 47 minutes, 48 seconds.
|
| + 0x24, 0x74,
|
| + 0x00, 0x04, // RDLENGTH is 4 bytes.
|
| + 0xc0, 0x0c,
|
| + 0x00, 0x02,
|
| };
|
|
|
| -const char kSamplePacketGoodbye[] = {
|
| +const uint8 kSamplePacketGoodbye[] = {
|
| // Header
|
| - '\x00', '\x00', // ID is zeroed out
|
| - '\x81', '\x80', // Standard query response, RA, no error
|
| - '\x00', '\x00', // No questions (for simplicity)
|
| - '\x00', '\x01', // 2 RRs (answers)
|
| - '\x00', '\x00', // 0 authority RRs
|
| - '\x00', '\x00', // 0 additional RRs
|
| + 0x00, 0x00, // ID is zeroed out
|
| + 0x81, 0x80, // Standard query response, RA, no error
|
| + 0x00, 0x00, // No questions (for simplicity)
|
| + 0x00, 0x01, // 2 RRs (answers)
|
| + 0x00, 0x00, // 0 authority RRs
|
| + 0x00, 0x00, // 0 additional RRs
|
|
|
| // Answer 1
|
| - '\x07', '_', 'p', 'r', 'i', 'v', 'e', 't',
|
| - '\x04', '_', 't', 'c', 'p',
|
| - '\x05', 'l', 'o', 'c', 'a', 'l',
|
| - '\x00',
|
| - '\x00', '\x0c', // TYPE is PTR.
|
| - '\x00', '\x01', // CLASS is IN.
|
| - '\x00', '\x00', // TTL (4 bytes) is zero;
|
| - '\x00', '\x00',
|
| - '\x00', '\x08', // RDLENGTH is 8 bytes.
|
| - '\x05', 'z', 'z', 'z', 'z', 'z',
|
| - '\xc0', '\x0c',
|
| + 0x07, '_', 'p', 'r', 'i', 'v', 'e', 't',
|
| + 0x04, '_', 't', 'c', 'p',
|
| + 0x05, 'l', 'o', 'c', 'a', 'l',
|
| + 0x00,
|
| + 0x00, 0x0c, // TYPE is PTR.
|
| + 0x00, 0x01, // CLASS is IN.
|
| + 0x00, 0x00, // TTL (4 bytes) is zero;
|
| + 0x00, 0x00,
|
| + 0x00, 0x08, // RDLENGTH is 8 bytes.
|
| + 0x05, 'z', 'z', 'z', 'z', 'z',
|
| + 0xc0, 0x0c,
|
| };
|
|
|
| +std::string MakeString(const uint8* data, unsigned size) {
|
| + return std::string(reinterpret_cast<const char*>(data), size);
|
| +}
|
| +
|
| class PtrRecordCopyContainer {
|
| public:
|
| PtrRecordCopyContainer() {}
|
| @@ -385,8 +389,8 @@ class MDnsTest : public ::testing::Test {
|
|
|
|
|
| protected:
|
| - void ExpectPacket(const char* packet, unsigned size);
|
| - void SimulatePacketReceive(const char* packet, unsigned size);
|
| + void ExpectPacket(const uint8* packet, unsigned size);
|
| + void SimulatePacketReceive(const uint8* packet, unsigned size);
|
|
|
| scoped_ptr<MDnsClientImpl> test_client_;
|
| IPEndPoint mdns_ipv4_endpoint_;
|
| @@ -424,12 +428,12 @@ void MDnsTest::SetUp() {
|
| void MDnsTest::TearDown() {
|
| }
|
|
|
| -void MDnsTest::SimulatePacketReceive(const char* packet, unsigned size) {
|
| +void MDnsTest::SimulatePacketReceive(const uint8* packet, unsigned size) {
|
| socket_factory_->SimulateReceive(packet, size);
|
| }
|
|
|
| -void MDnsTest::ExpectPacket(const char* packet, unsigned size) {
|
| - EXPECT_CALL(*socket_factory_, OnSendTo(std::string(packet, size)))
|
| +void MDnsTest::ExpectPacket(const uint8* packet, unsigned size) {
|
| + EXPECT_CALL(*socket_factory_, OnSendTo(MakeString(packet, size)))
|
| .Times(2);
|
| }
|
|
|
| @@ -1096,8 +1100,8 @@ class MDnsConnectionTest : public ::testing::Test {
|
| };
|
|
|
| TEST_F(MDnsConnectionTest, ReceiveSynchronous) {
|
| - std::string sample_packet =
|
| - std::string(kSamplePacket1, sizeof(kSamplePacket1));
|
| + std::string sample_packet = MakeString(kSamplePacket1,
|
| + sizeof(kSamplePacket1));
|
|
|
| socket_ipv6_->SetResponsePacket(sample_packet);
|
| EXPECT_CALL(*socket_ipv4_, RecvFrom(_, _, _, _))
|
| @@ -1113,8 +1117,8 @@ TEST_F(MDnsConnectionTest, ReceiveSynchronous) {
|
| }
|
|
|
| TEST_F(MDnsConnectionTest, ReceiveAsynchronous) {
|
| - std::string sample_packet =
|
| - std::string(kSamplePacket1, sizeof(kSamplePacket1));
|
| + std::string sample_packet = MakeString(kSamplePacket1,
|
| + sizeof(kSamplePacket1));
|
| socket_ipv6_->SetResponsePacket(sample_packet);
|
| EXPECT_CALL(*socket_ipv4_, RecvFrom(_, _, _, _))
|
| .WillOnce(Return(ERR_IO_PENDING));
|
| @@ -1131,8 +1135,8 @@ TEST_F(MDnsConnectionTest, ReceiveAsynchronous) {
|
| }
|
|
|
| TEST_F(MDnsConnectionTest, Send) {
|
| - std::string sample_packet =
|
| - std::string(kSamplePacket1, sizeof(kSamplePacket1));
|
| + std::string sample_packet = MakeString(kSamplePacket1,
|
| + sizeof(kSamplePacket1));
|
|
|
| scoped_refptr<IOBufferWithSize> buf(
|
| new IOBufferWithSize(sizeof kSamplePacket1));
|
|
|