This is an automated email from the ASF dual-hosted git repository.

jking pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/thrift.git


The following commit(s) were added to refs/heads/master by this push:
     new 5112afc  THRIFT-4670: Twisted, slots, and void method fails with 
"object has no attribute 'success'"
5112afc is described below

commit 5112afcc9732381401435b7134a18aab30d4dec9
Author: Palmer Cox <pal...@fiscalnote.com>
AuthorDate: Wed Nov 21 15:00:37 2018 -0500

    THRIFT-4670: Twisted, slots, and void method fails with "object has no 
attribute 'success'"
    
    For a void method, there is no success value, so, it is an error to
    attempt to assign one to the result object. This error is harmless
    unless slots is also specified - with slots specified, the attempt to
    assign to a non-existent field causes an error which makes the service
    method fail.
    
    Client: py
---
 compiler/cpp/src/thrift/generate/t_py_generator.cc | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/compiler/cpp/src/thrift/generate/t_py_generator.cc 
b/compiler/cpp/src/thrift/generate/t_py_generator.cc
index 9c82b6c..f0a153c 100644
--- a/compiler/cpp/src/thrift/generate/t_py_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_py_generator.cc
@@ -1961,8 +1961,10 @@ void 
t_py_generator::generate_process_function(t_service* tservice, t_function*
       indent(f_service_) << "def write_results_success_" << 
tfunction->get_name()
                          << "(self, success, result, seqid, oprot):" << endl;
       indent_up();
-      f_service_ << indent() << "result.success = success" << endl
-                 << indent() << "oprot.writeMessageBegin(\"" << 
tfunction->get_name()
+      if (!tfunction->get_returntype()->is_void()) {
+        f_service_ << indent() << "result.success = success" << endl;
+      }
+      f_service_ << indent() << "oprot.writeMessageBegin(\"" << 
tfunction->get_name()
                  << "\", TMessageType.REPLY, seqid)" << endl
                  << indent() << "result.write(oprot)" << endl
                  << indent() << "oprot.writeMessageEnd()" << endl

Reply via email to