Changeset 102f641 in mainline for uspace/srv/sysman/connection_ctl.c
- Timestamp:
- 2019-09-02T19:01:50Z (6 years ago)
- Children:
- 25697163
- Parents:
- 241f1985
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/sysman/connection_ctl.c
r241f1985 r102f641 41 41 #include "sysman.h" 42 42 43 44 43 // TODO possibly provide as type-safe function + macro in sysman.h for generic boxing 45 44 static ipc_call_t *box_callid(ipc_call_t *icall) … … 215 214 size_t act_size; 216 215 int rc; 217 216 218 217 if (!async_data_read_receive(&call, &size)) { 219 218 async_answer_0(&call, EREFUSED); … … 221 220 return; 222 221 } 223 224 222 225 223 unit_handle_t *handles = malloc(size); 226 224 if (handles == NULL && size > 0) { … … 229 227 return; 230 228 } 231 232 229 233 230 rc = fill_handles_buffer(handles, size, &act_size); 234 231 if (rc != EOK) { … … 237 234 return; 238 235 } 239 236 240 237 size_t real_size = min(act_size, size); 241 238 sysarg_t retval = async_data_read_finalize(&call, handles, real_size); 242 239 free(handles); 243 240 244 241 async_answer_1(icall, retval, act_size); 245 242 } … … 249 246 ipc_call_t call; 250 247 size_t size; 251 248 252 249 if (!async_data_read_receive(&call, &size)) { 253 250 async_answer_0(&call, EREFUSED); … … 255 252 return; 256 253 } 257 254 258 255 unit_t *u = repo_find_unit_by_handle(ipc_get_arg1(icall)); 259 256 if (u == NULL) { … … 262 259 return; 263 260 } 264 261 265 262 size_t real_size = min(str_size(u->name) + 1, size); 266 263 sysarg_t retval = async_data_read_finalize(&call, u->name, real_size); 267 264 268 265 async_answer_0(icall, retval); 269 266 } … … 303 300 while (true) { 304 301 ipc_call_t call; 305 302 306 303 if (!async_get_call(&call) || !ipc_get_imethod(&call)) { 307 304 /* Client disconnected */ … … 339 336 } 340 337 } 341
Note:
See TracChangeset
for help on using the changeset viewer.