- markus@cvs.openbsd.org 2013/04/06 16:07:00
[channels.c sshd.c] handle ECONNABORTED for accept(); ok deraadt some time ago...
This commit is contained in:
parent
172859cff7
commit
37f1c08473
|
@ -36,6 +36,9 @@
|
||||||
[mux.c]
|
[mux.c]
|
||||||
cleanup mux-created channels that are in SSH_CHANNEL_OPENING state too
|
cleanup mux-created channels that are in SSH_CHANNEL_OPENING state too
|
||||||
(in addition to ones already in OPEN); bz#2079, ok dtucker@
|
(in addition to ones already in OPEN); bz#2079, ok dtucker@
|
||||||
|
- markus@cvs.openbsd.org 2013/04/06 16:07:00
|
||||||
|
[channels.c sshd.c]
|
||||||
|
handle ECONNABORTED for accept(); ok deraadt some time ago...
|
||||||
|
|
||||||
20130418
|
20130418
|
||||||
- (djm) [config.guess config.sub] Update to last versions before they switch
|
- (djm) [config.guess config.sub] Update to last versions before they switch
|
||||||
|
|
14
channels.c
14
channels.c
|
@ -1,4 +1,4 @@
|
||||||
/* $OpenBSD: channels.c,v 1.319 2012/12/02 20:46:11 djm Exp $ */
|
/* $OpenBSD: channels.c,v 1.320 2013/04/06 16:07:00 markus Exp $ */
|
||||||
/*
|
/*
|
||||||
* Author: Tatu Ylonen <ylo@cs.hut.fi>
|
* Author: Tatu Ylonen <ylo@cs.hut.fi>
|
||||||
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
|
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
|
||||||
|
@ -1324,7 +1324,7 @@ channel_post_x11_listener(Channel *c, fd_set *readset, fd_set *writeset)
|
||||||
{
|
{
|
||||||
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;
|
||||||
|
@ -1334,12 +1334,16 @@ channel_post_x11_listener(Channel *c, fd_set *readset, fd_set *writeset)
|
||||||
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;
|
||||||
|
@ -1484,7 +1488,9 @@ channel_post_port_listener(Channel *c, fd_set *readset, fd_set *writeset)
|
||||||
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;
|
||||||
|
|
6
sshd.c
6
sshd.c
|
@ -1,4 +1,4 @@
|
||||||
/* $OpenBSD: sshd.c,v 1.397 2013/02/11 21:21:58 dtucker Exp $ */
|
/* $OpenBSD: sshd.c,v 1.398 2013/04/06 16:07:00 markus Exp $ */
|
||||||
/*
|
/*
|
||||||
* Author: Tatu Ylonen <ylo@cs.hut.fi>
|
* Author: Tatu Ylonen <ylo@cs.hut.fi>
|
||||||
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
|
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
|
||||||
|
@ -1183,8 +1183,8 @@ server_accept_loop(int *sock_in, int *sock_out, int *newsock, int *config_s)
|
||||||
*newsock = accept(listen_socks[i],
|
*newsock = accept(listen_socks[i],
|
||||||
(struct sockaddr *)&from, &fromlen);
|
(struct sockaddr *)&from, &fromlen);
|
||||||
if (*newsock < 0) {
|
if (*newsock < 0) {
|
||||||
if (errno != EINTR && errno != EAGAIN &&
|
if (errno != EINTR && errno != EWOULDBLOCK &&
|
||||||
errno != EWOULDBLOCK)
|
errno != ECONNABORTED && errno != EAGAIN)
|
||||||
error("accept: %.100s",
|
error("accept: %.100s",
|
||||||
strerror(errno));
|
strerror(errno));
|
||||||
if (errno == EMFILE || errno == ENFILE)
|
if (errno == EMFILE || errno == ENFILE)
|
||||||
|
|
Loading…
Reference in New Issue