THRIFT-415. rb: BinaryProtocolAccelerated does not behave properly when strict reads are turned off

This patch adds the appropriate test for the behavior and fixes the thrift_native project to do the right thing. 



git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@760735 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/lib/rb/ext/binary_protocol_accelerated.c b/lib/rb/ext/binary_protocol_accelerated.c
index e7ea39e..751281e 100644
--- a/lib/rb/ext/binary_protocol_accelerated.c
+++ b/lib/rb/ext/binary_protocol_accelerated.c
@@ -300,7 +300,7 @@
       rb_exc_raise(get_protocol_exception(INT2FIX(BAD_VERSION), rb_str_new2("No version identifier, old protocol client?")));
     }
     name = READ(self, version);
-    type = rb_thrift_binary_proto_read_byte(self);
+    type = read_byte_direct(self);
     seqid = rb_thrift_binary_proto_read_i32(self);
   }
   
diff --git a/lib/rb/spec/binaryprotocol_spec_shared.rb b/lib/rb/spec/binaryprotocol_spec_shared.rb
index a8a6e90..90371b3 100644
--- a/lib/rb/spec/binaryprotocol_spec_shared.rb
+++ b/lib/rb/spec/binaryprotocol_spec_shared.rb
@@ -208,6 +208,12 @@
     @prot.read_message_begin().should == ['testMessage', Thrift::MessageTypes::CALL, 17]
   end
   
+  it "should read the message header without version when writes are not strict" do
+    @prot = protocol_class.new(@trans, false, true) # no strict write
+    @trans.write("\000\000\000\vtestMessage\001\000\000\000\021")
+    @prot.read_message_begin().should == ['testMessage', Thrift::MessageTypes::CALL, 17]
+  end
+
   # message footer is a noop
   
   it "should read a field header" do