Re: Not receiving SCTP_SHUTDOWN_COMP notifications

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On Mon, Nov 30, 2015 at 03:41:13PM -0800, Julien Pourtet wrote:
> My "tweak" for the client app is using a one-to-one socket
> (SOCK_STREAM) instead of one-to-many. I also perform a
> shutdown(SHUT_RDWR) before close() is called, as well as a recvmsg()
> [get_reply() in that code base semantics] to receive the notifications
> before closing the file descriptor.
> 
> Commenting out the following lines in ulpqueue.c does get the
> notifications delivered to the client app:
>          /* If the socket is just going to throw this away, do not
>           * even try to deliver it.
>           */
>          if (sock_flag(sk, SOCK_DEAD) || (sk->sk_shutdown & RCV_SHUTDOWN))
>                  goto out_free;

That's pretty much the thing.. when you did shutdown(SHUT_RDWR), you set
that RCV_SHUTDOWN flag. You told the sockets layer that you don't want
to receive anything else from this fd.

Please change that SHUT_RDWR to just SHUT_WR and see how it goes.

For one-to-many, there is also this possibility:
https://tools.ietf.org/html/rfc6458#section-3.2
To shut down the association gracefully, the user must call sendmsg()
with no data and with the SCTP_EOF flag set as described in
Section 5.3.4.  The function returns immediately, and completion of
the graceful shutdown is indicated by an SCTP_ASSOC_CHANGE
notification of type SCTP_SHUTDOWN_COMP (see Section 6.1.1).  Note
that this can also be done using the sctp_sendv() call described in
Section 9.12."

in case you're intestered. (This cannot be used with
one-to-one/tcp-style)

> However, I guess that's not a viable solution as this may have
> undesirable side-effects (I am not familiar with this code base). It
> was more of a sanity check for me.

I think that with the above explanation you can see the effects it would
have.

> Question is, is this a bug? Should we fix it?

Nope :)

> [Note: it's my first time writing to this ML, sorry if I am breaking
> any implicit rules or explicit conventions].

It's all good, just sorry for the delay.

  Marcelo
--
To unsubscribe from this list: send the line "unsubscribe linux-sctp" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Networking Development]     [Linux OMAP]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux