nbd/server: get rid of fail: return rc
"goto fail" error handling scheme is not needed for just returning error code. Better is return it immediately. Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> Reviewed-by: Eric Blake <eblake@redhat.com> Message-Id: <20170602150150.258222-11-vsementsov@virtuozzo.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
7798d3aab9
commit
d9faeed854
28
nbd/server.c
28
nbd/server.c
@ -265,7 +265,6 @@ static int nbd_negotiate_handle_list(NBDClient *client, uint32_t length)
|
|||||||
|
|
||||||
static int nbd_negotiate_handle_export_name(NBDClient *client, uint32_t length)
|
static int nbd_negotiate_handle_export_name(NBDClient *client, uint32_t length)
|
||||||
{
|
{
|
||||||
int rc = -EINVAL;
|
|
||||||
char name[NBD_MAX_NAME_SIZE + 1];
|
char name[NBD_MAX_NAME_SIZE + 1];
|
||||||
|
|
||||||
/* Client sends:
|
/* Client sends:
|
||||||
@ -274,11 +273,11 @@ static int nbd_negotiate_handle_export_name(NBDClient *client, uint32_t length)
|
|||||||
TRACE("Checking length");
|
TRACE("Checking length");
|
||||||
if (length >= sizeof(name)) {
|
if (length >= sizeof(name)) {
|
||||||
LOG("Bad length received");
|
LOG("Bad length received");
|
||||||
goto fail;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
if (nbd_read(client->ioc, name, length, NULL) < 0) {
|
if (nbd_read(client->ioc, name, length, NULL) < 0) {
|
||||||
LOG("read failed");
|
LOG("read failed");
|
||||||
goto fail;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
name[length] = '\0';
|
name[length] = '\0';
|
||||||
|
|
||||||
@ -287,14 +286,13 @@ static int nbd_negotiate_handle_export_name(NBDClient *client, uint32_t length)
|
|||||||
client->exp = nbd_export_find(name);
|
client->exp = nbd_export_find(name);
|
||||||
if (!client->exp) {
|
if (!client->exp) {
|
||||||
LOG("export not found");
|
LOG("export not found");
|
||||||
goto fail;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
QTAILQ_INSERT_TAIL(&client->exp->clients, client, next);
|
QTAILQ_INSERT_TAIL(&client->exp->clients, client, next);
|
||||||
nbd_export_get(client->exp);
|
nbd_export_get(client->exp);
|
||||||
rc = 0;
|
|
||||||
fail:
|
return 0;
|
||||||
return rc;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Handle NBD_OPT_STARTTLS. Return NULL to drop connection, or else the
|
/* Handle NBD_OPT_STARTTLS. Return NULL to drop connection, or else the
|
||||||
@ -564,7 +562,6 @@ static coroutine_fn int nbd_negotiate(NBDClient *client)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
qio_channel_set_blocking(client->ioc, false, NULL);
|
qio_channel_set_blocking(client->ioc, false, NULL);
|
||||||
rc = -EINVAL;
|
|
||||||
|
|
||||||
TRACE("Beginning negotiation.");
|
TRACE("Beginning negotiation.");
|
||||||
memset(buf, 0, sizeof(buf));
|
memset(buf, 0, sizeof(buf));
|
||||||
@ -585,21 +582,21 @@ static coroutine_fn int nbd_negotiate(NBDClient *client)
|
|||||||
if (oldStyle) {
|
if (oldStyle) {
|
||||||
if (client->tlscreds) {
|
if (client->tlscreds) {
|
||||||
TRACE("TLS cannot be enabled with oldstyle protocol");
|
TRACE("TLS cannot be enabled with oldstyle protocol");
|
||||||
goto fail;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
if (nbd_write(client->ioc, buf, sizeof(buf), NULL) < 0) {
|
if (nbd_write(client->ioc, buf, sizeof(buf), NULL) < 0) {
|
||||||
LOG("write failed");
|
LOG("write failed");
|
||||||
goto fail;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (nbd_write(client->ioc, buf, 18, NULL) < 0) {
|
if (nbd_write(client->ioc, buf, 18, NULL) < 0) {
|
||||||
LOG("write failed");
|
LOG("write failed");
|
||||||
goto fail;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
rc = nbd_negotiate_options(client);
|
rc = nbd_negotiate_options(client);
|
||||||
if (rc != 0) {
|
if (rc != 0) {
|
||||||
LOG("option negotiation failed");
|
LOG("option negotiation failed");
|
||||||
goto fail;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
TRACE("advertising size %" PRIu64 " and flags %x",
|
TRACE("advertising size %" PRIu64 " and flags %x",
|
||||||
@ -610,14 +607,13 @@ static coroutine_fn int nbd_negotiate(NBDClient *client)
|
|||||||
rc = nbd_write(client->ioc, buf + 18, len, NULL);
|
rc = nbd_write(client->ioc, buf + 18, len, NULL);
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
LOG("write failed");
|
LOG("write failed");
|
||||||
goto fail;
|
return rc;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TRACE("Negotiation succeeded.");
|
TRACE("Negotiation succeeded.");
|
||||||
rc = 0;
|
|
||||||
fail:
|
return 0;
|
||||||
return rc;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int nbd_receive_request(QIOChannel *ioc, NBDRequest *request)
|
static int nbd_receive_request(QIOChannel *ioc, NBDRequest *request)
|
||||||
|
Loading…
Reference in New Issue
Block a user