1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
From 5f7601f47a3fd8957a52c03f1135534fc2232539 Mon Sep 17 00:00:00 2001
From: Justus Winter <4winter@informatik.uni-hamburg.de>
Date: Fri, 6 Nov 2015 12:00:31 +0100
Subject: [PATCH hurd 3/4] random: improve error handling
* random/random.c (arrange_shutdown_notification): Improve error
handling.
(main): Display warning if arranging the shutdown notification failed.
---
random/random.c | 22 +++++++++++++---------
1 file changed, 13 insertions(+), 9 deletions(-)
diff --git a/random/random.c b/random/random.c
index 9ade161..f483a5d 100644
--- a/random/random.c
+++ b/random/random.c
@@ -552,7 +552,7 @@ sigterm_handler (int signo)
raise (SIGTERM);
}
-void
+static error_t
arrange_shutdown_notification ()
{
error_t err;
@@ -570,24 +570,26 @@ arrange_shutdown_notification ()
err = ports_create_port (shutdown_notify_class, fsys->pi.bucket,
sizeof (struct port_info), &pi);
if (err)
- return;
+ return err;
procserver = getproc ();
- if (!procserver)
- return;
+ if (! MACH_PORT_VALID (procserver))
+ return EMIG_SERVER_DIED;
err = proc_getmsgport (procserver, 1, &initport);
mach_port_deallocate (mach_task_self (), procserver);
if (err)
- return;
+ return err;
notify = ports_get_send_right (pi);
ports_port_deref (pi);
- startup_request_notification (initport, notify,
- MACH_MSG_TYPE_MAKE_SEND,
- program_invocation_short_name);
+ err = startup_request_notification (initport, notify,
+ MACH_MSG_TYPE_MAKE_SEND,
+ program_invocation_short_name);
+
mach_port_deallocate (mach_task_self (), notify);
mach_port_deallocate (mach_task_self (), initport);
+ return err;
}
@@ -621,7 +623,9 @@ main (int argc, char **argv)
if (err)
error (3, err, "trivfs_startup");
- arrange_shutdown_notification ();
+ err = arrange_shutdown_notification ();
+ if (err)
+ error (0, err, "Cannot request shutdown notification");
/* Launch. */
ports_manage_port_operations_multithread (fsys->pi.bucket, random_demuxer,
--
2.1.4
|