OLD | NEW |
1 // Copyright 2014 The Crashpad Authors. All rights reserved. | 1 // Copyright 2014 The Crashpad Authors. All rights reserved. |
2 // | 2 // |
3 // Licensed under the Apache License, Version 2.0 (the "License"); | 3 // Licensed under the Apache License, Version 2.0 (the "License"); |
4 // you may not use this file except in compliance with the License. | 4 // you may not use this file except in compliance with the License. |
5 // You may obtain a copy of the License at | 5 // You may obtain a copy of the License at |
6 // | 6 // |
7 // http://www.apache.org/licenses/LICENSE-2.0 | 7 // http://www.apache.org/licenses/LICENSE-2.0 |
8 // | 8 // |
9 // Unless required by applicable law or agreed to in writing, software | 9 // Unless required by applicable law or agreed to in writing, software |
10 // distributed under the License is distributed on an "AS IS" BASIS, | 10 // distributed under the License is distributed on an "AS IS" BASIS, |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
65 : MachMessageServer::Interface(), | 65 : MachMessageServer::Interface(), |
66 interface_(interface) { | 66 interface_(interface) { |
67 } | 67 } |
68 | 68 |
69 bool ChildPortServer::MachMessageServerFunction( | 69 bool ChildPortServer::MachMessageServerFunction( |
70 const mach_msg_header_t* in_header, | 70 const mach_msg_header_t* in_header, |
71 mach_msg_header_t* out_header, | 71 mach_msg_header_t* out_header, |
72 bool* destroy_complex_request) { | 72 bool* destroy_complex_request) { |
73 PrepareMIGReplyFromRequest(in_header, out_header); | 73 PrepareMIGReplyFromRequest(in_header, out_header); |
74 | 74 |
| 75 const mach_msg_trailer_t* in_trailer = |
| 76 MachMessageTrailerFromHeader(in_header); |
| 77 |
75 switch (in_header->msgh_id) { | 78 switch (in_header->msgh_id) { |
76 case kMachMessageIDChildPortCheckIn: { | 79 case kMachMessageIDChildPortCheckIn: { |
77 // child_port_check_in(), handle_child_port_check_in(). | 80 // child_port_check_in(), handle_child_port_check_in(). |
78 using Request = __Request__child_port_check_in_t; | 81 using Request = __Request__child_port_check_in_t; |
79 const Request* in_request = reinterpret_cast<const Request*>(in_header); | 82 const Request* in_request = reinterpret_cast<const Request*>(in_header); |
80 kern_return_t kr = MIGCheckRequestChildPortCheckIn(in_request); | 83 kern_return_t kr = MIGCheckRequestChildPortCheckIn(in_request); |
81 if (kr != MACH_MSG_SUCCESS) { | 84 if (kr != MACH_MSG_SUCCESS) { |
82 SetMIGReplyError(out_header, kr); | 85 SetMIGReplyError(out_header, kr); |
83 return true; | 86 return true; |
84 } | 87 } |
85 | 88 |
86 using Reply = __Reply__child_port_check_in_t; | 89 using Reply = __Reply__child_port_check_in_t; |
87 Reply* out_reply = reinterpret_cast<Reply*>(out_header); | 90 Reply* out_reply = reinterpret_cast<Reply*>(out_header); |
88 out_reply->RetCode = | 91 out_reply->RetCode = |
89 interface_->HandleChildPortCheckIn(in_header->msgh_local_port, | 92 interface_->HandleChildPortCheckIn(in_header->msgh_local_port, |
90 in_request->token, | 93 in_request->token, |
91 in_request->port.name, | 94 in_request->port.name, |
92 in_request->port.disposition, | 95 in_request->port.disposition, |
| 96 in_trailer, |
93 destroy_complex_request); | 97 destroy_complex_request); |
94 return true; | 98 return true; |
95 } | 99 } |
96 } | 100 } |
97 | 101 |
98 SetMIGReplyError(out_header, MIG_BAD_ID); | 102 SetMIGReplyError(out_header, MIG_BAD_ID); |
99 return false; | 103 return false; |
100 } | 104 } |
101 | 105 |
102 mach_msg_size_t ChildPortServer::MachMessageServerRequestSize() { | 106 mach_msg_size_t ChildPortServer::MachMessageServerRequestSize() { |
103 return sizeof(__RequestUnion__handle_child_port_subsystem); | 107 return sizeof(__RequestUnion__handle_child_port_subsystem); |
104 } | 108 } |
105 | 109 |
106 mach_msg_size_t ChildPortServer::MachMessageServerReplySize() { | 110 mach_msg_size_t ChildPortServer::MachMessageServerReplySize() { |
107 return sizeof(__ReplyUnion__handle_child_port_subsystem); | 111 return sizeof(__ReplyUnion__handle_child_port_subsystem); |
108 } | 112 } |
109 | 113 |
110 } // namespace crashpad | 114 } // namespace crashpad |
OLD | NEW |