d_sock=-1;
d_timeout=500000;
d_bufsize=1500;
- d_buf=new unsigned char[d_bufsize];
+ d_buf = 0;
}
LWRes::~LWRes()
/** Never throws! */
int LWRes::asyncresolve(const ComboAddress& ip, const string& domain, int type, bool doTCP, struct timeval* now)
{
+ if(!d_buf)
+ d_buf=new unsigned char[d_bufsize];
+
d_ip=ip;
vector<uint8_t> vpacket;
DNSPacketWriter pw(vpacket, domain, type);
val.clear();
val.reserve(d_end - d_pos);
+ const char* strptr=d_string.c_str();
while(d_pos < d_end) {
- if(dns_isspace(d_string[d_pos]))
+ if(dns_isspace(strptr[d_pos]))
break;
- if(d_string[d_pos]=='\\' && d_pos < d_end - 1)
+ if(strptr[d_pos]=='\\' && d_pos < d_end - 1)
d_pos++;
- val.append(1, d_string[d_pos]);
+ val.append(1, strptr[d_pos]);
d_pos++;
}
{
skipSpaces();
int pos=(int)d_pos;
- while(d_pos < d_end && !dns_isspace(d_string[d_pos]))
+ const char* strptr=d_string.c_str();
+ while(d_pos < d_end && !dns_isspace(strptr[d_pos]))
d_pos++;
string tmp;
void RecordTextReader::skipSpaces()
{
- while(d_pos < d_end && dns_isspace(d_string[d_pos]))
+ const char* strptr = d_string.c_str();
+ while(d_pos < d_end && dns_isspace(strptr[d_pos]))
d_pos++;
if(d_pos == d_end)
throw RecordTextException("missing field at the end of record content '"+d_string+"'");