diff options
author | David Howells <dhowells@redhat.com> | 2009-06-16 16:36:44 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-06-17 00:20:14 -0400 |
commit | 519d25679e8ae7433c758b9e74b19144f61b90f8 (patch) | |
tree | e458a5fbf4e37568133fd2488772e98c159fca2b /net/rxrpc/ar-connevent.c | |
parent | 0dd5198672dd2bbeb933862e1fc82162e0b636be (diff) |
RxRPC: Don't attempt to reuse aborted connections
Connections that have seen a connection-level abort should not be reused
as the far end will just abort them again; instead a new connection
should be made.
Connection-level aborts occur due to such things as authentication
failures.
Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'net/rxrpc/ar-connevent.c')
-rw-r--r-- | net/rxrpc/ar-connevent.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/net/rxrpc/ar-connevent.c b/net/rxrpc/ar-connevent.c index dc5cb1e19509..0505cdc4d6d4 100644 --- a/net/rxrpc/ar-connevent.c +++ b/net/rxrpc/ar-connevent.c | |||
@@ -150,11 +150,15 @@ static int rxrpc_process_event(struct rxrpc_connection *conn, | |||
150 | u32 serial; | 150 | u32 serial; |
151 | int loop, ret; | 151 | int loop, ret; |
152 | 152 | ||
153 | if (conn->state >= RXRPC_CONN_REMOTELY_ABORTED) | 153 | if (conn->state >= RXRPC_CONN_REMOTELY_ABORTED) { |
154 | kleave(" = -ECONNABORTED [%u]", conn->state); | ||
154 | return -ECONNABORTED; | 155 | return -ECONNABORTED; |
156 | } | ||
155 | 157 | ||
156 | serial = ntohl(sp->hdr.serial); | 158 | serial = ntohl(sp->hdr.serial); |
157 | 159 | ||
160 | _enter("{%d},{%u,%%%u},", conn->debug_id, sp->hdr.type, serial); | ||
161 | |||
158 | switch (sp->hdr.type) { | 162 | switch (sp->hdr.type) { |
159 | case RXRPC_PACKET_TYPE_ABORT: | 163 | case RXRPC_PACKET_TYPE_ABORT: |
160 | if (skb_copy_bits(skb, 0, &tmp, sizeof(tmp)) < 0) | 164 | if (skb_copy_bits(skb, 0, &tmp, sizeof(tmp)) < 0) |
@@ -199,6 +203,7 @@ static int rxrpc_process_event(struct rxrpc_connection *conn, | |||
199 | return 0; | 203 | return 0; |
200 | 204 | ||
201 | default: | 205 | default: |
206 | _leave(" = -EPROTO [%u]", sp->hdr.type); | ||
202 | return -EPROTO; | 207 | return -EPROTO; |
203 | } | 208 | } |
204 | } | 209 | } |