• Davide Caratti's avatar
    net: mptcp: don't hang before sending 'MP capable with data' · 767d3ded
    Davide Caratti authored
    the following packetdrill script
    
      socket(..., SOCK_STREAM, IPPROTO_MPTCP) = 3
      fcntl(3, F_GETFL) = 0x2 (flags O_RDWR)
      fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0
      connect(3, ..., ...) = -1 EINPROGRESS (Operation now in progress)
      > S 0:0(0) <mss 1460,sackOK,TS val 100 ecr 0,nop,wscale 8,mpcapable v1 flags[flag_h] nokey>
      < S. 0:0(0) ack 1 win 65535 <mss 1460,sackOK,TS val 700 ecr 100,nop,wscale 8,mpcapable v1 flags[flag_h] key[skey=2]>
      > . 1:1(0) ack 1 win 256 <nop, nop, TS val 100 ecr 700,mpcapable v1 flags[flag_h] key[ckey,skey]>
      getsockopt(3, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
      fcntl(3, F_SETFL, O_RDWR) = 0
      write(3, ..., 1000) = 1000
    
    doesn't transmit 1KB data packet after a successful three-way-handshake,
    using mp_capable with data as required by protocol v1, and write() hangs
    forever:
    
     PID: 973    TASK: ffff97dd399cae80  CPU: 1   COMMAND: "packetdrill"
      #0 [ffffa9b94062fb78] __schedule at ffffffff9c90a000
      #1 [ffffa9b94062fc...
    767d3ded
protocol.c 33.7 KB