diff options
| author | Anders Persson <Anders.Persson@Sun.COM> | 2010-06-17 17:23:59 -0700 |
|---|---|---|
| committer | Anders Persson <Anders.Persson@Sun.COM> | 2010-06-17 17:23:59 -0700 |
| commit | dd49f125507979bb2ab505a8daf2a46d1be27051 (patch) | |
| tree | 8156589971913212e7b7155026e8e18a79acdbfa /usr/src/uts/common/inet/tcp/tcp_socket.c | |
| parent | 3e95bd4ab92abca814bd28e854607d1975c7dc88 (diff) | |
| download | illumos-joyent-dd49f125507979bb2ab505a8daf2a46d1be27051.tar.gz | |
6939100 convert KSSL into a socket filter
Diffstat (limited to 'usr/src/uts/common/inet/tcp/tcp_socket.c')
| -rw-r--r-- | usr/src/uts/common/inet/tcp/tcp_socket.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/usr/src/uts/common/inet/tcp/tcp_socket.c b/usr/src/uts/common/inet/tcp/tcp_socket.c index f5df6b156c..c42ac46ef9 100644 --- a/usr/src/uts/common/inet/tcp/tcp_socket.c +++ b/usr/src/uts/common/inet/tcp/tcp_socket.c @@ -131,13 +131,19 @@ tcp_accept(sock_lower_handle_t lproto_handle, conn_t *lconnp, *econnp; tcp_t *listener, *eager; - lconnp = (conn_t *)lproto_handle; - listener = lconnp->conn_tcp; - ASSERT(listener->tcp_state == TCPS_LISTEN); + /* + * KSSL can move a socket from one listener to another, in which + * case `lproto_handle' points to the new listener. To ensure that + * the original listener is used the information is obtained from + * the eager. + */ econnp = (conn_t *)eproto_handle; eager = econnp->conn_tcp; - ASSERT(eager->tcp_listener != NULL); ASSERT(IPCL_IS_NONSTR(econnp)); + ASSERT(eager->tcp_listener != NULL); + listener = eager->tcp_listener; + lconnp = (conn_t *)listener->tcp_connp; + ASSERT(listener->tcp_state == TCPS_LISTEN); ASSERT(lconnp->conn_upper_handle != NULL); /* |
