From ebf72f6682b14833dcbb5232d852929a49e206e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Canna=C3=B2?= Date: Tue, 10 Mar 2015 17:23:08 +0000 Subject: [PATCH] Improved support for compression, issue #219 Now compression on backend seems working Fixed issue #209 --- lib/MySQL_Session.cpp | 8 ++++++-- lib/mysql_data_stream.cpp | 11 +++++++++-- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/lib/MySQL_Session.cpp b/lib/MySQL_Session.cpp index eaaf825bf..5310b7cd3 100644 --- a/lib/MySQL_Session.cpp +++ b/lib/MySQL_Session.cpp @@ -356,7 +356,7 @@ int MySQL_Session::handler() { mybe=find_or_create_backend(current_hostgroup); //if (server_myds!=mybe->server_myds) { // server_myds=mybe->server_myds; - //} + //} mybe->server_myds->PSarrayOUT->add(pkt.ptr, pkt.size); client_myds->setDSS_STATE_QUERY_SENT_NET(); } else { @@ -618,7 +618,11 @@ __exit_DSS__STATE_NOT_INITIALIZED: to_process=0; } */ - if (wrong_pass==true) return -1; + if (wrong_pass==true) { + client_myds->array2buffer_full(); + client_myds->write_to_net(); + return -1; + } return 0; } diff --git a/lib/mysql_data_stream.cpp b/lib/mysql_data_stream.cpp index 69ef06175..e4db4579d 100644 --- a/lib/mysql_data_stream.cpp +++ b/lib/mysql_data_stream.cpp @@ -486,6 +486,13 @@ void MySQL_Data_Stream::generate_compressed_packet() { while (ilen && total_sizeindex(i); total_size+=p->size; + if (i==0) { + mysql_hdr hdr; + memcpy(&hdr,p->ptr,sizeof(mysql_hdr)); + if (hdr.pkt_id==0) { + myconn->compression_pkt_id=-1; + } + } i++; } if (i>=2) { @@ -518,8 +525,8 @@ void MySQL_Data_Stream::generate_compressed_packet() { queueOUT.pkt.ptr=l_alloc(queueOUT.pkt.size); mysql_hdr hdr; hdr.pkt_length=destLen; - //hdr.pkt_id=++myconn->compression_pkt_id; - hdr.pkt_id=1; + hdr.pkt_id=++myconn->compression_pkt_id; + //hdr.pkt_id=1; memcpy((unsigned char *)queueOUT.pkt.ptr,&hdr,sizeof(mysql_hdr)); hdr.pkt_length=total_size; memcpy((unsigned char *)queueOUT.pkt.ptr+4,&hdr,3);