rxrpc: Fix terminal retransmission connection ID to include the channel
When retransmitting the final ACK or ABORT packet for a call, the cid field in the packet header is set to the connection's cid, but this is incorrect as it also needs to include the channel number on that connection that the call was made on. Fix this by OR'ing in the channel number. Note that this fixes the bug that: commit1a025028d4
rxrpc: Fix handling of call quietly cancelled out on server works around. I'm not intending to revert that as it will help protect against problems that might occur on the server. Fixes:3136ef49a1
("rxrpc: Delay terminal ACK transmission on a client call") Signed-off-by: David Howells <dhowells@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
96a3c9a489
commit
fb1967a69f
|
@ -70,7 +70,7 @@ static void rxrpc_conn_retransmit_call(struct rxrpc_connection *conn,
|
|||
iov[2].iov_len = sizeof(ack_info);
|
||||
|
||||
pkt.whdr.epoch = htonl(conn->proto.epoch);
|
||||
pkt.whdr.cid = htonl(conn->proto.cid);
|
||||
pkt.whdr.cid = htonl(conn->proto.cid | channel);
|
||||
pkt.whdr.callNumber = htonl(call_id);
|
||||
pkt.whdr.seq = 0;
|
||||
pkt.whdr.type = chan->last_type;
|
||||
|
|
Loading…
Reference in New Issue