version 1.319, 2012/12/02 20:46:11 |
version 1.320, 2013/04/06 16:07:00 |
|
|
{ |
{ |
Channel *nc; |
Channel *nc; |
struct sockaddr_storage addr; |
struct sockaddr_storage addr; |
int newsock; |
int newsock, oerrno; |
socklen_t addrlen; |
socklen_t addrlen; |
char buf[16384], *remote_ipaddr; |
char buf[16384], *remote_ipaddr; |
int remote_port; |
int remote_port; |
|
|
addrlen = sizeof(addr); |
addrlen = sizeof(addr); |
newsock = accept(c->sock, (struct sockaddr *)&addr, &addrlen); |
newsock = accept(c->sock, (struct sockaddr *)&addr, &addrlen); |
if (c->single_connection) { |
if (c->single_connection) { |
|
oerrno = errno; |
debug2("single_connection: closing X11 listener."); |
debug2("single_connection: closing X11 listener."); |
channel_close_fd(&c->sock); |
channel_close_fd(&c->sock); |
chan_mark_dead(c); |
chan_mark_dead(c); |
|
errno = oerrno; |
} |
} |
if (newsock < 0) { |
if (newsock < 0) { |
error("accept: %.100s", strerror(errno)); |
if (errno != EINTR && errno != EWOULDBLOCK && |
|
errno != ECONNABORTED) |
|
error("accept: %.100s", strerror(errno)); |
if (errno == EMFILE || errno == ENFILE) |
if (errno == EMFILE || errno == ENFILE) |
c->notbefore = time(NULL) + 1; |
c->notbefore = time(NULL) + 1; |
return; |
return; |
|
|
addrlen = sizeof(addr); |
addrlen = sizeof(addr); |
newsock = accept(c->sock, (struct sockaddr *)&addr, &addrlen); |
newsock = accept(c->sock, (struct sockaddr *)&addr, &addrlen); |
if (newsock < 0) { |
if (newsock < 0) { |
error("accept: %.100s", strerror(errno)); |
if (errno != EINTR && errno != EWOULDBLOCK && |
|
errno != ECONNABORTED) |
|
error("accept: %.100s", strerror(errno)); |
if (errno == EMFILE || errno == ENFILE) |
if (errno == EMFILE || errno == ENFILE) |
c->notbefore = time(NULL) + 1; |
c->notbefore = time(NULL) + 1; |
return; |
return; |