From 984070b03417b64dce968b8c9074a3cf187b3fa7 Mon Sep 17 00:00:00 2001 From: Stephen Gallagher Date: Sun, 8 Mar 2009 18:06:42 -0400 Subject: Improve error handling and replies in the InfoPipe When detecting an internal error in the InfoPipe, make a best- attempt at sending an error message back to the calling program, instead of simply leaving the client to wait for the timeout. --- server/infopipe/infopipe.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'server/infopipe/infopipe.c') diff --git a/server/infopipe/infopipe.c b/server/infopipe/infopipe.c index 4ec971ca..8d4bfeef 100644 --- a/server/infopipe/infopipe.c +++ b/server/infopipe/infopipe.c @@ -144,11 +144,15 @@ static int infp_monitor_init(struct infp_ctx *infp_ctx) /* Helper function to return an immediate error message in the event * of internal error in the InfoPipe to avoid forcing the clients to * time out waiting for a reply. + * This function will make a best effort to send a reply, but if it + * fails, clients will simply have to handle the timeout. */ void infp_return_failure(struct infp_req_ctx *infp_req, const char *message) { DBusMessage *reply; + if(infp_req == NULL) return; + reply = dbus_message_new_error(infp_req->req_message, DBUS_ERROR_FAILED, message); @@ -172,6 +176,8 @@ void infp_return_success(struct infp_req_ctx *infp_req) { DBusMessage *reply; + if (infp_req == NULL) return; + reply = dbus_message_new_method_return(infp_req->req_message); /* If the reply was NULL, we ran out of memory, so we won't * bother trying to queue the message to send. In this case, -- cgit