Merge the reporting of the missing source host data into the parser
functions so that callers don't have to do it separately.
---
src/util/virstoragefile.c | 30 ++++++++++++++++++++++++------
1 file changed, 24 insertions(+), 6 deletions(-)
diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c
index c7632808e..c0aa4e4c6 100644
--- a/src/util/virstoragefile.c
+++ b/src/util/virstoragefile.c
@@ -2798,8 +2798,18 @@ static int
virStorageSourceParseBackingJSONInetSocketAddress(virStorageNetHostDefPtr host,
virJSONValuePtr json)
{
- const char *hostname = virJSONValueObjectGetString(json, "host");
- const char *port = virJSONValueObjectGetString(json, "port");
+ const char *hostname;
+ const char *port;
+
+ if (!json) {
+ virReportError(VIR_ERR_INVALID_ARG, "%s",
+ _("missing remote server specification in JSON "
+ "backing volume definition"));
+ return -1;
+ }
+
+ hostname = virJSONValueObjectGetString(json, "host");
+ port = virJSONValueObjectGetString(json, "port");
if (!hostname) {
virReportError(VIR_ERR_INVALID_ARG, "%s",
@@ -2822,10 +2832,19 @@ static int
virStorageSourceParseBackingJSONSocketAddress(virStorageNetHostDefPtr host,
virJSONValuePtr json)
{
- const char *type = virJSONValueObjectGetString(json, "type");
- const char *socket = virJSONValueObjectGetString(json, "socket");
+ const char *type;
+ const char *socket;
int transport;
+ if (!json) {
+ virReportError(VIR_ERR_INVALID_ARG, "%s",
+ _("missing remote server specification in JSON "
+ "backing volume definition"));
+ return -1;
+ }
+
+ type = virJSONValueObjectGetString(json, "type");
+
if ((transport = virStorageNetHostTransportTypeFromString(type)) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("unknown backing store transport protocol
'%s'"), type);
@@ -2839,14 +2858,13 @@
virStorageSourceParseBackingJSONSocketAddress(virStorageNetHostDefPtr host,
return virStorageSourceParseBackingJSONInetSocketAddress(host, json);
case VIR_STORAGE_NET_HOST_TRANS_UNIX:
- if (!socket) {
+ if (!(socket = virJSONValueObjectGetString(json, "socket"))) {
virReportError(VIR_ERR_INVALID_ARG, "%s",
_("missing socket path for udp backing server in "
"JSON backing volume definition"));
return -1;
}
-
if (VIR_STRDUP(host->socket, socket) < 0)
return -1;
break;
--
2.12.2