| 558 | } |
| 559 | |
| 560 | bool HttpServletRequest::getXml(xml& out, size_t body_limit /* 1024000 */) |
| 561 | { |
| 562 | if (request_type_ != HTTP_REQUEST_TEXT_XML) { |
| 563 | return false; |
| 564 | } |
| 565 | |
| 566 | acl_int64 dlen = (acl_int64) getContentLength(); |
| 567 | if (dlen <= 0 || dlen > (acl_int64) body_limit) { |
| 568 | return false; |
| 569 | } |
| 570 | |
| 571 | body_parsed_ = true; |
| 572 | istream& in = getInputStream(); |
| 573 | |
| 574 | ssize_t n; |
| 575 | char buf[8192]; |
| 576 | |
| 577 | while (dlen > 0) { |
| 578 | n = (ssize_t) sizeof(buf) - 1 > (ssize_t) dlen ? |
| 579 | (ssize_t) dlen : (ssize_t) sizeof(buf) - 1; |
| 580 | n = in.read(buf, (size_t) n); |
| 581 | if (n == -1) { |
| 582 | return false; |
| 583 | } |
| 584 | |
| 585 | dlen -= n; |
| 586 | buf[n] = 0; |
| 587 | out.update(buf); |
| 588 | } |
| 589 | |
| 590 | return true; |
| 591 | } |
| 592 | |
| 593 | xml* HttpServletRequest::getXml(size_t body_limit /* 1024000 */) |
| 594 | { |