Il 10/02/2014 08:38, Fam Zheng ha scritto:
> if (s->client.is_unix) {
> - sock = unix_socket_outgoing(qemu_opt_get(s->socket_opts, "path"));
> + sock = unix_connect(qemu_opt_get(s->socket_opts, "path"), errp);
Why not use unix_connect_opts like below?
Right!
> } else {
> - sock = tcp_socket_outgoing_opts(s->socket_opts);
> + sock = inet_connect_opts(s->socket_opts, errp, NULL, NULL);
> if (sock >= 0) {
> socket_set_nodelay(sock);
> }
> @@ -255,17 +251,19 @@ static int nbd_open(BlockDriverState *bs, QDict
*options, int flags,
> BDRVNBDState *s = bs->opaque;
> char *export = NULL;
> int result, sock;
> + Error *local_err = NULL;
>
> /* Pop the config into our state object. Exit if invalid. */
> - result = nbd_config(s, options, &export);
> - if (result != 0) {
> - return result;
> + nbd_config(s, options, &export, &local_err);
> + if (local_err) {
Isn't error_is_set() better here?
No, error_is_set(&foo) is the same as foo != NULL.
So we use error_is_set only with Error**, which really should never
happen because you miss errors if the errp is NULL. :)
Paolo
> + error_propagate(errp, local_err);
> + return -EINVAL;
> }