On Fri, Apr 24, 2020 at 10:02:49 -0500, Eric Blake wrote: > On 4/24/20 7:04 AM, Peter Krempa wrote: > > Our implementation wasn't quite able to parse everything that qemu does. > > This patch rewrites the parser to a code that semantically resembles the > > combination of 'nbd_parse_filename' and 'inet_parse' methods in qemu to > > be able to parse the strings in an equivalent manner. > > > > The only thing that libvirt doesn't do is to check the lenghts of > > lengths > > > various components in the nbd string in places where qemu uses constant > > size buffers. > > > > The test cases validate that some of the corner cases involving colons > > are parsed properly. > > > > https://bugzilla.redhat.com/show_bug.cgi?id=1826652 > > > > Signed-off-by: Peter Krempa <pkrempa@xxxxxxxxxx> > > --- > > src/util/virstoragefile.c | 90 +++++++++++++++++++++++---------------- > > tests/virstoragetest.c | 16 +++++++ > > 2 files changed, 70 insertions(+), 36 deletions(-) > > > > > + TEST_BACKING_PARSE("nbd:unix:/tmp/sock::exportname=:", > > + "<source protocol='nbd' name=':'>\n" > > + " <host transport='unix' socket='/tmp/sock:'/>\n" > > + "</source>\n"); > > nbd+unix:///:?socket=/tmp/sock: > > Whether you also add the proper URI counterparts to the test is not directly > relevant to the fix at hand. I can add them but separately. The URIs are parsed via the libxml URI module so they are not related in any way to the colon-delimited string code-wise.