Changeset 3802:958585351e28 in roaraudio for roard/network.c
- Timestamp:
- 05/07/10 23:15:25 (14 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
roard/network.c
r3713 r3802 37 37 38 38 int net_check_listen (void) { 39 #ifdef _CAN_OPERATE 40 int r;41 fd_set sl;42 s truct timeval tv;39 struct roar_vio_selecttv rtv; 40 struct roar_vio_select sv[ROAR_MAX_LISTEN_SOCKETS]; 41 size_t num = 0; 42 ssize_t ret; 43 43 int i; 44 int max_fh = -1;45 46 FD_ZERO(&sl);47 44 48 45 for (i = 0; i < ROAR_MAX_LISTEN_SOCKETS; i++) { 49 if ( g_listen[i].socket != -1 ) { 50 if ( g_listen[i].socket > max_fh ) 51 max_fh = g_listen[i].socket; 52 53 FD_SET(g_listen[i].socket, &sl); 46 if ( g_listen[i].used ) { 47 ROAR_VIO_SELECT_SETVIO(&(sv[num]), &(g_listen[i].sock), ROAR_VIO_SELECT_READ); 48 sv[num].ud.si = i; 49 num++; 54 50 } 55 51 } 56 52 57 if ( max_fh == -1)53 if ( num == 0 ) 58 54 return 0; 59 55 60 tv.tv_sec = 0;61 tv.tv_usec = 1;56 rtv.sec = 0; 57 rtv.nsec = 1000; 62 58 63 if ((r = select(max_fh + 1, &sl, NULL, NULL, &tv)) > 0) { 64 ROAR_DBG("net_check_listen(void): We have a connection!"); 65 for (i = 0; i < ROAR_MAX_LISTEN_SOCKETS; i++) { 66 if ( g_listen[i].socket != -1 ) { 67 if ( FD_ISSET(g_listen[i].socket, &sl) ) { 68 if ( net_get_new_client(&(g_listen[i])) == -1 ) 69 return -1; 70 } 59 if ( (ret = roar_vio_select(sv, num, &rtv, NULL)) > 0 ) { 60 for (i = 0; i < num; i++) { 61 if ( sv[i].eventsa & ROAR_VIO_SELECT_READ ) { 62 if ( net_get_new_client(&(g_listen[sv[i].ud.si])) == -1 ) 63 return -1; 71 64 } 72 65 } 73 66 } 74 67 75 return r; 76 #else 77 return -1; 78 #endif 68 return ret; 79 69 } 80 70 81 #ifdef _CAN_OPERATE82 71 int net_get_new_client (struct roard_listen * lsock) { 83 72 int fh; 84 73 int client; 74 int socket; 85 75 struct roar_client * c; 86 76 struct roar_vio_calls vio; … … 88 78 socklen_t addrlen = sizeof(addr); 89 79 90 fh = accept(lsock->socket, (struct sockaddr*)&addr, &addrlen); 80 roar_vio_ctl(&(lsock->sock), ROAR_VIO_CTL_GET_FH, &socket); 81 82 fh = accept(socket, (struct sockaddr*)&addr, &addrlen); 91 83 92 84 ROAR_DBG("net_get_new_client(void): fh = %i", fh); … … 180 172 return 0; 181 173 } 182 #endif183 174 184 175 #endif
Note: See TracChangeset
for help on using the changeset viewer.