Changeset 1014
- Timestamp:
- 04/07/07 17:54:30 (2 years ago)
- Files:
-
- trunk/pdns/pdns/packethandler.cc (modified) (1 diff)
- trunk/pdns/pdns/zoneparser-tng.cc (modified) (3 diffs)
- trunk/pdns/regression-tests/test.com (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/pdns/pdns/packethandler.cc
r1004 r1014 548 548 (c >= 'A' && c <= 'Z') || 549 549 (c >= '0' && c <= '9') || 550 c =='-' || c == '_' || c=='*' || c=='.' || c=='/' ))550 c =='-' || c == '_' || c=='*' || c=='.' || c=='/' || c=='@')) 551 551 return false; 552 552 } trunk/pdns/pdns/zoneparser-tng.cc
r996 r1014 179 179 } 180 180 181 bool findAndElide(string& line, char c) 182 { 183 string::size_type pos, len = line.length(); 184 bool inQuote=false; 185 for(pos = 0 ; pos < len; ++pos) { 186 if(line[pos]=='\\') 187 pos++; 188 else if(line[pos]=='"') 189 inQuote=!inQuote; 190 else if(line[pos]==c && !inQuote) 191 break; 192 } 193 if(pos != len) { 194 line.erase(pos, 1); 195 return true; 196 } 197 return false; 198 } 199 200 181 201 bool ZoneParserTNG::get(DNSResourceRecord& rr) 182 202 { … … 290 310 291 311 chopComment(rr.content); 292 string::size_type pos; 293 294 if(rr.qtype.getCode()!=QType::TXT && (pos=rr.content.find('('))!=string::npos) { 295 rr.content.resize(pos); // chop off ( 296 trim(rr.content); 297 while(getLine()) { 298 chomp(d_line,"\r\n "); 299 chopComment(d_line); 300 301 trim(d_line); 302 303 pos=d_line.find(')'); 304 if(pos!=string::npos) { 305 d_line.resize(pos); 312 // cerr<<"rr.content before possible elide: '"<<rr.content<<"'\n"; 313 if(findAndElide(rr.content, '(')) { // have found a ( and elided it 314 if(!findAndElide(rr.content, ')')) { 315 while(getLine()) { 316 chomp(d_line,"\r\n "); 317 chopComment(d_line); 306 318 trim(d_line); 319 320 bool ended = findAndElide(d_line, ')'); 307 321 rr.content+=" "+d_line; 308 break; 322 if(ended) 323 break; 309 324 } 310 rr.content+=" "+d_line;311 }312 } 325 } 326 } 327 313 328 vector<string> soaparts; 314 329 switch(rr.qtype.getCode()) { … … 357 372 return false; 358 373 } 359 360 361 #if 0362 int main(int argc, char** argv)363 try364 {365 reportAllTypes();366 ZoneParserTNG zpt(argv[1]);367 DNSResourceRecord rr;368 while(zpt.get(rr)) {369 }370 371 372 }373 catch(...)374 {}375 #endiftrunk/pdns/regression-tests/test.com
r947 r1014 1 1 $TTL 3600 2 2 $ORIGIN test.com. 3 @ IN SOA ns1.test.com. ahu.example.com. ( 4 2005092501 3 @ IN SOA ns1.test.com. ahu.example.com. ( 2005092501 5 4 8H ; refresh 6 5 2H ; retry