mirror of
https://github.com/uroni/urbackup_frontend_wx.git
synced 2025-10-26 11:19:28 +00:00
Fix Connector
This commit is contained in:
parent
d7ba8fb2a5
commit
a6ccd467ba
@ -225,7 +225,7 @@ std::string Connector::getResponse(const std::string &cmd, const std::string &ar
|
||||
|
||||
|
||||
resp=tcpstack.getPacket(&packetsize);
|
||||
if(packetsize==0)
|
||||
if(resp==NULL || packetsize==0)
|
||||
{
|
||||
busy=false;
|
||||
return "";
|
||||
@ -233,9 +233,8 @@ std::string Connector::getResponse(const std::string &cmd, const std::string &ar
|
||||
}
|
||||
|
||||
std::string ret;
|
||||
ret.resize(packetsize);
|
||||
memcpy(&ret[0], resp, packetsize);
|
||||
delete resp;
|
||||
ret.assign(resp, packetsize);
|
||||
delete[] resp;
|
||||
|
||||
busy=false;
|
||||
|
||||
|
||||
35
tcpstack.cpp
35
tcpstack.cpp
@ -22,7 +22,9 @@
|
||||
|
||||
#include "tcpstack.h"
|
||||
#include <memory.h>
|
||||
|
||||
#include "stringtools.h"
|
||||
|
||||
const unsigned int max_packet_size = 1 * 1024 * 1024;
|
||||
|
||||
void CTCPStack::AddData(char* buf, size_t datasize)
|
||||
{
|
||||
@ -58,33 +60,30 @@ size_t CTCPStack::Send(wxSocketBase* p, const std::string &msg)
|
||||
|
||||
char* CTCPStack::getPacket(size_t* packetsize)
|
||||
{
|
||||
if(buffer.size()>1)
|
||||
if (buffer.size() >= sizeof(MAX_PACKETSIZE))
|
||||
{
|
||||
MAX_PACKETSIZE len;
|
||||
memcpy(&len, &buffer[0], sizeof(MAX_PACKETSIZE) );
|
||||
memcpy(&len, &buffer[0], sizeof(MAX_PACKETSIZE));
|
||||
len = little_endian(len);
|
||||
|
||||
if(len==0)
|
||||
if (len<max_packet_size && buffer.size() >= (size_t)len + sizeof(MAX_PACKETSIZE))
|
||||
{
|
||||
*packetsize=0;
|
||||
buffer.erase(buffer.begin(), buffer.begin()+len+sizeof(MAX_PACKETSIZE));
|
||||
return NULL;
|
||||
}
|
||||
char* buf = new char[len + 1];
|
||||
if (len>0)
|
||||
{
|
||||
memcpy(buf, &buffer[sizeof(MAX_PACKETSIZE)], len);
|
||||
}
|
||||
|
||||
if(buffer.size()>=(size_t)len+sizeof(MAX_PACKETSIZE))
|
||||
{
|
||||
char* buf=new char[len+1];
|
||||
memcpy(buf, &buffer[sizeof(MAX_PACKETSIZE)], len);
|
||||
(*packetsize) = len;
|
||||
|
||||
(*packetsize)=len;
|
||||
buffer.erase(buffer.begin(), buffer.begin() + len + sizeof(MAX_PACKETSIZE));
|
||||
|
||||
buffer.erase(buffer.begin(), buffer.begin()+len+sizeof(MAX_PACKETSIZE));
|
||||
|
||||
buf[len]=0;
|
||||
buf[len] = 0;
|
||||
|
||||
return buf;
|
||||
}
|
||||
}
|
||||
*packetsize=-1;
|
||||
}
|
||||
*packetsize = 0;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user