[ https://issues.apache.org/jira/browse/HBASE-17860?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15955999#comment-15955999 ]
Ted Yu edited comment on HBASE-17860 at 4/5/17 5:31 PM: -------------------------------------------------------- [~eclark] was asking why not casting the callback methods. I answered on RB but the compilation errors are not properly formatted. However, the assignment of callback functions triggers the following compilation errors: {code} connection/connection-factory.cc:164:22: error: reinterpret_cast from 'int (SaslHandler::*)(void *, int, const char *)' to 'sasl_callback_ft' (aka 'int (*)()') is not allowed callback->proc = reinterpret_cast<sasl_callback_ft> (&SaslHandler::SaslLogFn); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ connection/connection-factory.cc:169:22: error: cannot cast from type 'int (SaslHandler::*)(void *, const char **)' to pointer type 'sasl_callback_ft' (aka 'int (*)()') callback->proc = (sasl_callback_ft) &SaslHandler::GetPluginPath; ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ connection/connection-factory.cc:175:22: error: cannot cast from type 'int (SaslHandler::*)(void *, int, const char **, unsigned int *)' to pointer type 'sasl_callback_ft' (aka 'int (*)()') callback->proc = (sasl_callback_ft) &SaslHandler::Simple; {code} I also tried other cast's which resulted in other compilation errors. was (Author: yuzhih...@gmail.com): [~eclark] was asking why not casting the callback methods. I answered on RB but the compilation errors are not properly formatted. However, the assignment of callback functions triggers the following compilation errors: {code} connection/connection-factory.cc:164:22: error: reinterpret_cast from 'int (SaslHandler::*)(void *, int, const char *)' to 'sasl_callback_ft' (aka 'int (*)()') is not allowed callback->proc = reinterpret_cast<sasl_callback_ft> (&SaslHandler::SaslLogFn); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ connection/connection-factory.cc:169:22: error: cannot cast from type 'int (SaslHandler::*)(void *, const char **)' to pointer type 'sasl_callback_ft' (aka 'int (*)()') callback->proc = (sasl_callback_ft) &SaslHandler::GetPluginPath; ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ connection/connection-factory.cc:175:22: error: cannot cast from type 'int (SaslHandler::*)(void *, int, const char **, unsigned int *)' to pointer type 'sasl_callback_ft' (aka 'int (*)()') callback->proc = (sasl_callback_ft) &SaslHandler::Simple; {code} > Implement secure native client connection > ----------------------------------------- > > Key: HBASE-17860 > URL: https://issues.apache.org/jira/browse/HBASE-17860 > Project: HBase > Issue Type: Sub-task > Reporter: Ted Yu > Assignee: Ted Yu > Priority: Critical > Attachments: 17860.v2.txt, 17860.v3.txt, 17860.v4.txt > > > So far, the native client communicates with insecure cluster. > This JIRA is to add secure connection support for native client using Cyrus > library. > The work is based on earlier implementation and is redone via wangle and > folly frameworks. > Thanks to [~devaraj] who started the initiative. > Here is high level description of the design: > * SaslHandler is declared as: > {code} > class SaslHandler > : public wangle::HandlerAdapter<folly::IOBufQueue&, > std::unique_ptr<folly::IOBuf>>{ > {code} > It would be inserted between EventBaseHandler and > LengthFieldBasedFrameDecoder in the pipeline (via > ConnectionFactory::Connect()) > * SaslHandler would intercept writes to server by buffering the IOBuf's and > start the handshake process (via sasl_client_XX calls provided by Cyrus) > * after handshake is complete, SaslHandler would send the buffered IOBuf's to > server and act as pass-thru from then on -- This message was sent by Atlassian JIRA (v6.3.15#6346)