Changeset 3713:38a2d99a3bed in roaraudio


Ignore:
Timestamp:
04/25/10 04:24:59 (14 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

moved socket cred things out of the network.c into the clients.c/client_set_fh()

Location:
roard
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • roard/clients.c

    r3684 r3713  
    132132 
    133133int clients_set_fh    (int id, int    fh) { 
    134  
    135  if ( g_clients[id] == NULL ) 
    136   return -1; 
    137  
    138  g_clients[id]->fh = fh; 
     134 struct roar_client * c; 
     135#ifdef SO_PEERCRED 
     136 struct ucred cred; 
     137 socklen_t cred_len = sizeof(cred); 
     138#endif 
     139 
     140 if ( (c = g_clients[id]) == NULL ) 
     141  return -1; 
     142 
     143 c->fh = fh; 
     144 
     145#ifdef SO_PEERCRED 
     146 if (getsockopt(fh, SOL_SOCKET, SO_PEERCRED, &cred, &cred_len) != -1) { 
     147  if ( cred.pid != 0 ) { 
     148   c->pid = cred.pid; 
     149   c->uid = cred.uid; 
     150   c->gid = cred.gid; 
     151  } 
     152 } else { 
     153  ROAR_DBG("req_on_identify(): Can't get creds via SO_PEERCRED: %s", strerror(errno)); 
     154 } 
     155#elif defined(ROAR_HAVE_GETPEEREID) 
     156 if (getpeereid(fh, &(c->uid), &(c->gid)) == -1) { 
     157  ROAR_DBG("req_on_identify(): Can't get creds via getpeereid(): %s", strerror(errno)); 
     158 } 
     159#endif 
    139160 
    140161 return 0; 
  • roard/network.c

    r3684 r3713  
    8484 int client; 
    8585 struct roar_client * c; 
    86 #ifdef SO_PEERCRED 
    87  struct ucred cred; 
    88  socklen_t cred_len = sizeof(cred); 
    89 #endif 
    9086 struct roar_vio_calls    vio; 
    9187 struct sockaddr_storage  addr; 
     
    126122 
    127123 if ( clients_get(client, &c) != -1 ) { 
    128 #ifdef SO_PEERCRED 
    129   if (getsockopt(fh, SOL_SOCKET, SO_PEERCRED, &cred, &cred_len) != -1) { 
    130    if ( cred.pid != 0 ) { 
    131     c->pid = cred.pid; 
    132     c->uid = cred.uid; 
    133     c->gid = cred.gid; 
    134    } 
    135   } else { 
    136    ROAR_DBG("req_on_identify(): Can't get creds via SO_PEERCRED: %s", strerror(errno)); 
    137   } 
    138 #elif defined(ROAR_HAVE_GETPEEREID) 
    139   if (getpeereid(fh, &(c->uid), &(c->gid)) == -1) { 
    140    ROAR_DBG("req_on_identify(): Can't get creds via getpeereid(): %s", strerror(errno)); 
    141   } 
    142 #endif 
    143  
    144124  if ( roar_nnode_free(&(c->nnode)) == -1 ) 
    145125   return -1; 
Note: See TracChangeset for help on using the changeset viewer.