nbd/client: fix nbd_opt_go

Do not send NBD_OPT_ABORT to the broken server. After sending
NBD_REP_ACK on NBD_OPT_GO server is most probably in transmission
phase, when option sending is finished.

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Message-Id: <20170804151440.320927-2-vsementsov@virtuozzo.com>
Signed-off-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
Vladimir Sementsov-Ogievskiy 2017-08-04 18:14:24 +03:00 committed by Eric Blake
parent 02d2d860d2
commit a0acf3a8f7

View File

@ -399,12 +399,10 @@ static int nbd_opt_go(QIOChannel *ioc, const char *wantname,
phase, but make sure it sent flags */ phase, but make sure it sent flags */
if (len) { if (len) {
error_setg(errp, "server sent invalid NBD_REP_ACK"); error_setg(errp, "server sent invalid NBD_REP_ACK");
nbd_send_opt_abort(ioc);
return -1; return -1;
} }
if (!info->flags) { if (!info->flags) {
error_setg(errp, "broken server omitted NBD_INFO_EXPORT"); error_setg(errp, "broken server omitted NBD_INFO_EXPORT");
nbd_send_opt_abort(ioc);
return -1; return -1;
} }
trace_nbd_opt_go_success(); trace_nbd_opt_go_success();