git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git]
/
net
/
sctp
/
sm_sideeffect.c
diff --git
a/net/sctp/sm_sideeffect.c
b/net/sctp/sm_sideeffect.c
index
9c10bde
..
8d1dc24
100644
(file)
--- a/
net/sctp/sm_sideeffect.c
+++ b/
net/sctp/sm_sideeffect.c
@@
-430,11
+430,7
@@
static void sctp_do_8_2_transport_strike(struct sctp_association *asoc,
/* The check for association's overall error counter exceeding the
* threshold is done in the state function.
*/
/* The check for association's overall error counter exceeding the
* threshold is done in the state function.
*/
- /* When probing UNCONFIRMED addresses, the association overall
- * error count is NOT incremented
- */
- if (transport->state != SCTP_UNCONFIRMED)
- asoc->overall_error_count++;
+ asoc->overall_error_count++;
if (transport->state != SCTP_INACTIVE &&
(transport->error_count++ >= transport->pathmaxrxt)) {
if (transport->state != SCTP_INACTIVE &&
(transport->error_count++ >= transport->pathmaxrxt)) {
@@
-502,6
+498,10
@@
static void sctp_cmd_assoc_failed(sctp_cmd_seq_t *commands,
sctp_add_cmd_sf(commands, SCTP_CMD_NEW_STATE,
SCTP_STATE(SCTP_STATE_CLOSED));
sctp_add_cmd_sf(commands, SCTP_CMD_NEW_STATE,
SCTP_STATE(SCTP_STATE_CLOSED));
+ /* Set sk_err to ECONNRESET on a 1-1 style socket. */
+ if (!sctp_style(asoc->base.sk, UDP))
+ asoc->base.sk->sk_err = ECONNRESET;
+
/* SEND_FAILED sent later when cleaning up the association. */
asoc->outqueue.error = error;
sctp_add_cmd_sf(commands, SCTP_CMD_DELETE_TCB, SCTP_NULL());
/* SEND_FAILED sent later when cleaning up the association. */
asoc->outqueue.error = error;
sctp_add_cmd_sf(commands, SCTP_CMD_DELETE_TCB, SCTP_NULL());
@@
-614,7
+614,7
@@
static void sctp_cmd_transport_on(sctp_cmd_seq_t *cmds,
/* Mark the destination transport address as active if it is not so
* marked.
*/
/* Mark the destination transport address as active if it is not so
* marked.
*/
- if (
(t->state == SCTP_INACTIVE) || (t->state == SCTP_UNCONFIRMED)
)
+ if (
t->state == SCTP_INACTIVE
)
sctp_assoc_control_transport(asoc, t, SCTP_TRANSPORT_UP,
SCTP_HEARTBEAT_SUCCESS);
sctp_assoc_control_transport(asoc, t, SCTP_TRANSPORT_UP,
SCTP_HEARTBEAT_SUCCESS);
@@
-624,10
+624,6
@@
static void sctp_cmd_transport_on(sctp_cmd_seq_t *cmds,
*/
hbinfo = (sctp_sender_hb_info_t *) chunk->skb->data;
sctp_transport_update_rto(t, (jiffies - hbinfo->sent_at));
*/
hbinfo = (sctp_sender_hb_info_t *) chunk->skb->data;
sctp_transport_update_rto(t, (jiffies - hbinfo->sent_at));
-
- /* Update the heartbeat timer. */
- if (!mod_timer(&t->hb_timer, sctp_transport_timeout(t)))
- sctp_transport_hold(t);
}
/* Helper function to do a transport reset at the expiry of the hearbeat
}
/* Helper function to do a transport reset at the expiry of the hearbeat
@@
-842,15
+838,6
@@
static void sctp_cmd_del_non_primary(struct sctp_association *asoc)
return;
}
return;
}
-/* Helper function to set sk_err on a 1-1 style socket. */
-static void sctp_cmd_set_sk_err(struct sctp_association *asoc, int error)
-{
- struct sock *sk = asoc->base.sk;
-
- if (!sctp_style(sk, UDP))
- sk->sk_err = error;
-}
-
/* These three macros allow us to pull the debugging code out of the
* main flow of sctp_do_sm() to keep attention focused on the real
* functionality there.
/* These three macros allow us to pull the debugging code out of the
* main flow of sctp_do_sm() to keep attention focused on the real
* functionality there.
@@
-1471,9
+1458,6
@@
static int sctp_cmd_interpreter(sctp_event_t event_type,
local_cork = 0;
asoc->peer.retran_path = t;
break;
local_cork = 0;
asoc->peer.retran_path = t;
break;
- case SCTP_CMD_SET_SK_ERR:
- sctp_cmd_set_sk_err(asoc, cmd->obj.error);
- break;
default:
printk(KERN_WARNING "Impossible command: %u, %p\n",
cmd->verb, cmd->obj.ptr);
default:
printk(KERN_WARNING "Impossible command: %u, %p\n",
cmd->verb, cmd->obj.ptr);