[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 2/4] qga: fix send_response error handling
From: |
Basil Salman |
Subject: |
[Qemu-devel] [PATCH v2 2/4] qga: fix send_response error handling |
Date: |
Sun, 13 Jan 2019 12:05:29 +0200 |
Sometimes qemu-ga fails to send a response to client due to memory allocation
issues due to a large response message, this can be experienced while trying
to read large number of bytes using QMP command guest-file-read.
Added a check to send an error response to qemu-ga client in such cases.
Signed-off-by: Basil Salman <address@hidden>
---
qga/main.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/qga/main.c b/qga/main.c
index 87a0711c14..964275c40c 100644
--- a/qga/main.c
+++ b/qga/main.c
@@ -561,6 +561,8 @@ static void process_command(GAState *s, QDict *req)
{
QDict *rsp;
int ret;
+ QDict *ersp;
+ Error *err = NULL;
g_assert(req);
g_debug("processing command");
@@ -569,9 +571,20 @@ static void process_command(GAState *s, QDict *req)
ret = send_response(s, rsp);
if (ret < 0) {
g_warning("error sending response: %s", strerror(-ret));
+ goto err;
}
qobject_unref(rsp);
}
+ return;
+err:
+ error_setg(&err, "Insufficient system resources exist to "
+ "complete the requested service");
+ ersp = qmp_error_response(err);
+ ret = send_response(s, ersp);
+ if (ret < 0) {
+ g_warning("error sending error response: %s", strerror(-ret));
+ }
+ qobject_unref(ersp);
}
/* handle requests/control events coming in over the channel */
--
2.17.2