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);