From ac8175fb32d32c99d001573ad04aa8e579c35c33 Mon Sep 17 00:00:00 2001 From: Brian Candler Date: Sun, 1 May 2011 09:12:53 +0100 Subject: [PATCH] Return String bodies for unknown message types --- lib/netlink/nlsocket.rb | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/lib/netlink/nlsocket.rb b/lib/netlink/nlsocket.rb index a70164b..0450f49 100644 --- a/lib/netlink/nlsocket.rb +++ b/lib/netlink/nlsocket.rb @@ -167,13 +167,21 @@ module Netlink end # Parse netlink packet in a string buffer. Yield header fields plus - # a Netlink::Message object (or nil) for each message. + # a Netlink::Message-derived object for each message. For unknown message + # types it will yield a raw String, or nil if there is no message body. def parse_yield(mesg) # :yields: type, flags, seq, pid, Message-or-nil dechunk(mesg) do |h_type, h_flags, h_seq, h_pid, data| klass = Message::CODE_TO_MESSAGE[h_type] - yield h_type, h_flags, h_seq, h_pid, klass && klass.parse(data) + yield h_type, h_flags, h_seq, h_pid, + if klass + klass.parse(data) + elsif data && data != EMPTY_STRING + data + else + nil + end end - end + end # Parse netlink packet in a string buffer. Yield header and body # components for each message in turn.