mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-09 10:34:58 -06:00
tests/qtest: replace wait_command() with qtest_qmp_assert_success
Most usage of wait_command() is followed by qobject_unref(), which is just a verbose re-implementation of qtest_qmp_assert_success(). Reviewed-by: Thomas Huth <thuth@redhat.com> Reviewed-by: Juan Quintela <quintela@redhat.com> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> Message-Id: <20230601161347.1803440-7-berrange@redhat.com> Signed-off-by: Juan Quintela <quintela@redhat.com>
This commit is contained in:
parent
cdf5ab5587
commit
aca0406958
3 changed files with 74 additions and 157 deletions
|
@ -36,54 +36,6 @@ bool migrate_watch_for_stop(QTestState *who, const char *name,
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef _WIN32
|
|
||||||
/*
|
|
||||||
* Events can get in the way of responses we are actually waiting for.
|
|
||||||
*/
|
|
||||||
QDict *wait_command_fd(QTestState *who, int fd, const char *command, ...)
|
|
||||||
{
|
|
||||||
va_list ap;
|
|
||||||
QDict *resp, *ret;
|
|
||||||
|
|
||||||
va_start(ap, command);
|
|
||||||
qtest_qmp_vsend_fds(who, &fd, 1, command, ap);
|
|
||||||
va_end(ap);
|
|
||||||
|
|
||||||
resp = qtest_qmp_receive(who);
|
|
||||||
|
|
||||||
g_assert(!qdict_haskey(resp, "error"));
|
|
||||||
g_assert(qdict_haskey(resp, "return"));
|
|
||||||
|
|
||||||
ret = qdict_get_qdict(resp, "return");
|
|
||||||
qobject_ref(ret);
|
|
||||||
qobject_unref(resp);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Events can get in the way of responses we are actually waiting for.
|
|
||||||
*/
|
|
||||||
QDict *wait_command(QTestState *who, const char *command, ...)
|
|
||||||
{
|
|
||||||
va_list ap;
|
|
||||||
QDict *resp, *ret;
|
|
||||||
|
|
||||||
va_start(ap, command);
|
|
||||||
resp = qtest_vqmp(who, command, ap);
|
|
||||||
va_end(ap);
|
|
||||||
|
|
||||||
g_assert(!qdict_haskey(resp, "error"));
|
|
||||||
g_assert(qdict_haskey(resp, "return"));
|
|
||||||
|
|
||||||
ret = qdict_get_qdict(resp, "return");
|
|
||||||
qobject_ref(ret);
|
|
||||||
qobject_unref(resp);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Send QMP command "migrate".
|
* Send QMP command "migrate".
|
||||||
* Arguments are built from @fmt... (formatted like
|
* Arguments are built from @fmt... (formatted like
|
||||||
|
@ -111,7 +63,7 @@ void migrate_qmp(QTestState *who, const char *uri, const char *fmt, ...)
|
||||||
*/
|
*/
|
||||||
QDict *migrate_query(QTestState *who)
|
QDict *migrate_query(QTestState *who)
|
||||||
{
|
{
|
||||||
return wait_command(who, "{ 'execute': 'query-migrate' }");
|
return qtest_qmp_assert_success_ref(who, "{ 'execute': 'query-migrate' }");
|
||||||
}
|
}
|
||||||
|
|
||||||
QDict *migrate_query_not_failed(QTestState *who)
|
QDict *migrate_query_not_failed(QTestState *who)
|
||||||
|
@ -209,7 +161,8 @@ void wait_for_migration_fail(QTestState *from, bool allow_active)
|
||||||
} while (!failed);
|
} while (!failed);
|
||||||
|
|
||||||
/* Is the machine currently running? */
|
/* Is the machine currently running? */
|
||||||
rsp_return = wait_command(from, "{ 'execute': 'query-status' }");
|
rsp_return = qtest_qmp_assert_success_ref(from,
|
||||||
|
"{ 'execute': 'query-status' }");
|
||||||
g_assert(qdict_haskey(rsp_return, "running"));
|
g_assert(qdict_haskey(rsp_return, "running"));
|
||||||
g_assert(qdict_get_bool(rsp_return, "running"));
|
g_assert(qdict_get_bool(rsp_return, "running"));
|
||||||
qobject_unref(rsp_return);
|
qobject_unref(rsp_return);
|
||||||
|
|
|
@ -18,14 +18,6 @@
|
||||||
bool migrate_watch_for_stop(QTestState *who, const char *name,
|
bool migrate_watch_for_stop(QTestState *who, const char *name,
|
||||||
QDict *event, void *opaque);
|
QDict *event, void *opaque);
|
||||||
|
|
||||||
#ifndef _WIN32
|
|
||||||
G_GNUC_PRINTF(3, 4)
|
|
||||||
QDict *wait_command_fd(QTestState *who, int fd, const char *command, ...);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
G_GNUC_PRINTF(2, 3)
|
|
||||||
QDict *wait_command(QTestState *who, const char *command, ...);
|
|
||||||
|
|
||||||
G_GNUC_PRINTF(3, 4)
|
G_GNUC_PRINTF(3, 4)
|
||||||
void migrate_qmp(QTestState *who, const char *uri, const char *fmt, ...);
|
void migrate_qmp(QTestState *who, const char *uri, const char *fmt, ...);
|
||||||
|
|
||||||
|
|
|
@ -342,7 +342,8 @@ static long long migrate_get_parameter_int(QTestState *who,
|
||||||
QDict *rsp;
|
QDict *rsp;
|
||||||
long long result;
|
long long result;
|
||||||
|
|
||||||
rsp = wait_command(who, "{ 'execute': 'query-migrate-parameters' }");
|
rsp = qtest_qmp_assert_success_ref(
|
||||||
|
who, "{ 'execute': 'query-migrate-parameters' }");
|
||||||
result = qdict_get_int(rsp, parameter);
|
result = qdict_get_int(rsp, parameter);
|
||||||
qobject_unref(rsp);
|
qobject_unref(rsp);
|
||||||
return result;
|
return result;
|
||||||
|
@ -373,7 +374,8 @@ static char *migrate_get_parameter_str(QTestState *who,
|
||||||
QDict *rsp;
|
QDict *rsp;
|
||||||
char *result;
|
char *result;
|
||||||
|
|
||||||
rsp = wait_command(who, "{ 'execute': 'query-migrate-parameters' }");
|
rsp = qtest_qmp_assert_success_ref(
|
||||||
|
who, "{ 'execute': 'query-migrate-parameters' }");
|
||||||
result = g_strdup(qdict_get_str(rsp, parameter));
|
result = g_strdup(qdict_get_str(rsp, parameter));
|
||||||
qobject_unref(rsp);
|
qobject_unref(rsp);
|
||||||
return result;
|
return result;
|
||||||
|
@ -402,7 +404,8 @@ static long long migrate_get_parameter_bool(QTestState *who,
|
||||||
QDict *rsp;
|
QDict *rsp;
|
||||||
int result;
|
int result;
|
||||||
|
|
||||||
rsp = wait_command(who, "{ 'execute': 'query-migrate-parameters' }");
|
rsp = qtest_qmp_assert_success_ref(
|
||||||
|
who, "{ 'execute': 'query-migrate-parameters' }");
|
||||||
result = qdict_get_bool(rsp, parameter);
|
result = qdict_get_bool(rsp, parameter);
|
||||||
qobject_unref(rsp);
|
qobject_unref(rsp);
|
||||||
return !!result;
|
return !!result;
|
||||||
|
@ -443,41 +446,29 @@ static void migrate_ensure_converge(QTestState *who)
|
||||||
|
|
||||||
static void migrate_pause(QTestState *who)
|
static void migrate_pause(QTestState *who)
|
||||||
{
|
{
|
||||||
QDict *rsp;
|
qtest_qmp_assert_success(who, "{ 'execute': 'migrate-pause' }");
|
||||||
|
|
||||||
rsp = wait_command(who, "{ 'execute': 'migrate-pause' }");
|
|
||||||
qobject_unref(rsp);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void migrate_continue(QTestState *who, const char *state)
|
static void migrate_continue(QTestState *who, const char *state)
|
||||||
{
|
{
|
||||||
QDict *rsp;
|
qtest_qmp_assert_success(who,
|
||||||
|
|
||||||
rsp = wait_command(who,
|
|
||||||
"{ 'execute': 'migrate-continue',"
|
"{ 'execute': 'migrate-continue',"
|
||||||
" 'arguments': { 'state': %s } }",
|
" 'arguments': { 'state': %s } }",
|
||||||
state);
|
state);
|
||||||
qobject_unref(rsp);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void migrate_recover(QTestState *who, const char *uri)
|
static void migrate_recover(QTestState *who, const char *uri)
|
||||||
{
|
{
|
||||||
QDict *rsp;
|
qtest_qmp_assert_success(who,
|
||||||
|
|
||||||
rsp = wait_command(who,
|
|
||||||
"{ 'execute': 'migrate-recover', "
|
"{ 'execute': 'migrate-recover', "
|
||||||
" 'id': 'recover-cmd', "
|
" 'id': 'recover-cmd', "
|
||||||
" 'arguments': { 'uri': %s } }",
|
" 'arguments': { 'uri': %s } }",
|
||||||
uri);
|
uri);
|
||||||
qobject_unref(rsp);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void migrate_cancel(QTestState *who)
|
static void migrate_cancel(QTestState *who)
|
||||||
{
|
{
|
||||||
QDict *rsp;
|
qtest_qmp_assert_success(who, "{ 'execute': 'migrate_cancel' }");
|
||||||
|
|
||||||
rsp = wait_command(who, "{ 'execute': 'migrate_cancel' }");
|
|
||||||
qobject_unref(rsp);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void migrate_set_capability(QTestState *who, const char *capability,
|
static void migrate_set_capability(QTestState *who, const char *capability,
|
||||||
|
@ -493,10 +484,7 @@ static void migrate_set_capability(QTestState *who, const char *capability,
|
||||||
|
|
||||||
static void migrate_postcopy_start(QTestState *from, QTestState *to)
|
static void migrate_postcopy_start(QTestState *from, QTestState *to)
|
||||||
{
|
{
|
||||||
QDict *rsp;
|
qtest_qmp_assert_success(from, "{ 'execute': 'migrate-start-postcopy' }");
|
||||||
|
|
||||||
rsp = wait_command(from, "{ 'execute': 'migrate-start-postcopy' }");
|
|
||||||
qobject_unref(rsp);
|
|
||||||
|
|
||||||
if (!got_stop) {
|
if (!got_stop) {
|
||||||
qtest_qmp_eventwait(from, "STOP");
|
qtest_qmp_eventwait(from, "STOP");
|
||||||
|
@ -785,7 +773,6 @@ test_migrate_tls_psk_start_common(QTestState *from,
|
||||||
{
|
{
|
||||||
struct TestMigrateTLSPSKData *data =
|
struct TestMigrateTLSPSKData *data =
|
||||||
g_new0(struct TestMigrateTLSPSKData, 1);
|
g_new0(struct TestMigrateTLSPSKData, 1);
|
||||||
QDict *rsp;
|
|
||||||
|
|
||||||
data->workdir = g_strdup_printf("%s/tlscredspsk0", tmpfs);
|
data->workdir = g_strdup_printf("%s/tlscredspsk0", tmpfs);
|
||||||
data->pskfile = g_strdup_printf("%s/%s", data->workdir,
|
data->pskfile = g_strdup_printf("%s/%s", data->workdir,
|
||||||
|
@ -801,7 +788,7 @@ test_migrate_tls_psk_start_common(QTestState *from,
|
||||||
test_tls_psk_init_alt(data->pskfilealt);
|
test_tls_psk_init_alt(data->pskfilealt);
|
||||||
}
|
}
|
||||||
|
|
||||||
rsp = wait_command(from,
|
qtest_qmp_assert_success(from,
|
||||||
"{ 'execute': 'object-add',"
|
"{ 'execute': 'object-add',"
|
||||||
" 'arguments': { 'qom-type': 'tls-creds-psk',"
|
" 'arguments': { 'qom-type': 'tls-creds-psk',"
|
||||||
" 'id': 'tlscredspsk0',"
|
" 'id': 'tlscredspsk0',"
|
||||||
|
@ -809,16 +796,14 @@ test_migrate_tls_psk_start_common(QTestState *from,
|
||||||
" 'dir': %s,"
|
" 'dir': %s,"
|
||||||
" 'username': 'qemu'} }",
|
" 'username': 'qemu'} }",
|
||||||
data->workdir);
|
data->workdir);
|
||||||
qobject_unref(rsp);
|
|
||||||
|
|
||||||
rsp = wait_command(to,
|
qtest_qmp_assert_success(to,
|
||||||
"{ 'execute': 'object-add',"
|
"{ 'execute': 'object-add',"
|
||||||
" 'arguments': { 'qom-type': 'tls-creds-psk',"
|
" 'arguments': { 'qom-type': 'tls-creds-psk',"
|
||||||
" 'id': 'tlscredspsk0',"
|
" 'id': 'tlscredspsk0',"
|
||||||
" 'endpoint': 'server',"
|
" 'endpoint': 'server',"
|
||||||
" 'dir': %s } }",
|
" 'dir': %s } }",
|
||||||
mismatch ? data->workdiralt : data->workdir);
|
mismatch ? data->workdiralt : data->workdir);
|
||||||
qobject_unref(rsp);
|
|
||||||
|
|
||||||
migrate_set_parameter_str(from, "tls-creds", "tlscredspsk0");
|
migrate_set_parameter_str(from, "tls-creds", "tlscredspsk0");
|
||||||
migrate_set_parameter_str(to, "tls-creds", "tlscredspsk0");
|
migrate_set_parameter_str(to, "tls-creds", "tlscredspsk0");
|
||||||
|
@ -889,7 +874,6 @@ test_migrate_tls_x509_start_common(QTestState *from,
|
||||||
TestMigrateTLSX509 *args)
|
TestMigrateTLSX509 *args)
|
||||||
{
|
{
|
||||||
TestMigrateTLSX509Data *data = g_new0(TestMigrateTLSX509Data, 1);
|
TestMigrateTLSX509Data *data = g_new0(TestMigrateTLSX509Data, 1);
|
||||||
QDict *rsp;
|
|
||||||
|
|
||||||
data->workdir = g_strdup_printf("%s/tlscredsx5090", tmpfs);
|
data->workdir = g_strdup_printf("%s/tlscredsx5090", tmpfs);
|
||||||
data->keyfile = g_strdup_printf("%s/key.pem", data->workdir);
|
data->keyfile = g_strdup_printf("%s/key.pem", data->workdir);
|
||||||
|
@ -932,7 +916,7 @@ test_migrate_tls_x509_start_common(QTestState *from,
|
||||||
args->certhostname,
|
args->certhostname,
|
||||||
args->certipaddr);
|
args->certipaddr);
|
||||||
|
|
||||||
rsp = wait_command(from,
|
qtest_qmp_assert_success(from,
|
||||||
"{ 'execute': 'object-add',"
|
"{ 'execute': 'object-add',"
|
||||||
" 'arguments': { 'qom-type': 'tls-creds-x509',"
|
" 'arguments': { 'qom-type': 'tls-creds-x509',"
|
||||||
" 'id': 'tlscredsx509client0',"
|
" 'id': 'tlscredsx509client0',"
|
||||||
|
@ -941,13 +925,12 @@ test_migrate_tls_x509_start_common(QTestState *from,
|
||||||
" 'sanity-check': true,"
|
" 'sanity-check': true,"
|
||||||
" 'verify-peer': true} }",
|
" 'verify-peer': true} }",
|
||||||
data->workdir);
|
data->workdir);
|
||||||
qobject_unref(rsp);
|
|
||||||
migrate_set_parameter_str(from, "tls-creds", "tlscredsx509client0");
|
migrate_set_parameter_str(from, "tls-creds", "tlscredsx509client0");
|
||||||
if (args->certhostname) {
|
if (args->certhostname) {
|
||||||
migrate_set_parameter_str(from, "tls-hostname", args->certhostname);
|
migrate_set_parameter_str(from, "tls-hostname", args->certhostname);
|
||||||
}
|
}
|
||||||
|
|
||||||
rsp = wait_command(to,
|
qtest_qmp_assert_success(to,
|
||||||
"{ 'execute': 'object-add',"
|
"{ 'execute': 'object-add',"
|
||||||
" 'arguments': { 'qom-type': 'tls-creds-x509',"
|
" 'arguments': { 'qom-type': 'tls-creds-x509',"
|
||||||
" 'id': 'tlscredsx509server0',"
|
" 'id': 'tlscredsx509server0',"
|
||||||
|
@ -956,11 +939,10 @@ test_migrate_tls_x509_start_common(QTestState *from,
|
||||||
" 'sanity-check': true,"
|
" 'sanity-check': true,"
|
||||||
" 'verify-peer': %i} }",
|
" 'verify-peer': %i} }",
|
||||||
data->workdir, args->verifyclient);
|
data->workdir, args->verifyclient);
|
||||||
qobject_unref(rsp);
|
|
||||||
migrate_set_parameter_str(to, "tls-creds", "tlscredsx509server0");
|
migrate_set_parameter_str(to, "tls-creds", "tlscredsx509server0");
|
||||||
|
|
||||||
if (args->authzclient) {
|
if (args->authzclient) {
|
||||||
rsp = wait_command(to,
|
qtest_qmp_assert_success(to,
|
||||||
"{ 'execute': 'object-add',"
|
"{ 'execute': 'object-add',"
|
||||||
" 'arguments': { 'qom-type': 'authz-simple',"
|
" 'arguments': { 'qom-type': 'authz-simple',"
|
||||||
" 'id': 'tlsauthz0',"
|
" 'id': 'tlsauthz0',"
|
||||||
|
@ -1759,7 +1741,6 @@ static void test_precopy_tcp_tls_x509_reject_anon_client(void)
|
||||||
static void *test_migrate_fd_start_hook(QTestState *from,
|
static void *test_migrate_fd_start_hook(QTestState *from,
|
||||||
QTestState *to)
|
QTestState *to)
|
||||||
{
|
{
|
||||||
QDict *rsp;
|
|
||||||
int ret;
|
int ret;
|
||||||
int pair[2];
|
int pair[2];
|
||||||
|
|
||||||
|
@ -1768,22 +1749,19 @@ static void *test_migrate_fd_start_hook(QTestState *from,
|
||||||
g_assert_cmpint(ret, ==, 0);
|
g_assert_cmpint(ret, ==, 0);
|
||||||
|
|
||||||
/* Send the 1st socket to the target */
|
/* Send the 1st socket to the target */
|
||||||
rsp = wait_command_fd(to, pair[0],
|
qtest_qmp_fds_assert_success(to, &pair[0], 1,
|
||||||
"{ 'execute': 'getfd',"
|
"{ 'execute': 'getfd',"
|
||||||
" 'arguments': { 'fdname': 'fd-mig' }}");
|
" 'arguments': { 'fdname': 'fd-mig' }}");
|
||||||
qobject_unref(rsp);
|
|
||||||
close(pair[0]);
|
close(pair[0]);
|
||||||
|
|
||||||
/* Start incoming migration from the 1st socket */
|
/* Start incoming migration from the 1st socket */
|
||||||
rsp = wait_command(to, "{ 'execute': 'migrate-incoming',"
|
qtest_qmp_assert_success(to, "{ 'execute': 'migrate-incoming',"
|
||||||
" 'arguments': { 'uri': 'fd:fd-mig' }}");
|
" 'arguments': { 'uri': 'fd:fd-mig' }}");
|
||||||
qobject_unref(rsp);
|
|
||||||
|
|
||||||
/* Send the 2nd socket to the target */
|
/* Send the 2nd socket to the target */
|
||||||
rsp = wait_command_fd(from, pair[1],
|
qtest_qmp_fds_assert_success(from, &pair[1], 1,
|
||||||
"{ 'execute': 'getfd',"
|
"{ 'execute': 'getfd',"
|
||||||
" 'arguments': { 'fdname': 'fd-mig' }}");
|
" 'arguments': { 'fdname': 'fd-mig' }}");
|
||||||
qobject_unref(rsp);
|
|
||||||
close(pair[1]);
|
close(pair[1]);
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -1990,8 +1968,6 @@ test_migrate_precopy_tcp_multifd_start_common(QTestState *from,
|
||||||
QTestState *to,
|
QTestState *to,
|
||||||
const char *method)
|
const char *method)
|
||||||
{
|
{
|
||||||
QDict *rsp;
|
|
||||||
|
|
||||||
migrate_set_parameter_int(from, "multifd-channels", 16);
|
migrate_set_parameter_int(from, "multifd-channels", 16);
|
||||||
migrate_set_parameter_int(to, "multifd-channels", 16);
|
migrate_set_parameter_int(to, "multifd-channels", 16);
|
||||||
|
|
||||||
|
@ -2002,9 +1978,8 @@ test_migrate_precopy_tcp_multifd_start_common(QTestState *from,
|
||||||
migrate_set_capability(to, "multifd", true);
|
migrate_set_capability(to, "multifd", true);
|
||||||
|
|
||||||
/* Start incoming migration from the 1st socket */
|
/* Start incoming migration from the 1st socket */
|
||||||
rsp = wait_command(to, "{ 'execute': 'migrate-incoming',"
|
qtest_qmp_assert_success(to, "{ 'execute': 'migrate-incoming',"
|
||||||
" 'arguments': { 'uri': 'tcp:127.0.0.1:0' }}");
|
" 'arguments': { 'uri': 'tcp:127.0.0.1:0' }}");
|
||||||
qobject_unref(rsp);
|
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -2235,7 +2210,6 @@ static void test_multifd_tcp_cancel(void)
|
||||||
.hide_stderr = true,
|
.hide_stderr = true,
|
||||||
};
|
};
|
||||||
QTestState *from, *to, *to2;
|
QTestState *from, *to, *to2;
|
||||||
QDict *rsp;
|
|
||||||
g_autofree char *uri = NULL;
|
g_autofree char *uri = NULL;
|
||||||
|
|
||||||
if (test_migrate_start(&from, &to, "defer", &args)) {
|
if (test_migrate_start(&from, &to, "defer", &args)) {
|
||||||
|
@ -2251,9 +2225,8 @@ static void test_multifd_tcp_cancel(void)
|
||||||
migrate_set_capability(to, "multifd", true);
|
migrate_set_capability(to, "multifd", true);
|
||||||
|
|
||||||
/* Start incoming migration from the 1st socket */
|
/* Start incoming migration from the 1st socket */
|
||||||
rsp = wait_command(to, "{ 'execute': 'migrate-incoming',"
|
qtest_qmp_assert_success(to, "{ 'execute': 'migrate-incoming',"
|
||||||
" 'arguments': { 'uri': 'tcp:127.0.0.1:0' }}");
|
" 'arguments': { 'uri': 'tcp:127.0.0.1:0' }}");
|
||||||
qobject_unref(rsp);
|
|
||||||
|
|
||||||
/* Wait for the first serial output from the source */
|
/* Wait for the first serial output from the source */
|
||||||
wait_for_serial("src_serial");
|
wait_for_serial("src_serial");
|
||||||
|
@ -2283,9 +2256,8 @@ static void test_multifd_tcp_cancel(void)
|
||||||
migrate_set_capability(to2, "multifd", true);
|
migrate_set_capability(to2, "multifd", true);
|
||||||
|
|
||||||
/* Start incoming migration from the 1st socket */
|
/* Start incoming migration from the 1st socket */
|
||||||
rsp = wait_command(to2, "{ 'execute': 'migrate-incoming',"
|
qtest_qmp_assert_success(to2, "{ 'execute': 'migrate-incoming',"
|
||||||
" 'arguments': { 'uri': 'tcp:127.0.0.1:0' }}");
|
" 'arguments': { 'uri': 'tcp:127.0.0.1:0' }}");
|
||||||
qobject_unref(rsp);
|
|
||||||
|
|
||||||
g_free(uri);
|
g_free(uri);
|
||||||
uri = migrate_get_socket_address(to2, "socket-address");
|
uri = migrate_get_socket_address(to2, "socket-address");
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue