450 |
*/ |
*/ |
451 |
static RequestWrapper socket_producer(int server) { |
static RequestWrapper socket_producer(int server) { |
452 |
|
|
453 |
int client, rv; |
int client; |
|
fd_set rset; |
|
|
struct timeval tv; |
|
454 |
struct sockaddr_in in; |
struct sockaddr_in in; |
455 |
int len= sizeof(struct sockaddr_in); |
int len= sizeof(struct sockaddr_in); |
456 |
|
|
457 |
do { |
if(can_read(server, 1)) { |
458 |
errno= 0; |
|
|
FD_ZERO(&rset); |
|
|
FD_SET(server, &rset); |
|
|
tv.tv_sec= 1; |
|
|
tv.tv_usec= 0; |
|
|
|
|
|
rv= select(server+1, &rset, NULL, NULL, &tv); |
|
|
} while(rv == -1 && errno == EINTR); |
|
|
|
|
|
if(rv > 0) { |
|
|
|
|
459 |
if( (client= accept(server, (struct sockaddr*)&in, &len)) < 0) { |
if( (client= accept(server, (struct sockaddr*)&in, &len)) < 0) { |
460 |
|
|
461 |
if(stopped) { |
if(stopped) { |