Skip to content

Commit 0df66e4

Browse files
committed
bus-polkit: refactor a bit to avoid goto
1 parent 8f7195e commit 0df66e4

File tree

1 file changed

+20
-11
lines changed

1 file changed

+20
-11
lines changed

src/shared/bus-polkit.c

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -212,11 +212,11 @@ static int async_polkit_defer(sd_event_source *s, void *userdata) {
212212
return 0;
213213
}
214214

215-
static int async_polkit_callback(sd_bus_message *reply, void *userdata, sd_bus_error *error) {
216-
AsyncPolkitQuery *q = ASSERT_PTR(userdata);
215+
static int async_polkit_process_reply(sd_bus_message *reply, AsyncPolkitQuery *q) {
217216
int r;
218217

219218
assert(reply);
219+
assert(q);
220220

221221
assert(q->slot);
222222
q->slot = sd_bus_slot_unref(q->slot);
@@ -234,30 +234,39 @@ static int async_polkit_callback(sd_bus_message *reply, void *userdata, sd_bus_e
234234
assert(!q->defer_event_source);
235235
r = sd_event_add_defer(sd_bus_get_event(sd_bus_message_get_bus(reply)), &q->defer_event_source, async_polkit_defer, q);
236236
if (r < 0)
237-
goto fail;
237+
return r;
238238

239239
r = sd_event_source_set_priority(q->defer_event_source, SD_EVENT_PRIORITY_IDLE);
240240
if (r < 0)
241-
goto fail;
241+
return r;
242242

243243
r = sd_event_source_set_enabled(q->defer_event_source, SD_EVENT_ONESHOT);
244244
if (r < 0)
245-
goto fail;
245+
return r;
246246

247247
r = sd_bus_message_rewind(q->request, true);
248248
if (r < 0)
249-
goto fail;
249+
return r;
250250

251251
r = sd_bus_enqueue_for_read(sd_bus_message_get_bus(q->request), q->request);
252252
if (r < 0)
253-
goto fail;
253+
return r;
254254

255255
return 1;
256+
}
256257

257-
fail:
258-
log_debug_errno(r, "Processing asynchronous PolicyKit reply failed, ignoring: %m");
259-
(void) sd_bus_reply_method_errno(q->request, r, NULL);
260-
async_polkit_query_free(q);
258+
static int async_polkit_callback(sd_bus_message *reply, void *userdata, sd_bus_error *error) {
259+
AsyncPolkitQuery *q = ASSERT_PTR(userdata);
260+
int r;
261+
262+
assert(reply);
263+
264+
r = async_polkit_process_reply(reply, q);
265+
if (r < 0) {
266+
log_debug_errno(r, "Processing asynchronous PolicyKit reply failed, ignoring: %m");
267+
(void) sd_bus_reply_method_errno(q->request, r, NULL);
268+
async_polkit_query_free(q);
269+
}
261270
return r;
262271
}
263272

0 commit comments

Comments
 (0)