Fix the check for an empty send socket buffer on a TOE TLS socket.

Compare sbavail() with the cached sb_off of already-sent data instead of
always comparing with zero.  This will correctly close the connection and
send the FIN if the socket buffer contains some previously-sent data but
no unsent data.

Reported by:	Harsh Jain @ Chelsio
Sponsored by:	Chelsio Communications
This commit is contained in:
jhb 2018-03-14 20:49:51 +00:00
parent 6ab76844d8
commit 54f8d69889

View File

@ -1175,7 +1175,8 @@ t4_push_tls_records(struct adapter *sc, struct toepcb *toep, int drop)
* Send a FIN if requested, but only if there's no * Send a FIN if requested, but only if there's no
* more data to send. * more data to send.
*/ */
if (sbavail(sb) == 0 && toep->flags & TPF_SEND_FIN) { if (sbavail(sb) == tls_ofld->sb_off &&
toep->flags & TPF_SEND_FIN) {
if (sowwakeup) if (sowwakeup)
sowwakeup_locked(so); sowwakeup_locked(so);
else else