Changeset 4475:c2aa5513d732 in roaraudio
- Timestamp:
- 10/11/10 00:28:19 (13 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libroar/auth.c
r4473 r4475 170 170 } 171 171 172 173 static int try_password (struct roar_connection * con) { 174 struct roar_message mes; 175 struct roar_auth_message authmes; 176 char * pw; 177 178 roar_auth_mes_init(&authmes, ROAR_AUTH_T_PASSWORD); 179 180 if ( roar_passwd_simple_ask_pw(&pw, "Password for RoarAudio Server?", NULL) == -1 ) { 181 return -1; 182 } 183 184 authmes.len = strlen(pw); 185 186 if ( roar_auth_init_mes(&mes, &authmes) == -1 ) { 187 roar_mm_free(pw); 188 return -1; 189 } 190 191 // do not use strcpy() because that would copy \0, too. 192 memcpy(authmes.data, pw, authmes.len); 193 194 roar_mm_free(pw); 195 196 if ( roar_req(con, &mes, NULL) == -1 ) 197 return -1; 198 199 if ( mes.cmd != ROAR_CMD_OK ) 200 return -1; 201 202 if ( roar_auth_from_mes(&authmes, &mes, NULL) == -1 ) 203 return -1; 204 205 if ( authmes.stage == 0 ) 206 return 0; 207 208 return -1; 209 } 210 172 211 #define _EOL ROAR_AUTH_T_AUTO 173 212 int roar_auth (struct roar_connection * con) { … … 179 218 ROAR_AUTH_T_IDENT, 180 219 ROAR_AUTH_T_RHOST, 220 ROAR_AUTH_T_PASSWORD, 181 221 ROAR_AUTH_T_NONE, 182 222 _EOL … … 184 224 185 225 for (i = 0; ltt[i] != _EOL; i++) { 186 roar_auth_mes_init(&authmes, ltt[i]); 187 188 if ( (ret = roar_auth_ask_server(con, &authmes)) == -1 ) 189 continue; 226 switch (ltt[i]) { 227 case ROAR_AUTH_T_PASSWORD: 228 if ( (ret = try_password(con)) == -1 ) 229 continue; 230 break; 231 case ROAR_AUTH_T_TRUST: 232 case ROAR_AUTH_T_IDENT: 233 case ROAR_AUTH_T_RHOST: 234 case ROAR_AUTH_T_NONE: 235 roar_auth_mes_init(&authmes, ltt[i]); 236 if ( (ret = roar_auth_ask_server(con, &authmes)) == -1 ) 237 continue; 238 break; 239 default: /* Bad error! */ 240 return -1; 241 break; 242 } 190 243 191 244 if ( authmes.stage != 0 ) … … 242 295 243 296 memset(mes, 0, sizeof(struct roar_message)); 297 298 mes->cmd = ROAR_CMD_AUTH; 244 299 245 300 if ( (ames->len + 4) > sizeof(mes->data) ) { … … 272 327 273 328 memset(mes, 0, sizeof(struct roar_message)); 329 330 mes->cmd = ROAR_CMD_AUTH; 274 331 275 332 mes->data[0] = ames->type;
Note: See TracChangeset
for help on using the changeset viewer.