THRIFT-3584 boolean false value cannot be transferred

Return value fix and test.
diff --git a/compiler/cpp/src/generate/t_lua_generator.cc b/compiler/cpp/src/generate/t_lua_generator.cc
index 1e80fd1..5a674e4 100644
--- a/compiler/cpp/src/generate/t_lua_generator.cc
+++ b/compiler/cpp/src/generate/t_lua_generator.cc
@@ -609,7 +609,7 @@
 
       // Return the result if it's not a void function
       if (!(*f_iter)->get_returntype()->is_void()) {
-        out << indent() << "if result.success then" << endl << indent() << "  return result.success"
+        out << indent() << "if result.success ~= nil then" << endl << indent() << "  return result.success"
             << endl;
 
         // Throw custom exceptions
diff --git a/test/lua/test_basic_client.lua b/test/lua/test_basic_client.lua
index 34bd9b1..8d00cce 100644
--- a/test/lua/test_basic_client.lua
+++ b/test/lua/test_basic_client.lua
@@ -94,7 +94,7 @@
 
   -- Bool
   assertEqual(client:testBool(true), true, 'Failed testBool true')
-  -- assertEqual(client:testBool(false), false, 'Failed testBool false')
+  assertEqual(client:testBool(false), false, 'Failed testBool false')
 
   -- Byte
   assertEqual(client:testByte(0x01), 1,    'Failed testByte 1')