This fixes an endles loop problem where userspace programs are looping on recv
or send until all required bytes processed or until an error returned.
Signed-off-by: Eldad Zinger <eldadz@mellanox.co.il>
fin:
posts_handler_put(ssk);
+ if (!err && !ssk->qp_active) {
+ err = -EPIPE;
+ sdp_set_error(sk, err);
+ sdp_dbg(sk, "can't send anymore\n");
+ }
+
release_sock(sk);
return err;
posts_handler_put(ssk);
sdp_auto_moderation(ssk);
+
+ if (!err && !ssk->qp_active) {
+ err = -EPIPE;
+ sdp_set_error(sk, err);
+ sdp_dbg(sk, "data won't be available anymore\n");
+ }
release_sock(sk);
sdp_dbg_data(sk, "recvmsg finished. ret = %d\n", err);