forked from mozy/ruby-protocol-buffers
-
Notifications
You must be signed in to change notification settings - Fork 20
Open
Description
Hi
I am using this proto https://github.com/PowerDNS/pdns/blob/master/pdns/dnsmessage.proto which i compiled to give me the following .rb.
#!/usr/bin/env ruby
# Generated by the protocol buffer compiler. DO NOT EDIT!
require 'protocol_buffers'
# forward declarations
class PBDNSMessage < ::ProtocolBuffers::Message; end
class PBDNSMessage < ::ProtocolBuffers::Message
# forward declarations
class DNSQuestion < ::ProtocolBuffers::Message; end
class DNSResponse < ::ProtocolBuffers::Message; end
# enums
module Type
include ::ProtocolBuffers::Enum
set_fully_qualified_name "PBDNSMessage.Type"
DNSQueryType = 1
DNSResponseType = 2
DNSOutgoingQueryType = 3
DNSIncomingResponseType = 4
end
module SocketFamily
include ::ProtocolBuffers::Enum
set_fully_qualified_name "PBDNSMessage.SocketFamily"
INET = 1
INET6 = 2
end
module SocketProtocol
include ::ProtocolBuffers::Enum
set_fully_qualified_name "PBDNSMessage.SocketProtocol"
UDP = 1
TCP = 2
end
set_fully_qualified_name "PBDNSMessage"
# nested messages
class DNSQuestion < ::ProtocolBuffers::Message
set_fully_qualified_name "PBDNSMessage.DNSQuestion"
optional :string, :qName, 1
optional :uint32, :qType, 2
optional :uint32, :qClass, 3
end
class DNSResponse < ::ProtocolBuffers::Message
# forward declarations
class DNSRR < ::ProtocolBuffers::Message; end
set_fully_qualified_name "PBDNSMessage.DNSResponse"
# nested messages
class DNSRR < ::ProtocolBuffers::Message
set_fully_qualified_name "PBDNSMessage.DNSResponse.DNSRR"
optional :string, :name, 1
optional :uint32, :type, 2
optional :uint32, :class, 3
optional :uint32, :ttl, 4
optional :bytes, :rdata, 5
end
optional :uint32, :rcode, 1
repeated ::PBDNSMessage::DNSResponse::DNSRR, :rrs, 2
optional :string, :appliedPolicy, 3
repeated :string, :tags, 4
optional :uint32, :queryTimeSec, 5
optional :uint32, :queryTimeUsec, 6
end
required ::PBDNSMessage::Type, :type, 1
optional :bytes, :messageId, 2
optional :bytes, :serverIdentity, 3
optional ::PBDNSMessage::SocketFamily, :socketFamily, 4
optional ::PBDNSMessage::SocketProtocol, :socketProtocol, 5
optional :bytes, :from, 6
optional :bytes, :to, 7
optional :uint64, :inBytes, 8
optional :uint32, :timeSec, 9
optional :uint32, :timeUsec, 10
optional :uint32, :id, 11
optional ::PBDNSMessage::DNSQuestion, :question, 12
optional ::PBDNSMessage::DNSResponse, :response, 13
optional :bytes, :originalRequestorSubnet, 14
optional :string, :requestorId, 15
optional :bytes, :initialRequestId, 16
end
But when i receive DNSResponse events from the DNS server it get errors e.g.
/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/ruby-protocol-buffers-1.6.1/lib/protocol_buffers/runtime/
field.rb:141:in `class': undefined method `[]' for nil:NilClass (NoMethodError)
This only happens when i receive an event with one or more DNSRR entries.. when there are none it works OK.
For example a message produced on the source that works is
type: DNSResponseType
messageId: "\213\344sy\314\003OX\234\014\204\220{7\r\337"
socketFamily: INET
socketProtocol: UDP
from: "\n\204\020\017"
to: "\n\204\020\017"
inBytes: 89
timeSec: 1496380819
timeUsec: 865757
id: 55841
question {
qName: "google.com."
qType: 6
qClass: 1
}
response {
rcode: 0
queryTimeSec: 1496380819
queryTimeUsec: 865365
}
And one that fails is
type: DNSResponseType
messageId: "\254\251v\304\223`IV\236\245#y\003\375<\214"
socketFamily: INET
socketProtocol: UDP
from: "\n\204\020\017"
to: "\n\204\020\017"
inBytes: 87
timeSec: 1496380805
timeUsec: 897818
id: 64238
question {
qName: "google.com."
qType: 1
qClass: 1
}
response {
rcode: 0
rrs {
name: "google.com."
type: 1
class: 1
ttl: 151
rdata: "\254\331\013."
}
rrs {
name: "google.com."
type: 1
class: 1
ttl: 151
rdata: "\254\331\013."
}
rrs {
name: "google.com."
type: 1
class: 1
ttl: 151
rdata: "\254\331\013."
}
queryTimeSec: 1496380805
queryTimeUsec: 896443
}
Can you suggest please if this is a problem with the compiled protobuf definition or maybe a bug ?
thank you.
Metadata
Metadata
Assignees
Labels
No labels