Changeset 5146:716400712348 in roaraudio
- Timestamp:
- 10/15/11 12:48:07 (13 years ago)
- Branch:
- default
- Phase:
- public
- Files:
-
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
ChangeLog
r5145 r5146 9 9 message to client converter code (pr0) 10 10 * Updated error handling (pr0) 11 * Moved error frame handling into proto functions (pr0) 11 12 12 13 v. 0.4rc0 - Mon Sep 05 2011 15:25 CEST -
doc/man1/roard.1
r4860 r5146 140 140 .TP 141 141 \fB--guest-acclev\fR 142 Sets the access level for guest connections. 142 Sets the access level for guest connections. Set to "none" to disable guest access. 143 143 144 144 .TP 145 145 \fB--trust-acclev\fR 146 146 Sets the access level for clients authenticated by trust auth. 147 Set to "none" to disable trust auth. 147 148 148 149 .TP -
include/libroar/basic.h
r5114 r5146 103 103 int roar_recv_message (struct roar_connection * con, struct roar_message * mes, char ** data); 104 104 int roar_req (struct roar_connection * con, struct roar_message * mes, char ** data); 105 int roar_recv_message2 (struct roar_connection * con, struct roar_message * mes, char ** data, 106 struct roar_error_frame * errorframe); 107 int roar_req2 (struct roar_connection * con, struct roar_message * mes, char ** data, 108 struct roar_error_frame * errorframe); 109 #define roar_req3(con,mes,data) roar_req2((con), (mes), (data), roar_err_errorframe()) 105 110 106 111 int roar_vsend_message(struct roar_vio_calls * vio, struct roar_message * mes, char * data); 107 112 int roar_vrecv_message(struct roar_vio_calls * vio, struct roar_message * mes, char ** data); 108 113 int roar_vreq (struct roar_vio_calls * vio, struct roar_message * mes, char ** data); 114 int roar_vrecv_message2(struct roar_vio_calls * vio, struct roar_message * mes, char ** data, 115 struct roar_error_frame * errorframe); 116 int roar_vreq2 (struct roar_vio_calls * vio, struct roar_message * mes, char ** data, 117 struct roar_error_frame * errorframe); 109 118 110 119 int roar_debug_message_print (struct roar_message * mes) _LIBROAR_ATTR_DEPRECATED; -
include/libroar/error.h
r5109 r5146 67 67 }; 68 68 69 struct roar_error_frame * roar_err_errorframe(void); 70 69 71 int roar_err_int(struct roar_error_frame * frame); 72 int roar_err_init(struct roar_error_frame * frame); 73 void * roar_err_buildmsg2(struct roar_message * mes, void ** data, struct roar_error_frame * frame); 74 int roar_err_parsemsg2(struct roar_message * mes, void * data, struct roar_error_frame * frame); 70 75 void * roar_err_buildmsg(struct roar_message * mes, struct roar_error_frame * frame); 71 76 int roar_err_parsemsg(struct roar_message * mes, struct roar_error_frame * frame); -
libroar/asyncctl.c
r4708 r5146 76 76 m.datalen = len_have; 77 77 78 if ( roar_req (con, &m, NULL) != 0 )78 if ( roar_req3(con, &m, NULL) != 0 ) 79 79 return -1; 80 80 -
libroar/auth.c
r5144 r5146 135 135 char * data = NULL; 136 136 137 ROAR_DBG("roar_auth_ask_server(con=%p, authmes=%p{.type=%i}) = ?", con, authmes, authmes->type); 138 139 roar_err_init(&error_frame); 137 140 memset(&mes, 0, sizeof(struct roar_message)); // make valgrind happy! 138 141 … … 162 165 } 163 166 164 if ( (ret = roar_req(con, &mes, &data)) == -1 ) { 167 ROAR_DBG("roar_auth_ask_server(con=%p, authmes=%p{.type=%i}) = ?", con, authmes, authmes->type); 168 169 if ( (ret = roar_req2(con, &mes, &data, &error_frame)) == -1 ) { 165 170 authmes->type = -1; 166 return -1; 167 } 171 ROAR_DBG("roar_auth_ask_server(con=%p, authmes=%p) = -1 // next: -1", con, authmes, authmes->type); 172 return -1; 173 } 174 175 ROAR_DBG("roar_auth_ask_server(con=%p, authmes=%p{.type=%i}): mes->cmd=%i", con, authmes, authmes->type, mes.cmd); 168 176 169 177 if ( data != NULL ) { … … 173 181 } 174 182 175 if ( mes.cmd != ROAR_CMD_OK ) { 176 if ( data != NULL ) { 177 // we currently do not support long error frames. 178 free(data); 179 return -1; 180 } 181 183 if ( mes.cmd == ROAR_CMD_ERROR ) 182 184 ret = -1; 183 if ( roar_err_parsemsg(&mes, &error_frame) == -1 ) { 184 authmes->type = -1;185 return -1;186 } 187 185 186 ROAR_DBG("roar_auth_ask_server(con=%p, authmes=%p{.type=%i}): error_frame.data=%p", 187 con, authmes, authmes->type, error_frame.data); 188 189 if ( mes.cmd == ROAR_CMD_ERROR && error_frame.data != NULL ) { 188 190 header = error_frame.data; 189 191 mes.datalen = error_frame.datalen; 190 192 } 193 194 ROAR_DBG("roar_auth_ask_server(con=%p, authmes=%p{.type=%i}) = ?", con, authmes, authmes->type); 191 195 192 196 if ( mes.datalen < 4 ) { … … 197 201 } 198 202 203 ROAR_DBG("roar_auth_ask_server(con=%p, authmes=%p) = ?", con, authmes); 204 199 205 authmes->stage = header[1]; 200 206 authmes->reserved.c[0] = header[2]; … … 204 210 free(data); 205 211 212 ROAR_DBG("roar_auth_ask_server(con=%p, authmes=%p) = %i // next: %i", con, authmes, ret, authmes->type); 206 213 return ret; 207 214 } … … 307 314 for (i = 0; ltt[i] != _EOL; i++) { 308 315 next = ltt[i]; 316 ROAR_DBG("roar_auth(con=%p): next from ltt: %s(%i)", con, roar_autht2str(next), next); 317 309 318 while (next != -1) { 310 319 done = 1; … … 312 321 cur = next; 313 322 next = -1; 323 324 ROAR_DBG("roar_auth(con=%p): cur=%s(%i)", con, roar_autht2str(cur), cur); 314 325 315 326 switch (cur) { … … 322 333 case ROAR_AUTH_T_RHOST: 323 334 case ROAR_AUTH_T_NONE: 324 roar_auth_mes_init(&authmes, ltt[i]);335 roar_auth_mes_init(&authmes, cur); 325 336 if ( (ret = roar_auth_ask_server(con, &authmes)) == -1 ) 326 337 done = 0; … … 341 352 done = 0; 342 353 343 if ( done ) 354 ROAR_DBG("roar_auth(con=%p): done=%i, next=%i", con, done, next); 355 356 if ( done ) { 357 ROAR_DBG("roar_auth(con=%p) = 0", con); 344 358 return 0; 359 } 345 360 } 346 361 } 347 362 363 ROAR_DBG("roar_auth(con=%p) = -1", con); 348 364 return -1; 349 365 } … … 354 370 char header[4] = {0, 0, 0, 0}; 355 371 356 if ( ames == NULL || mes == NULL ) 357 return -1; 372 if ( ames == NULL || mes == NULL ) { 373 roar_err_set(ROAR_ERROR_FAULT); 374 return -1; 375 } 358 376 359 377 if ( data != NULL ) { … … 386 404 char * obuf; 387 405 388 if ( mes == NULL || ames == NULL ) 389 return -1; 406 if ( mes == NULL || ames == NULL ) { 407 roar_err_set(ROAR_ERROR_FAULT); 408 return -1; 409 } 390 410 391 411 if ( data != NULL ) -
libroar/basic.c
r5144 r5146 389 389 mes.stream = -1; 390 390 391 return roar_req (con, &mes, NULL);391 return roar_req3(con, &mes, NULL); 392 392 } 393 393 … … 432 432 strncpy(mes.data+5, name, max_len); 433 433 434 return roar_req (con, &mes, NULL);434 return roar_req3(con, &mes, NULL); 435 435 } 436 436 -
libroar/beep.c
r5145 r5146 63 63 } 64 64 65 if ( roar_req (con, &m, NULL) != 0 )65 if ( roar_req3(con, &m, NULL) != 0 ) 66 66 return -1; 67 67 -
libroar/error.c
r5097 r5146 45 45 int roar_errno = ROAR_ERROR_NONE; 46 46 47 struct roar_error_frame * roar_err_errorframe(void) { 48 static struct roar_error_frame frame = { 49 .version = 0, 50 .cmd = -1, 51 .ra_errno = ROAR_ERROR_UNKNOWN, 52 .ra_suberrno = -1, 53 .p_errno = -1, 54 .flags = 0, 55 .datalen = 0, 56 .data = NULL 57 }; 58 59 return &frame; 60 } 61 47 62 int roar_err_int(struct roar_error_frame * frame) { 48 if ( frame == NULL ) 63 roar_debug_warn_obsolete("roar_err_int", "roar_err_init", NULL); 64 return roar_err_init(frame); 65 } 66 int roar_err_init(struct roar_error_frame * frame) { 67 if ( frame == NULL ) { 68 roar_err_set(ROAR_ERROR_FAULT); 49 69 return -1; 70 } 50 71 51 72 memset(frame, 0, sizeof(struct roar_error_frame)); 52 73 53 74 frame->cmd = -1; 54 frame->ra_errno = -1;75 frame->ra_errno = ROAR_ERROR_UNKNOWN; 55 76 frame->ra_suberrno = -1; 56 77 frame->p_errno = -1; 78 frame->datalen = 0; 79 frame->data = NULL; 57 80 58 81 return 0; 59 82 } 60 83 84 61 85 void * roar_err_buildmsg(struct roar_message * mes, struct roar_error_frame * frame) { 86 roar_debug_warn_obsolete("roar_err_buildmsg", "roar_err_buildmsg2", NULL); 87 return roar_err_buildmsg2(mes, NULL, frame); 88 } 89 void * roar_err_buildmsg2(struct roar_message * mes, void ** data, struct roar_error_frame * frame) { 90 char * databuf = NULL; 62 91 int16_t * d; 63 64 if ( mes == NULL || frame == NULL ) 92 size_t datalen; 93 94 if ( mes == NULL || frame == NULL ) { 95 roar_err_set(ROAR_ERROR_FAULT); 65 96 return NULL; 97 } 98 99 if ( data != NULL ) 100 *data = NULL; 101 102 datalen = 8 + frame->datalen; 103 if ( datalen > LIBROAR_BUFFER_MSGDATA ) { 104 if ( data == NULL ) { 105 roar_err_set(ROAR_ERROR_FAULT); 106 return NULL; 107 } 108 109 roar_err_clear_errno(); 110 *data = malloc(datalen); 111 roar_err_from_errno(); 112 if ( *data == NULL ) 113 return NULL; 114 115 databuf = *data; 116 } else { 117 databuf = mes->data; 118 } 66 119 67 120 memset(mes, 0, sizeof(struct roar_message)); 68 69 d = (int16_t*)mes->data; 70 71 mes->datalen = 8 + frame->datalen; 72 frame->data = &(mes->data[8]); 73 74 mes->data[0] = 0; // version. 75 mes->data[1] = frame->cmd; 76 mes->data[2] = frame->ra_errno; 77 mes->data[3] = frame->ra_suberrno; 121 memset(databuf, 0, mes->datalen); 122 123 mes->datalen = datalen; 124 125 d = (int16_t*)databuf; 126 127 frame->data = &(databuf[8]); 128 129 databuf[0] = 0; // version. 130 databuf[1] = frame->cmd; 131 databuf[2] = frame->ra_errno; 132 databuf[3] = frame->ra_suberrno; 78 133 d[2] = ROAR_HOST2NET16(frame->p_errno); 79 134 d[3] = ROAR_HOST2NET16(frame->flags); … … 83 138 84 139 int roar_err_parsemsg(struct roar_message * mes, struct roar_error_frame * frame) { 140 roar_debug_warn_obsolete("roar_err_parsemsg", "roar_err_parsemsg", NULL); 141 return roar_err_parsemsg2(mes, NULL, frame); 142 } 143 int roar_err_parsemsg2(struct roar_message * mes, void * data, struct roar_error_frame * frame) { 144 char * databuf = (char *)data; 85 145 int16_t * d; 86 146 87 if ( mes == NULL || frame == NULL ) 147 ROAR_DBG("roar_err_parsemsg2(mes=%p{.datalen=%i, .data=%p}, data=%p, frame=%p) = ?", 148 mes, (int)mes->datalen, mes->data, data, frame); 149 150 if ( mes == NULL || frame == NULL ) { 151 roar_err_set(ROAR_ERROR_FAULT); 152 ROAR_DBG("roar_err_parsemsg2(mes=%p{.datalen=%i, .data=%p}, data=%p, frame=%p) = -1 // error=FAULT", 153 mes, (int)mes->datalen, mes->data, data, frame); 88 154 return -1; 89 90 d = (int16_t*)mes->data; 91 92 if ( mes->datalen < 8 ) 155 } 156 157 ROAR_DBG("roar_err_parsemsg2(mes=%p{.datalen=%i, .data=%p}, data=%p, frame=%p) = ?", 158 mes, (int)mes->datalen, mes->data, data, frame); 159 160 if ( databuf == NULL ) 161 databuf = mes->data; 162 163 d = (int16_t*)databuf; 164 165 ROAR_DBG("roar_err_parsemsg2(mes=%p{.datalen=%i, .data=%p}, data=%p, frame=%p) = ?", 166 mes, (int)mes->datalen, mes->data, data, frame); 167 168 if ( mes->datalen < 8 ) { 169 roar_err_set(ROAR_ERROR_MSGSIZE); 170 ROAR_DBG("roar_err_parsemsg2(mes=%p{.datalen=%i, .data=%p}, data=%p, frame=%p) = -1 // error=MSGSIZE", 171 mes, (int)mes->datalen, mes->data, data, frame); 93 172 return -1; 94 95 if ( mes->data[0] != 0 ) 173 } 174 175 ROAR_DBG("roar_err_parsemsg2(mes=%p{.datalen=%i, .data=%p}, data=%p, frame=%p) = ?", 176 mes, (int)mes->datalen, mes->data, data, frame); 177 178 if ( databuf[0] != 0 ) { 179 roar_err_set(ROAR_ERROR_NSVERSION); 180 ROAR_DBG("roar_err_parsemsg2(mes=%p{.datalen=%i, .data=%p}, data=%p, frame=%p) = -1 // error=NSVERSION", 181 mes, (int)mes->datalen, mes->data, data, frame); 96 182 return -1; 97 98 frame->cmd = mes->data[1]; 99 frame->ra_errno = mes->data[2]; 100 frame->ra_suberrno = mes->data[3]; 183 } 184 185 ROAR_DBG("roar_err_parsemsg2(mes=%p{.datalen=%i, .data=%p}, data=%p, frame=%p) = ?", 186 mes, (int)mes->datalen, mes->data, data, frame); 187 188 frame->cmd = databuf[1]; 189 frame->ra_errno = databuf[2]; 190 frame->ra_suberrno = databuf[3]; 101 191 frame->p_errno = ROAR_NET2HOST16(d[2]); 102 192 frame->flags = ROAR_NET2HOST16(d[3]); 103 193 104 194 frame->datalen = mes->datalen - 8; 105 frame->data = &(mes->data[8]); 106 195 frame->data = &(databuf[8]); 196 197 ROAR_DBG("roar_err_parsemsg2(mes=%p{.datalen=%i, .data=%p}, data=%p, frame=%p) = 0", 198 mes, (int)mes->datalen, mes->data, data, frame); 107 199 return 0; 108 200 } … … 128 220 int * err = roar_errno2(); 129 221 130 // NOTE: _NEVER_ call ROAR_{DBG,INFO,WARN,ERRO }() in here! (will result in endless loop)222 // NOTE: _NEVER_ call ROAR_{DBG,INFO,WARN,ERROR}() in here! (will result in endless loop) 131 223 //printf("*err=%i, errno=%i\n", *err, (int)errno); 132 224 -
libroar/proto.c
r5030 r5146 134 134 135 135 int roar_recv_message (struct roar_connection * con, struct roar_message * mes, char ** data) { 136 return roar_recv_message2(con, mes, data, NULL); 137 } 138 int roar_recv_message2 (struct roar_connection * con, struct roar_message * mes, char ** data, 139 struct roar_error_frame * errorframe) { 136 140 struct roar_vio_calls * vio; 137 141 … … 139 143 return -1; 140 144 141 return roar_vrecv_message (vio, mes, data);145 return roar_vrecv_message2(vio, mes, data, errorframe); 142 146 } 143 147 144 148 int roar_vrecv_message(struct roar_vio_calls * vio, struct roar_message * mes, char ** data) { 149 return roar_vrecv_message2(vio, mes, data, NULL); 150 } 151 152 int roar_vrecv_message2(struct roar_vio_calls * vio, struct roar_message * mes, char ** data, 153 struct roar_error_frame * errorframe) { 145 154 // TODO: add CRC support. 146 155 char buf[_ROAR_MESS_BUF_LEN_MAX]; … … 153 162 roar_err_set(ROAR_ERROR_UNKNOWN); 154 163 155 ROAR_DBG("roar_recv_message(*): try to get a response form the server..."); 156 157 if ( mes == NULL ) 158 return -1; 164 ROAR_DBG("roar_vrecv_message2(vio=%p, mes=%p, data=%p, errorframe=%p) = ?", vio, mes, data, errorframe); 165 166 ROAR_DBG("roar_vrecv_message2(*): try to get a response form the server..."); 167 168 if ( vio == NULL || mes == NULL ) { 169 roar_err_set(ROAR_ERROR_FAULT); 170 return -1; 171 } 159 172 160 173 if ( data != NULL ) … … 168 181 } 169 182 170 ROAR_DBG("roar_ recv_message(*): Got a header");183 ROAR_DBG("roar_vrecv_message2(*): Got a header"); 171 184 172 185 mes->version = buf[0]; … … 224 237 mes->stream = -1; 225 238 226 ROAR_DBG("roar_ recv_message(*): command=%i(%s)", mes->cmd,239 ROAR_DBG("roar_vrecv_message2(*): command=%i(%s)", mes->cmd, 227 240 mes->cmd == ROAR_CMD_OK ? "OK" : (mes->cmd == ROAR_CMD_ERROR ? "ERROR" : "UNKNOWN")); 228 241 … … 230 243 231 244 if ( mes->datalen == 0 ) { 232 ROAR_DBG("roar_recv_message(*): no data in this pkg"); 233 ROAR_DBG("roar_recv_message(*) = 0"); 245 ROAR_DBG("roar_vrecv_message2(*): no data in this pkg"); 246 if ( mes->cmd == ROAR_CMD_ERROR && errorframe != NULL ) { 247 roar_err_init(errorframe); 248 } 234 249 roar_err_clear(); 250 ROAR_DBG("roar_vrecv_message2(*) = 0"); 235 251 return 0; 236 252 } … … 238 254 if ( mes->datalen <= LIBROAR_BUFFER_MSGDATA ) { 239 255 if ( roar_vio_read(vio, mes->data, mes->datalen) == mes->datalen ) { 240 ROAR_DBG("roar_recv_message(*): Got data!"); 241 ROAR_DBG("roar_recv_message(*) = 0"); 256 ROAR_DBG("roar_vrecv_message2(*): Got data!"); 242 257 roar_err_clear(); 258 if ( mes->cmd == ROAR_CMD_ERROR && errorframe != NULL ) { 259 if ( roar_err_parsemsg2(mes, *data, errorframe) != 0 ) { 260 roar_err_init(errorframe); 261 } 262 } 263 ROAR_DBG("roar_vrecv_message2(*) = 0"); 243 264 return 0; 244 265 } … … 258 279 if ( mes->datalen == 0 ) { 259 280 roar_err_clear(); 281 if ( mes->cmd == ROAR_CMD_ERROR && errorframe != NULL ) { 282 roar_err_init(errorframe); 283 } 260 284 return 0; 261 285 } 262 286 263 287 if ( roar_vio_read(vio, *data, mes->datalen) == mes->datalen ) { 264 ROAR_DBG("roar_ recv_message(*): Got data!");265 ROAR_DBG("roar_recv_message(*) = 0"); 288 ROAR_DBG("roar_vrecv_message2(*): Got data!"); 289 266 290 roar_err_clear(); 291 if ( mes->cmd == ROAR_CMD_ERROR && errorframe != NULL ) { 292 if ( roar_err_parsemsg2(mes, *data, errorframe) != 0 ) { 293 roar_err_init(errorframe); 294 } 295 } 296 ROAR_DBG("roar_vrecv_message2(*) = 0"); 267 297 return 0; 268 298 } … … 277 307 278 308 int roar_req (struct roar_connection * con, struct roar_message * mes, char ** data) { 309 return roar_req2(con, mes, data, NULL); 310 } 311 312 int roar_req2 (struct roar_connection * con, struct roar_message * mes, char ** data, 313 struct roar_error_frame * errorframe) { 279 314 struct roar_vio_calls * vio; 280 315 … … 282 317 return -1; 283 318 284 return roar_vreq (vio, mes, data);319 return roar_vreq2(vio, mes, data, errorframe); 285 320 } 286 321 287 322 int roar_vreq (struct roar_vio_calls * vio, struct roar_message * mes, char ** data) { 323 return roar_vreq2(vio, mes, data, NULL); 324 } 325 326 int roar_vreq2 (struct roar_vio_calls * vio, struct roar_message * mes, char ** data, 327 struct roar_error_frame * errorframe) { 288 328 if ( roar_vsend_message(vio, mes, data != NULL ? *data : NULL) != 0 ) 289 329 return -1; … … 294 334 roar_vio_sync(vio); // we need to do this becasue of ssl/compressed links 295 335 296 return roar_vrecv_message (vio, mes, data);336 return roar_vrecv_message2(vio, mes, data, errorframe); 297 337 } 298 338 -
roard/auth.c
r4745 r5146 127 127 for (i = 0; i < AUTH_KEYRING_LEN; i++) { 128 128 if ( (key = &(g_auth_keyring[i]))->type == authmes->type ) { 129 ret = -1; 129 ROAR_DBG("auth_client_ckeck(cs=%p, authmes=%p, next=%p{%i}): key=%p{.type=%i, ...}", cs, authmes, next, *next, key, key->type); 130 ret = -1; 130 131 switch (key->type) { 131 132 case ROAR_AUTH_T_NONE: -
roard/clients.c
r4947 r5146 1028 1028 return _g_acclevs[i].acclev; 1029 1029 1030 return -1;1030 return ACCLEV_ERROR; 1031 1031 } 1032 1032 -
roard/include/client.h
r4708 r5146 49 49 // access level: 50 50 enum roard_client_acclev { 51 ACCLEV_NONE = 0, // only very basic commands like NOOP and IDENTIFY 52 ACCLEV_IDENTED, // same as NONE but INDENTIFY worked. 53 ACCLEV_CONCTL, // only allowed to do basic connection things. 54 ACCLEV_GUEST, // guest connection (read only) 55 ACCLEV_USER, // normal user connect (read write) 56 ACCLEV_PWRUSER, // power user, may access other user's clients 57 ACCLEV_ALL // full (admin) access (read write ctl) 51 ACCLEV_ERROR = -1, // used as erorr return value. 52 ACCLEV_NONE = 0, // only very basic commands like NOOP and IDENTIFY 53 ACCLEV_IDENTED, // same as NONE but INDENTIFY worked. 54 ACCLEV_CONCTL, // only allowed to do basic connection things. 55 ACCLEV_GUEST, // guest connection (read only) 56 ACCLEV_USER, // normal user connect (read write) 57 ACCLEV_PWRUSER, // power user, may access other user's clients 58 ACCLEV_ALL // full (admin) access (read write ctl) 58 59 }; 59 60 -
roard/req.c
r5065 r5146 141 141 client, roar_autht2str(authmes.type), authmes.type, (long long unsigned int)authmes.len); 142 142 143 ROAR_DBG("req_on_auth(client=%i,...): CALL auth_client_ckeck(cs=%p, &authmes=%p, &next=%p)", client, cs, &authmes, &next); 143 144 ret = auth_client_ckeck(cs, &authmes, &next); 145 ROAR_DBG("req_on_auth(client=%i,...): RET %i // next=%s(%i)", client, ret, roar_autht2str(next), next); 144 146 145 147 if ( ret != 1 ) { 148 ROAR_DBG("req_on_auth(client=%i,...) = ?", client); 149 146 150 if ( next != -1 ) { 151 ROAR_DBG("req_on_auth(client=%i,...) = ?", client); 147 152 memset(&authmes, 0, sizeof(authmes)); 148 153 … … 152 157 return -1; 153 158 154 if ( roar_err_int(&error_frame) == -1 ) 155 return -1; 159 ROAR_DBG("req_on_auth(client=%i,...) = ?", client); 160 161 if ( roar_err_init(&error_frame) == -1 ) 162 return -1; 163 164 ROAR_DBG("req_on_auth(client=%i,...) = ?", client); 156 165 157 166 error_frame.ra_errno = ROAR_ERROR_PERM; … … 159 168 160 169 error_data = roar_err_buildmsg(mes, &error_frame); 170 ROAR_DBG("req_on_auth(client=%i,...): error_data=%p", client, error_data); 161 171 162 172 memcpy(error_data, error_mes.data, error_mes.datalen); … … 164 174 mes->cmd = ROAR_CMD_ERROR; 165 175 mes->pos = g_pos; 176 177 ROAR_DBG("req_on_auth(client=%i,...): mes=%p{.datalen=%i}", client, mes, (int)mes->datalen); 178 ROAR_DBG("req_on_auth(client=%i,...) = 0 // cmd=ERROR", client); 166 179 return 0; 167 180 } 168 181 182 ROAR_DBG("req_on_auth(client=%i,...) = 0", client); 169 183 return -1; 170 184 } … … 173 187 mes->pos = g_pos; 174 188 mes->datalen = 0; 189 190 ROAR_DBG("req_on_auth(client=%i,...) = 0", client); 175 191 return 0; 176 192 } -
roard/roard.c
r5103 r5146 217 217 printf("\nAuth Options:\n\n"); 218 218 printf( 219 " --guest-acclev ACCLEV - Sets the access level for guest access to ACCLEV\n" 219 " --guest-acclev ACCLEV - Sets the access level for guest access to ACCLEV,\n" 220 " Use \"none\" to disable guest access.\n" 220 221 " --trust-acclev ACCLEV - Sets the access level for trust-authed\n" 221 " connections to ACCLEV \n"222 " connections to ACCLEV. Use \"none\" to disable trust auth.\n" 222 223 " --trust-root - Trust root user\n" 223 224 " --no-trust-root - Don't trust root user\n" … … 1679 1680 _CKHAVEARGS(1); 1680 1681 none_acclev = clients_str2acclev(argv[++i]); 1682 if ( none_acclev == -1 ) { 1683 ROAR_ERR("Invalid access level: %s", argv[i]); 1684 return 1; 1685 } 1681 1686 } else if ( strcmp(k, "--trust-acclev") == 0 ) { 1682 1687 _CKHAVEARGS(1); 1683 1688 trust_acclev = clients_str2acclev(argv[++i]); 1689 if ( trust_acclev == -1 ) { 1690 ROAR_ERR("Invalid access level: %s", argv[i]); 1691 return 1; 1692 } 1684 1693 } else if ( strcmp(k, "--trust-root") == 0 ) { 1685 1694 trust_root = 1;
Note: See TracChangeset
for help on using the changeset viewer.