summaryrefslogtreecommitdiff
path: root/libports/manage-one-thread.c
diff options
context:
space:
mode:
authorMichael I. Bushnell <mib@gnu.org>1995-10-24 17:32:30 +0000
committerMichael I. Bushnell <mib@gnu.org>1995-10-24 17:32:30 +0000
commitc95514dfc454161d9a0590c2a9c6a735c56bacc0 (patch)
tree415d577d0f6514779cccb6b44b418dfaba197550 /libports/manage-one-thread.c
parent664c464f9aa60c93a0bc7942579fbf6255c38c71 (diff)
(ports_manage_port_operations_one_thread/internal_demuxer): Don't
attempt RPC if we can't get a valid port struct.
Diffstat (limited to 'libports/manage-one-thread.c')
-rw-r--r--libports/manage-one-thread.c24
1 files changed, 14 insertions, 10 deletions
diff --git a/libports/manage-one-thread.c b/libports/manage-one-thread.c
index 41cf4b70..0fd4f67a 100644
--- a/libports/manage-one-thread.c
+++ b/libports/manage-one-thread.c
@@ -37,19 +37,23 @@ ports_manage_port_operations_one_thread (struct port_bucket *bucket,
error_t err;
pi = ports_lookup_port (bucket, inp->msgh_local_port, 0);
- err = ports_begin_rpc (pi, &link);
- if (err)
+ if (pi)
{
- mach_port_deallocate (mach_task_self (), inp->msgh_remote_port);
- status = 0;
+ err = ports_begin_rpc (pi, &link);
+ if (err)
+ {
+ mach_port_deallocate (mach_task_self (), inp->msgh_remote_port);
+ status = 0;
+ }
+ else
+ {
+ status = demuxer (inp, outp);
+ ports_end_rpc (pi, &link);
+ }
+ ports_port_deref (pi);
}
else
- {
- status = demuxer (inp, outp);
- ports_end_rpc (pi, &link);
- }
-
- ports_port_deref (pi);
+ status = 0;
return status;
}