diff options
Diffstat (limited to 'net/dccp/minisocks.c')
| -rw-r--r-- | net/dccp/minisocks.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/net/dccp/minisocks.c b/net/dccp/minisocks.c index 18461bc04cbe..1393461898bb 100644 --- a/net/dccp/minisocks.c +++ b/net/dccp/minisocks.c | |||
| @@ -19,6 +19,7 @@ | |||
| 19 | #include <net/xfrm.h> | 19 | #include <net/xfrm.h> |
| 20 | #include <net/inet_timewait_sock.h> | 20 | #include <net/inet_timewait_sock.h> |
| 21 | 21 | ||
| 22 | #include "ackvec.h" | ||
| 22 | #include "ccid.h" | 23 | #include "ccid.h" |
| 23 | #include "dccp.h" | 24 | #include "dccp.h" |
| 24 | 25 | ||
| @@ -93,22 +94,24 @@ struct sock *dccp_create_openreq_child(struct sock *sk, | |||
| 93 | struct inet_connection_sock *newicsk = inet_csk(sk); | 94 | struct inet_connection_sock *newicsk = inet_csk(sk); |
| 94 | struct dccp_sock *newdp = dccp_sk(newsk); | 95 | struct dccp_sock *newdp = dccp_sk(newsk); |
| 95 | 96 | ||
| 96 | newdp->dccps_hc_rx_ackpkts = NULL; | 97 | newdp->dccps_role = DCCP_ROLE_SERVER; |
| 97 | newdp->dccps_role = DCCP_ROLE_SERVER; | 98 | newdp->dccps_hc_rx_ackvec = NULL; |
| 98 | newicsk->icsk_rto = DCCP_TIMEOUT_INIT; | 99 | newdp->dccps_service_list = NULL; |
| 100 | newdp->dccps_service = dreq->dreq_service; | ||
| 101 | newicsk->icsk_rto = DCCP_TIMEOUT_INIT; | ||
| 99 | do_gettimeofday(&newdp->dccps_epoch); | 102 | do_gettimeofday(&newdp->dccps_epoch); |
| 100 | 103 | ||
| 101 | if (newdp->dccps_options.dccpo_send_ack_vector) { | 104 | if (newdp->dccps_options.dccpo_send_ack_vector) { |
| 102 | newdp->dccps_hc_rx_ackpkts = | 105 | newdp->dccps_hc_rx_ackvec = |
| 103 | dccp_ackpkts_alloc(DCCP_MAX_ACK_VECTOR_LEN, | 106 | dccp_ackvec_alloc(DCCP_MAX_ACKVEC_LEN, |
| 104 | GFP_ATOMIC); | 107 | GFP_ATOMIC); |
| 105 | /* | 108 | /* |
| 106 | * XXX: We're using the same CCIDs set on the parent, | 109 | * XXX: We're using the same CCIDs set on the parent, |
| 107 | * i.e. sk_clone copied the master sock and left the | 110 | * i.e. sk_clone copied the master sock and left the |
| 108 | * CCID pointers for this child, that is why we do the | 111 | * CCID pointers for this child, that is why we do the |
| 109 | * __ccid_get calls. | 112 | * __ccid_get calls. |
| 110 | */ | 113 | */ |
| 111 | if (unlikely(newdp->dccps_hc_rx_ackpkts == NULL)) | 114 | if (unlikely(newdp->dccps_hc_rx_ackvec == NULL)) |
| 112 | goto out_free; | 115 | goto out_free; |
| 113 | } | 116 | } |
| 114 | 117 | ||
| @@ -116,7 +119,7 @@ struct sock *dccp_create_openreq_child(struct sock *sk, | |||
| 116 | newsk) != 0 || | 119 | newsk) != 0 || |
| 117 | ccid_hc_tx_init(newdp->dccps_hc_tx_ccid, | 120 | ccid_hc_tx_init(newdp->dccps_hc_tx_ccid, |
| 118 | newsk) != 0)) { | 121 | newsk) != 0)) { |
| 119 | dccp_ackpkts_free(newdp->dccps_hc_rx_ackpkts); | 122 | dccp_ackvec_free(newdp->dccps_hc_rx_ackvec); |
| 120 | ccid_hc_rx_exit(newdp->dccps_hc_rx_ccid, newsk); | 123 | ccid_hc_rx_exit(newdp->dccps_hc_rx_ccid, newsk); |
| 121 | ccid_hc_tx_exit(newdp->dccps_hc_tx_ccid, newsk); | 124 | ccid_hc_tx_exit(newdp->dccps_hc_tx_ccid, newsk); |
| 122 | out_free: | 125 | out_free: |
