Instead of not emitting the port in nbd_refresh_filename(), just set it to the default if the user did not specify it. This makes the logic a bit simpler.
Signed-off-by: Max Reitz <mre...@redhat.com> --- block/nbd.c | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/block/nbd.c b/block/nbd.c index 6a2fc27..8d9a217 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -411,6 +411,10 @@ static void nbd_refresh_filename(BlockDriverState *bs, QDict *options) const char *export = qdict_get_try_str(options, "export"); const char *tlscreds = qdict_get_try_str(options, "tls-creds"); + if (host && !port) { + port = stringify(NBD_DEFAULT_PORT); + } + qdict_put_obj(opts, "driver", QOBJECT(qstring_from_str("nbd"))); if (path && export) { @@ -419,27 +423,19 @@ static void nbd_refresh_filename(BlockDriverState *bs, QDict *options) } else if (path && !export) { snprintf(bs->exact_filename, sizeof(bs->exact_filename), "nbd+unix://?socket=%s", path); - } else if (!path && export && port) { + } else if (!path && export) { snprintf(bs->exact_filename, sizeof(bs->exact_filename), "nbd://%s:%s/%s", host, port, export); - } else if (!path && export && !port) { - snprintf(bs->exact_filename, sizeof(bs->exact_filename), - "nbd://%s/%s", host, export); - } else if (!path && !export && port) { + } else if (!path && !export) { snprintf(bs->exact_filename, sizeof(bs->exact_filename), "nbd://%s:%s", host, port); - } else if (!path && !export && !port) { - snprintf(bs->exact_filename, sizeof(bs->exact_filename), - "nbd://%s", host); } if (path) { qdict_put_obj(opts, "path", QOBJECT(qstring_from_str(path))); - } else if (port) { - qdict_put_obj(opts, "host", QOBJECT(qstring_from_str(host))); - qdict_put_obj(opts, "port", QOBJECT(qstring_from_str(port))); } else { qdict_put_obj(opts, "host", QOBJECT(qstring_from_str(host))); + qdict_put_obj(opts, "port", QOBJECT(qstring_from_str(port))); } if (export) { qdict_put_obj(opts, "export", QOBJECT(qstring_from_str(export))); -- 2.7.1