(I've tweaked the subject line to distinguish this part of the thread
(and this patch) from the first part (which had its own patch).)

On Mon, 2010-01-11, Ivan Zhakov wrote:
> On Mon, Jan 11, 2010 at 1:29 PM, Philip Martin
> <philip.mar...@wandisco.com> wrote:
> > Ivan Zhakov <i...@visualsvn.com> writes:
> >
> >> -  return ne_xml_parse(pwb->parser, data, len);
> >> +  parser_status = ne_xml_parse(pwb->parser, data, len);
> >> +  if (parser_status)
> >> +  {
> >> +      /* Pass XML parser error. */
> >> +      ne_set_error(pwb->req->ne_sess, "%s", 
> >> ne_xml_get_error(pwb->parser));
> >> +  }
> >> +
> >> +  return parser_status;
> >
> > There's another call to ne_xml_parse in that file, in
> > parse_spool_file. Should we make the same change there?
> 
> Good point, but XML parser neon is wrapped in parsed_request()
> function after calling parse_spool_file(). I updated my patch to
> return the same error message as parsed_request():
> [[[
> svn: The OPTIONS request returned invalid XML in the response: XML parse 
> error at line 1: no element found (https://svn.apache.org/repos/)
> ]]]

> I like my original error message, but consistency is more important IMHO.

Your new patch now has a more descriptive error message, that is the
same as the one produced by the parse_spool_file() function, which is
good, but they are generated in different ways at different call levels,
which is bad. Your patch has:

> +  parser_status = ne_xml_parse(pwb->parser, data, len);
> +  if (parser_status)
> +  {
> +      /* Pass XML parser error. */
> +      pwb->req->err = svn_error_createf
> +          (SVN_ERR_RA_DAV_REQUEST_FAILED, NULL,
> +           _("The %s request returned invalid XML "
> +           "in the response: %s (%s)"),
> +           pwb->req->method,
> +           ne_xml_get_error(pwb->parser),
> +           pwb->req->url);
> +  }

whereas parse_request() calls parse_spool_file() which calls
ne_xml_parse(), and then it does:

>   /* was there an XML parse error somewhere? */
>   msg = ne_xml_get_error(success_parser);
>   if (msg != NULL && *msg != '\0')
>     return svn_error_createf(SVN_ERR_RA_DAV_REQUEST_FAILED, NULL,
>                              _("The %s request returned invalid XML "
>                                "in the response: %s (%s)"),
>                              method, msg, url);

Can't we do them both in the same way, somehow?

- Julian


Reply via email to