THRIFT-417. rb: BufferedTransport can enter an infinite loop
Switch native proto implementations to use read_all instead of read. Add a bunch of tests to verify.
Also:
- removed some commented code in binary_protocol_accelerated.c
- struct.c was missing one of the possible native method calls
- updates gem manifest (included files that didn't exist)
- fixed svn:ignores of test/rb/gen-rb and lib/java/gen-java
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@761037 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/lib/rb/ext/struct.c b/lib/rb/ext/struct.c
index 8dd5c3e..fee285e 100644
--- a/lib/rb/ext/struct.c
+++ b/lib/rb/ext/struct.c
@@ -416,11 +416,6 @@
// call validate
rb_funcall(self, validate_method_id, 0);
- // if (rb_funcall(protocol, native_qmark_method_id, 0) == Qtrue) {
- // set_native_proto_function_pointers(protocol);
- // } else {
- // set_default_proto_function_pointers();
- // }
check_native_proto_method_table(protocol);
// write struct begin
@@ -565,7 +560,7 @@
// read each field
while (true) {
- VALUE field_header = rb_funcall(protocol, read_field_begin_method_id, 0);
+ VALUE field_header = mt->read_field_begin(protocol);
VALUE field_type_value = rb_ary_entry(field_header, 1);
int field_type = FIX2INT(field_type_value);