Merge branch 'libsoup3'
Ports the soup plugin to libsoup 3. Closes strongswan/strongswan#2788
This commit is contained in:
+1
-1
@@ -1044,7 +1044,7 @@ if test x$unbound = xtrue; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if test x$soup = xtrue; then
|
if test x$soup = xtrue; then
|
||||||
PKG_CHECK_MODULES(soup, [libsoup-2.4])
|
PKG_CHECK_MODULES(soup, [libsoup-3.0])
|
||||||
AC_SUBST(soup_CFLAGS)
|
AC_SUBST(soup_CFLAGS)
|
||||||
AC_SUBST(soup_LIBS)
|
AC_SUBST(soup_LIBS)
|
||||||
fi
|
fi
|
||||||
|
|||||||
+6
-6
@@ -305,7 +305,7 @@ all|alpine|codeql|coverage|sonarcloud|no-dbg|no-testable-ke)
|
|||||||
if [ "$TEST" = "no-testable-ke" ]; then
|
if [ "$TEST" = "no-testable-ke" ]; then
|
||||||
CONFIG="$CONFIG --without-testable-ke"
|
CONFIG="$CONFIG --without-testable-ke"
|
||||||
fi
|
fi
|
||||||
DEPS="$DEPS libcurl4-gnutls-dev libsoup2.4-dev libunbound-dev libldns-dev
|
DEPS="$DEPS libcurl4-gnutls-dev libsoup-3.0-dev libunbound-dev libldns-dev
|
||||||
libmysqlclient-dev libsqlite3-dev clearsilver-dev libfcgi-dev
|
libmysqlclient-dev libsqlite3-dev clearsilver-dev libfcgi-dev
|
||||||
libldap2-dev libpcsclite-dev libpam0g-dev binutils-dev libnm-dev
|
libldap2-dev libpcsclite-dev libpam0g-dev binutils-dev libnm-dev
|
||||||
libgcrypt20-dev libjson-c-dev libtspi-dev libsystemd-dev
|
libgcrypt20-dev libjson-c-dev libtspi-dev libsystemd-dev
|
||||||
@@ -318,11 +318,11 @@ all|alpine|codeql|coverage|sonarcloud|no-dbg|no-testable-ke)
|
|||||||
fi
|
fi
|
||||||
if [ "$TEST" = "alpine" ]; then
|
if [ "$TEST" = "alpine" ]; then
|
||||||
# override the whole list for alpine
|
# override the whole list for alpine
|
||||||
DEPS="git gmp-dev openldap-dev curl-dev ldns-dev unbound-dev libsoup-dev
|
DEPS="git gmp-dev openldap-dev curl-dev ldns-dev unbound-dev libsoup3-dev
|
||||||
tpm2-tss-dev tpm2-tss-sys mariadb-dev wolfssl-dev libgcrypt-dev
|
libxml2-dev tpm2-tss-dev tpm2-tss-sys mariadb-dev wolfssl-dev
|
||||||
botan3-dev pcsc-lite-dev networkmanager-dev linux-pam-dev
|
libgcrypt-dev botan3-dev pcsc-lite-dev networkmanager-dev
|
||||||
iptables-dev libselinux-dev binutils-dev libunwind-dev ruby
|
linux-pam-dev iptables-dev libselinux-dev binutils-dev libunwind-dev
|
||||||
py3-setuptools py3-build py3-tox"
|
ruby py3-setuptools py3-build py3-tox"
|
||||||
# musl does not provide backtrace(), so use libunwind
|
# musl does not provide backtrace(), so use libunwind
|
||||||
CONFIG="$CONFIG --enable-unwind-backtraces"
|
CONFIG="$CONFIG --enable-unwind-backtraces"
|
||||||
# alpine doesn't have systemd
|
# alpine doesn't have systemd
|
||||||
|
|||||||
@@ -69,12 +69,6 @@ enum fetcher_option_t {
|
|||||||
*/
|
*/
|
||||||
FETCH_REQUEST_HEADER,
|
FETCH_REQUEST_HEADER,
|
||||||
|
|
||||||
/**
|
|
||||||
* Use HTTP Version 1.0 instead of 1.1.
|
|
||||||
* No additional argument is needed.
|
|
||||||
*/
|
|
||||||
FETCH_HTTP_VERSION_1_0,
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Timeout to use for fetch, in seconds.
|
* Timeout to use for fetch, in seconds.
|
||||||
* Additional argument is u_int
|
* Additional argument is u_int
|
||||||
|
|||||||
@@ -103,9 +103,6 @@ METHOD(fetcher_manager_t, fetch, status_t,
|
|||||||
good = fetcher->set_option(fetcher, opt,
|
good = fetcher->set_option(fetcher, opt,
|
||||||
va_arg(args, char*));
|
va_arg(args, char*));
|
||||||
continue;
|
continue;
|
||||||
case FETCH_HTTP_VERSION_1_0:
|
|
||||||
good = fetcher->set_option(fetcher, opt);
|
|
||||||
continue;
|
|
||||||
case FETCH_TIMEOUT:
|
case FETCH_TIMEOUT:
|
||||||
good = fetcher->set_option(fetcher, opt,
|
good = fetcher->set_option(fetcher, opt,
|
||||||
va_arg(args, u_int));
|
va_arg(args, u_int));
|
||||||
|
|||||||
@@ -205,12 +205,6 @@ METHOD(fetcher_t, set_option, bool,
|
|||||||
this->headers = curl_slist_append(this->headers, header);
|
this->headers = curl_slist_append(this->headers, header);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case FETCH_HTTP_VERSION_1_0:
|
|
||||||
{
|
|
||||||
curl_easy_setopt(this->curl, CURLOPT_HTTP_VERSION,
|
|
||||||
CURL_HTTP_VERSION_1_0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case FETCH_TIMEOUT:
|
case FETCH_TIMEOUT:
|
||||||
{
|
{
|
||||||
this->timeout = va_arg(args, u_int);
|
this->timeout = va_arg(args, u_int);
|
||||||
|
|||||||
@@ -55,11 +55,6 @@ struct private_soup_fetcher_t {
|
|||||||
*/
|
*/
|
||||||
u_int timeout;
|
u_int timeout;
|
||||||
|
|
||||||
/**
|
|
||||||
* HTTP request version
|
|
||||||
*/
|
|
||||||
SoupHTTPVersion version;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fetcher callback function
|
* Fetcher callback function
|
||||||
*/
|
*/
|
||||||
@@ -71,36 +66,13 @@ struct private_soup_fetcher_t {
|
|||||||
u_int *result;
|
u_int *result;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* Data to pass to soup callback
|
|
||||||
*/
|
|
||||||
typedef struct {
|
|
||||||
fetcher_callback_t cb;
|
|
||||||
void *user;
|
|
||||||
SoupSession *session;
|
|
||||||
} cb_data_t;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Soup callback invoking our callback
|
|
||||||
*/
|
|
||||||
static void soup_cb(SoupMessage *message, SoupBuffer *chunk, cb_data_t *data)
|
|
||||||
{
|
|
||||||
if (!data->cb(data->user, chunk_create((u_char*)chunk->data, chunk->length)))
|
|
||||||
{
|
|
||||||
soup_session_cancel_message(data->session, message,
|
|
||||||
SOUP_STATUS_CANCELLED);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
METHOD(fetcher_t, fetch, status_t,
|
METHOD(fetcher_t, fetch, status_t,
|
||||||
private_soup_fetcher_t *this, char *uri, void *userdata)
|
private_soup_fetcher_t *this, char *uri, void *userdata)
|
||||||
{
|
{
|
||||||
SoupMessage *message;
|
SoupMessage *message;
|
||||||
status_t status = FAILED;
|
status_t status = FAILED;
|
||||||
cb_data_t data = {
|
GBytes *request_body, *res;
|
||||||
.cb = this->cb,
|
SoupSession *session;
|
||||||
.user = userdata,
|
|
||||||
};
|
|
||||||
|
|
||||||
message = soup_message_new(this->method, uri);
|
message = soup_message_new(this->method, uri);
|
||||||
if (!message)
|
if (!message)
|
||||||
@@ -113,32 +85,43 @@ METHOD(fetcher_t, fetch, status_t,
|
|||||||
}
|
}
|
||||||
if (this->type)
|
if (this->type)
|
||||||
{
|
{
|
||||||
soup_message_set_request(message, this->type, SOUP_MEMORY_STATIC,
|
request_body = g_bytes_new_static(this->data.ptr, this->data.len);
|
||||||
this->data.ptr, this->data.len);
|
soup_message_set_request_body_from_bytes(message, this->type,
|
||||||
|
request_body);
|
||||||
|
g_bytes_unref(request_body);
|
||||||
}
|
}
|
||||||
soup_message_set_http_version(message, this->version);
|
session = soup_session_new_with_options("timeout", (guint)this->timeout,
|
||||||
soup_message_body_set_accumulate(message->response_body, FALSE);
|
NULL);
|
||||||
g_signal_connect(message, "got-chunk", G_CALLBACK(soup_cb), &data);
|
|
||||||
data.session = soup_session_new();
|
|
||||||
g_object_set(G_OBJECT(data.session),
|
|
||||||
SOUP_SESSION_TIMEOUT, (guint)this->timeout, NULL);
|
|
||||||
|
|
||||||
DBG2(DBG_LIB, "sending http request to '%s'...", uri);
|
DBG2(DBG_LIB, "sending http request to '%s'...", uri);
|
||||||
soup_session_send_message(data.session, message);
|
res = soup_session_send_and_read(session, message, NULL, NULL);
|
||||||
if (this->result)
|
if (this->result)
|
||||||
{
|
{
|
||||||
*this->result = message->status_code;
|
*this->result = soup_message_get_status(message);
|
||||||
}
|
}
|
||||||
if (SOUP_STATUS_IS_SUCCESSFUL(message->status_code))
|
if (SOUP_STATUS_IS_SUCCESSFUL(soup_message_get_status(message)))
|
||||||
{
|
{
|
||||||
status = SUCCESS;
|
status = SUCCESS;
|
||||||
}
|
}
|
||||||
else if (!this->result)
|
else if (!this->result)
|
||||||
{ /* only log an error if the code is not returned */
|
{ /* only log an error if the code is not returned */
|
||||||
DBG1(DBG_LIB, "HTTP request failed: %s", message->reason_phrase);
|
DBG1(DBG_LIB, "HTTP request failed: %s",
|
||||||
|
soup_message_get_reason_phrase(message));
|
||||||
|
}
|
||||||
|
if (res)
|
||||||
|
{
|
||||||
|
gpointer data;
|
||||||
|
gsize data_len;
|
||||||
|
|
||||||
|
data = g_bytes_unref_to_data(res, &data_len);
|
||||||
|
if (!this->cb(userdata, chunk_create(data, data_len)))
|
||||||
|
{
|
||||||
|
status = FAILED;
|
||||||
|
}
|
||||||
|
g_free(data);
|
||||||
}
|
}
|
||||||
g_object_unref(G_OBJECT(message));
|
g_object_unref(G_OBJECT(message));
|
||||||
g_object_unref(G_OBJECT(data.session));
|
g_object_unref(G_OBJECT(session));
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -158,9 +141,6 @@ METHOD(fetcher_t, set_option, bool,
|
|||||||
case FETCH_REQUEST_TYPE:
|
case FETCH_REQUEST_TYPE:
|
||||||
this->type = va_arg(args, char*);
|
this->type = va_arg(args, char*);
|
||||||
break;
|
break;
|
||||||
case FETCH_HTTP_VERSION_1_0:
|
|
||||||
this->version = SOUP_HTTP_1_0;
|
|
||||||
break;
|
|
||||||
case FETCH_TIMEOUT:
|
case FETCH_TIMEOUT:
|
||||||
this->timeout = va_arg(args, u_int);
|
this->timeout = va_arg(args, u_int);
|
||||||
break;
|
break;
|
||||||
@@ -200,7 +180,6 @@ soup_fetcher_t *soup_fetcher_create()
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
.method = SOUP_METHOD_GET,
|
.method = SOUP_METHOD_GET,
|
||||||
.version = SOUP_HTTP_1_1,
|
|
||||||
.timeout = DEFAULT_TIMEOUT,
|
.timeout = DEFAULT_TIMEOUT,
|
||||||
.cb = fetcher_default_callback,
|
.cb = fetcher_default_callback,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -54,11 +54,6 @@ struct private_winhttp_fetcher_t {
|
|||||||
*/
|
*/
|
||||||
chunk_t request;
|
chunk_t request;
|
||||||
|
|
||||||
/**
|
|
||||||
* HTTP version string to use
|
|
||||||
*/
|
|
||||||
LPWSTR version;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Optional HTTP headers, as allocated LPWSTR
|
* Optional HTTP headers, as allocated LPWSTR
|
||||||
*/
|
*/
|
||||||
@@ -264,7 +259,7 @@ METHOD(fetcher_t, fetch, status_t,
|
|||||||
connection = WinHttpConnect(this->session, host, port, 0);
|
connection = WinHttpConnect(this->session, host, port, 0);
|
||||||
if (connection)
|
if (connection)
|
||||||
{
|
{
|
||||||
request = WinHttpOpenRequest(connection, method, path, this->version,
|
request = WinHttpOpenRequest(connection, method, path, NULL,
|
||||||
WINHTTP_NO_REFERER,
|
WINHTTP_NO_REFERER,
|
||||||
WINHTTP_DEFAULT_ACCEPT_TYPES, flags);
|
WINHTTP_DEFAULT_ACCEPT_TYPES, flags);
|
||||||
if (request)
|
if (request)
|
||||||
@@ -334,9 +329,6 @@ METHOD(fetcher_t, set_option, bool,
|
|||||||
case FETCH_REQUEST_HEADER:
|
case FETCH_REQUEST_HEADER:
|
||||||
supported = append_header(this, va_arg(args, char*));
|
supported = append_header(this, va_arg(args, char*));
|
||||||
break;
|
break;
|
||||||
case FETCH_HTTP_VERSION_1_0:
|
|
||||||
this->version = L"HTTP/1.0";
|
|
||||||
break;
|
|
||||||
case FETCH_TIMEOUT:
|
case FETCH_TIMEOUT:
|
||||||
this->timeout = va_arg(args, u_int) * 1000;
|
this->timeout = va_arg(args, u_int) * 1000;
|
||||||
break;
|
break;
|
||||||
@@ -381,7 +373,6 @@ winhttp_fetcher_t *winhttp_fetcher_create()
|
|||||||
.destroy = _destroy,
|
.destroy = _destroy,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
.version = L"HTTP/1.1",
|
|
||||||
.cb = fetcher_default_callback,
|
.cb = fetcher_default_callback,
|
||||||
.headers = linked_list_create(),
|
.headers = linked_list_create(),
|
||||||
.session = WinHttpOpen(L"strongSwan WinHTTP fetcher",
|
.session = WinHttpOpen(L"strongSwan WinHTTP fetcher",
|
||||||
|
|||||||
@@ -27,8 +27,6 @@
|
|||||||
typedef struct {
|
typedef struct {
|
||||||
/* HTTP Method */
|
/* HTTP Method */
|
||||||
char *meth;
|
char *meth;
|
||||||
/* HTTP 1.x minor version */
|
|
||||||
int minor;
|
|
||||||
/* host to connect to */
|
/* host to connect to */
|
||||||
char *host;
|
char *host;
|
||||||
/* HTTP service port */
|
/* HTTP service port */
|
||||||
@@ -117,8 +115,8 @@ static bool servicing(void *data, stream_t *stream)
|
|||||||
switch (nr++)
|
switch (nr++)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
snprintf(hdr, sizeof(hdr), "%s %s HTTP/1.%u",
|
snprintf(hdr, sizeof(hdr), "%s %s HTTP/1.1",
|
||||||
test->meth, test->path, test->minor);
|
test->meth, test->path);
|
||||||
ck_assert_str_eq(hdr, start);
|
ck_assert_str_eq(hdr, start);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -158,7 +156,7 @@ static bool servicing(void *data, stream_t *stream)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* response headers */
|
/* response headers */
|
||||||
snprintf(buf, sizeof(buf), "HTTP/1.%u %u OK\r\n", test->minor, test->code);
|
snprintf(buf, sizeof(buf), "HTTP/1.1 %u OK\r\n", test->code);
|
||||||
ck_assert(stream->write_all(stream, buf, strlen(buf)));
|
ck_assert(stream->write_all(stream, buf, strlen(buf)));
|
||||||
|
|
||||||
/* if the response code indicates an error the following write operations
|
/* if the response code indicates an error the following write operations
|
||||||
@@ -188,13 +186,13 @@ static bool servicing(void *data, stream_t *stream)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static test_service_t gtests[] = {
|
static test_service_t gtests[] = {
|
||||||
{ "GET", 1, "127.0.0.1", 6543, "/a/test/?b=c", NULL,
|
{ "GET", "127.0.0.1", 6543, "/a/test/?b=c", NULL,
|
||||||
NULL, 0, "\x12\x34", 2, 0 },
|
NULL, 0, "\x12\x34", 2, 0 },
|
||||||
{ "GET", 0, "localhost", 6543, "/", NULL,
|
{ "GET", "localhost", 6543, "/", NULL,
|
||||||
NULL, 0, NULL, 0, 0 },
|
NULL, 0, NULL, 0, 0 },
|
||||||
{ "GET", 0, "127.0.0.1", 6543, "/largefile", NULL,
|
{ "GET", "127.0.0.1", 6543, "/largefile", NULL,
|
||||||
NULL, 0, large, sizeof(large), 0 },
|
NULL, 0, large, sizeof(large), 0 },
|
||||||
{ "GET", 1, "[::1]", 6543, "/ipv6-url", NULL,
|
{ "GET", "[::1]", 6543, "/ipv6-url", NULL,
|
||||||
NULL, 0, "\x00\r\n\r\x00testdatablabla", 20, 0 },
|
NULL, 0, "\x00\r\n\r\x00testdatablabla", 20, 0 },
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -214,9 +212,7 @@ START_TEST(test_get)
|
|||||||
|
|
||||||
snprintf(uri, sizeof(uri), "http://%s:%u%s",
|
snprintf(uri, sizeof(uri), "http://%s:%u%s",
|
||||||
gtests[_i].host, gtests[_i].port, gtests[_i].path);
|
gtests[_i].host, gtests[_i].port, gtests[_i].path);
|
||||||
status = lib->fetcher->fetch(lib->fetcher, uri, &data,
|
status = lib->fetcher->fetch(lib->fetcher, uri, &data, FETCH_END);
|
||||||
!gtests[_i].minor ? FETCH_HTTP_VERSION_1_0 : FETCH_END,
|
|
||||||
FETCH_END);
|
|
||||||
ck_assert_int_eq(status, SUCCESS);
|
ck_assert_int_eq(status, SUCCESS);
|
||||||
expected = chunk_create(gtests[_i].res, gtests[_i].res_len);
|
expected = chunk_create(gtests[_i].res, gtests[_i].res_len);
|
||||||
ck_assert_msg(chunk_compare(expected, data) == 0,
|
ck_assert_msg(chunk_compare(expected, data) == 0,
|
||||||
@@ -229,11 +225,11 @@ END_TEST
|
|||||||
|
|
||||||
|
|
||||||
static test_service_t ptests[] = {
|
static test_service_t ptests[] = {
|
||||||
{ "POST", 1, "127.0.0.1", 6543, "/a/test/?b=c", "application/binary",
|
{ "POST", "127.0.0.1", 6543, "/a/test/?b=c", "application/binary",
|
||||||
"\x23\x45", 2, "\x12\x34", 2, 0 },
|
"\x23\x45", 2, "\x12\x34", 2, 0 },
|
||||||
{ "POST", 0, "localhost", 6543, "/largefile", "application/x-large",
|
{ "POST", "localhost", 6543, "/largefile", "application/x-large",
|
||||||
large, sizeof(large), large, sizeof(large), 0 },
|
large, sizeof(large), large, sizeof(large), 0 },
|
||||||
{ "POST", 1, "[::1]", 6543, "/ipv6-url", "text/plain",
|
{ "POST", "[::1]", 6543, "/ipv6-url", "text/plain",
|
||||||
"\x00\r\n\r\x00testdatablabla", 20, "\x00\r\n\r\x00testdatablabla", 20, 0 },
|
"\x00\r\n\r\x00testdatablabla", 20, "\x00\r\n\r\x00testdatablabla", 20, 0 },
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -257,7 +253,6 @@ START_TEST(test_post)
|
|||||||
FETCH_REQUEST_TYPE, ptests[_i].type,
|
FETCH_REQUEST_TYPE, ptests[_i].type,
|
||||||
FETCH_REQUEST_DATA,
|
FETCH_REQUEST_DATA,
|
||||||
chunk_create(ptests[_i].req, ptests[_i].req_len),
|
chunk_create(ptests[_i].req, ptests[_i].req_len),
|
||||||
!ptests[_i].minor ? FETCH_HTTP_VERSION_1_0 : FETCH_END,
|
|
||||||
FETCH_END);
|
FETCH_END);
|
||||||
ck_assert_int_eq(status, SUCCESS);
|
ck_assert_int_eq(status, SUCCESS);
|
||||||
expected = chunk_create(ptests[_i].res, ptests[_i].res_len);
|
expected = chunk_create(ptests[_i].res, ptests[_i].res_len);
|
||||||
@@ -271,11 +266,11 @@ END_TEST
|
|||||||
|
|
||||||
|
|
||||||
static test_service_t rtests[] = {
|
static test_service_t rtests[] = {
|
||||||
{ "GET", 1, "localhost", 6544, "/", NULL, NULL, 0, NULL, 0, 200 },
|
{ "GET", "localhost", 6544, "/", NULL, NULL, 0, NULL, 0, 200 },
|
||||||
{ "GET", 1, "localhost", 6544, "/", NULL, NULL, 0, NULL, 0, 204 },
|
{ "GET", "localhost", 6544, "/", NULL, NULL, 0, NULL, 0, 204 },
|
||||||
{ "GET", 1, "localhost", 6544, "/", NULL, NULL, 0, NULL, 0, 400 },
|
{ "GET", "localhost", 6544, "/", NULL, NULL, 0, NULL, 0, 400 },
|
||||||
{ "GET", 1, "localhost", 6544, "/", NULL, NULL, 0, NULL, 0, 404 },
|
{ "GET", "localhost", 6544, "/", NULL, NULL, 0, NULL, 0, 404 },
|
||||||
{ "GET", 1, "localhost", 6544, "/", NULL, NULL, 0, NULL, 0, 500 },
|
{ "GET", "localhost", 6544, "/", NULL, NULL, 0, NULL, 0, 500 },
|
||||||
};
|
};
|
||||||
|
|
||||||
START_TEST(test_response_code)
|
START_TEST(test_response_code)
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ TEST_SUITE_DEPEND(rsa_oaep_sha512_suite_create, PRIVKEY_DECRYPT, ENCRYPT_RSA_OAE
|
|||||||
TEST_SUITE_DEPEND(certpolicy_suite_create, CERT_ENCODE, CERT_X509)
|
TEST_SUITE_DEPEND(certpolicy_suite_create, CERT_ENCODE, CERT_X509)
|
||||||
TEST_SUITE_DEPEND(certnames_suite_create, CERT_ENCODE, CERT_X509)
|
TEST_SUITE_DEPEND(certnames_suite_create, CERT_ENCODE, CERT_X509)
|
||||||
TEST_SUITE_DEPEND(serial_gen_suite_create, CERT_ENCODE, CERT_X509)
|
TEST_SUITE_DEPEND(serial_gen_suite_create, CERT_ENCODE, CERT_X509)
|
||||||
TEST_SUITE(serial_parse_suite_create)
|
TEST_SUITE_DEPEND(serial_parse_suite_create, CERT_DECODE, CERT_X509)
|
||||||
TEST_SUITE(host_suite_create)
|
TEST_SUITE(host_suite_create)
|
||||||
TEST_SUITE(printf_suite_create)
|
TEST_SUITE(printf_suite_create)
|
||||||
TEST_SUITE(auth_cfg_suite_create)
|
TEST_SUITE(auth_cfg_suite_create)
|
||||||
|
|||||||
@@ -563,16 +563,6 @@ static char *whitelist[] = {
|
|||||||
"xmlInitParserCtxt",
|
"xmlInitParserCtxt",
|
||||||
/* libcurl */
|
/* libcurl */
|
||||||
"Curl_client_write",
|
"Curl_client_write",
|
||||||
/* libsoup */
|
|
||||||
"soup_add_timeout",
|
|
||||||
"soup_headers_parse_response",
|
|
||||||
"soup_message_headers_append",
|
|
||||||
"soup_message_headers_clear",
|
|
||||||
"soup_message_headers_get_list",
|
|
||||||
"soup_message_headers_get_one",
|
|
||||||
"soup_session_abort",
|
|
||||||
"soup_session_get_type",
|
|
||||||
"soup_session_remove_feature",
|
|
||||||
/* libldap */
|
/* libldap */
|
||||||
"ldap_int_initialize",
|
"ldap_int_initialize",
|
||||||
/* ClearSilver */
|
/* ClearSilver */
|
||||||
|
|||||||
Reference in New Issue
Block a user