Changeset 4745:1e974ec321bd in roaraudio for roard


Ignore:
Timestamp:
01/31/11 15:16:14 (13 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

Better auth type oder support (Closes: #6)

Location:
roard
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • roard/auth.c

    r4739 r4745  
    115115} 
    116116 
    117 int auth_client_ckeck(struct roar_client_server * cs, struct roar_auth_message * authmes) { 
     117int auth_client_ckeck(struct roar_client_server * cs, struct roar_auth_message * authmes, int * next) { 
    118118 struct auth_key * key; 
    119119 int i; 
    120120 int ret; 
    121121 
    122  if ( cs == NULL || authmes == NULL ) 
    123   return -1; 
     122 if ( cs == NULL || authmes == NULL || next == NULL ) 
     123  return -1; 
     124 
     125 *next = -1; 
    124126 
    125127 for (i = 0; i < AUTH_KEYRING_LEN; i++) { 
     
    150152      /* ignore this case and continue */ 
    151153     break; 
    152     case 0: 
     154    case 0: // fatal auth error (server side auth cancel) 
    153155      return 0; 
    154156     break; 
     
    163165  } 
    164166 } 
     167 
     168 // make a better guess: 
     169/* 
     170 if ( authmes->type == ROAR_AUTH_T_PASSWORD ) { 
     171  *next = -1; 
     172 } else { 
     173  *next = ROAR_AUTH_T_PASSWORD; 
     174 } 
     175*/ 
    165176 
    166177 return -1; 
  • roard/include/auth.h

    r4708 r4745  
    7272union auth_typeunion * auth_regkey_simple(int type, enum roard_client_acclev acclev); 
    7373 
    74 int auth_client_ckeck(struct roar_client_server * cs, struct roar_auth_message * authmes); 
    75  
     74int auth_client_ckeck(struct roar_client_server * cs, struct roar_auth_message * authmes, int * next); 
    7675 
    7776int auth_addkey_anonymous(enum roard_client_acclev acclev); 
  • roard/req.c

    r4740 r4745  
    100100 
    101101int req_on_auth        (int client, struct roar_message * mes, char ** data, uint32_t flags[2]) { 
     102 struct roar_error_frame   error_frame; 
     103 void                    * error_data; 
     104 struct roar_message       error_mes; 
    102105 struct roar_client_server * cs; 
    103106 struct roar_auth_message    authmes; 
     107 int next = -1; 
    104108 int ret; 
    105109 
     
    114118                           client, roar_autht2str(authmes.type), authmes.type); 
    115119 
    116  ret = auth_client_ckeck(cs, &authmes); 
    117  
    118  if ( ret != 1 ) 
    119   return -1; 
     120 ret = auth_client_ckeck(cs, &authmes, &next); 
     121 
     122 if ( ret != 1 ) { 
     123  if ( next != -1 ) { 
     124   memset(&authmes, 0, sizeof(authmes)); 
     125 
     126   authmes.type = next; 
     127 
     128   if ( roar_auth_to_mes(&error_mes, NULL, &authmes) == -1 ) 
     129    return -1; 
     130 
     131   if ( roar_err_int(&error_frame) == -1 ) 
     132    return -1; 
     133 
     134   error_frame.ra_errno = ROAR_ERROR_PERM; 
     135   error_frame.datalen  = error_mes.datalen; 
     136 
     137   error_data   = roar_err_buildmsg(mes, &error_frame); 
     138 
     139   memcpy(error_data, error_mes.data, error_mes.datalen); 
     140 
     141   mes->cmd     = ROAR_CMD_ERROR; 
     142   mes->pos     = g_pos; 
     143   return 0; 
     144  } 
     145 
     146  return -1; 
     147 } 
    120148 
    121149 mes->cmd     = ROAR_CMD_OK; 
Note: See TracChangeset for help on using the changeset viewer.