Changeset a35b458 in mainline for uspace/lib/c/generic/dnsr.c
- Timestamp:
- 2018-03-02T20:10:49Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- f1380b7
- Parents:
- 3061bc1
- git-author:
- Jiří Zárevúcky <zarevucky.jiri@…> (2018-02-28 17:38:31)
- git-committer:
- Jiří Zárevúcky <zarevucky.jiri@…> (2018-03-02 20:10:49)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/generic/dnsr.c
r3061bc1 ra35b458 45 45 { 46 46 fibril_mutex_lock(&dnsr_sess_mutex); 47 47 48 48 if (dnsr_sess == NULL) { 49 49 service_id_t dnsr_svc; 50 50 51 51 (void) loc_service_get_id(SERVICE_NAME_DNSR, &dnsr_svc, 52 52 IPC_FLAG_BLOCKING); 53 53 54 54 dnsr_sess = loc_service_connect(dnsr_svc, INTERFACE_DNSR, 55 55 IPC_FLAG_BLOCKING); 56 56 } 57 57 58 58 async_sess_t *sess = dnsr_sess; 59 59 fibril_mutex_unlock(&dnsr_sess_mutex); 60 60 61 61 return async_exchange_begin(sess); 62 62 } … … 70 70 { 71 71 async_exch_t *exch = dnsr_exchange_begin(); 72 72 73 73 ipc_call_t answer; 74 74 aid_t req = async_send_1(exch, DNSR_NAME2HOST, (sysarg_t) ver, 75 75 &answer); 76 76 77 77 errno_t rc = async_data_write_start(exch, name, str_size(name)); 78 78 if (rc != EOK) { … … 85 85 if (info == NULL) 86 86 return ENOMEM; 87 87 88 88 ipc_call_t answer_addr; 89 89 aid_t req_addr = async_data_read(exch, &info->addr, 90 90 sizeof(inet_addr_t), &answer_addr); 91 91 92 92 errno_t retval_addr; 93 93 async_wait_for(req_addr, &retval_addr); 94 94 95 95 if (retval_addr != EOK) { 96 96 async_exchange_end(exch); … … 99 99 return retval_addr; 100 100 } 101 101 102 102 ipc_call_t answer_cname; 103 103 char cname_buf[DNSR_NAME_MAX_SIZE + 1]; 104 104 aid_t req_cname = async_data_read(exch, cname_buf, DNSR_NAME_MAX_SIZE, 105 105 &answer_cname); 106 106 107 107 dnsr_exchange_end(exch); 108 108 109 109 errno_t retval_cname; 110 110 async_wait_for(req_cname, &retval_cname); 111 111 112 112 if (retval_cname != EOK) { 113 113 async_forget(req); … … 115 115 return retval_cname; 116 116 } 117 117 118 118 errno_t retval; 119 119 async_wait_for(req, &retval); 120 120 121 121 if (retval != EOK) { 122 122 async_forget(req); … … 124 124 return retval; 125 125 } 126 126 127 127 size_t act_size = IPC_GET_ARG2(answer_cname); 128 128 assert(act_size <= DNSR_NAME_MAX_SIZE); 129 129 130 130 cname_buf[act_size] = '\0'; 131 131 132 132 info->cname = str_dup(cname_buf); 133 133 134 134 if (info->cname == NULL) { 135 135 free(info); … … 145 145 if (info == NULL) 146 146 return; 147 147 148 148 free(info->cname); 149 149 free(info); … … 153 153 { 154 154 async_exch_t *exch = dnsr_exchange_begin(); 155 155 156 156 ipc_call_t answer; 157 157 aid_t req = async_send_0(exch, DNSR_GET_SRVADDR, &answer); 158 158 errno_t rc = async_data_read_start(exch, srvaddr, sizeof(inet_addr_t)); 159 159 160 160 loc_exchange_end(exch); 161 161 162 162 if (rc != EOK) { 163 163 async_forget(req); 164 164 return rc; 165 165 } 166 166 167 167 errno_t retval; 168 168 async_wait_for(req, &retval); 169 169 170 170 return retval; 171 171 } … … 174 174 { 175 175 async_exch_t *exch = dnsr_exchange_begin(); 176 176 177 177 ipc_call_t answer; 178 178 aid_t req = async_send_0(exch, DNSR_SET_SRVADDR, &answer); 179 179 errno_t rc = async_data_write_start(exch, srvaddr, sizeof(inet_addr_t)); 180 180 181 181 loc_exchange_end(exch); 182 182 183 183 if (rc != EOK) { 184 184 async_forget(req); 185 185 return rc; 186 186 } 187 187 188 188 errno_t retval; 189 189 async_wait_for(req, &retval); 190 190 191 191 return retval; 192 192 }
Note:
See TracChangeset
for help on using the changeset viewer.