Changeset 3713:38a2d99a3bed in roaraudio
- Timestamp:
- 04/25/10 04:24:59 (14 years ago)
- Branch:
- default
- Phase:
- public
- Location:
- roard
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
roard/clients.c
r3684 r3713 132 132 133 133 int 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 139 160 140 161 return 0; -
roard/network.c
r3684 r3713 84 84 int client; 85 85 struct roar_client * c; 86 #ifdef SO_PEERCRED87 struct ucred cred;88 socklen_t cred_len = sizeof(cred);89 #endif90 86 struct roar_vio_calls vio; 91 87 struct sockaddr_storage addr; … … 126 122 127 123 if ( clients_get(client, &c) != -1 ) { 128 #ifdef SO_PEERCRED129 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 #endif143 144 124 if ( roar_nnode_free(&(c->nnode)) == -1 ) 145 125 return -1;
Note: See TracChangeset
for help on using the changeset viewer.