sb118: merged in DEV300_m71
This commit is contained in:
commit
0ddead3f82
4 changed files with 182 additions and 99 deletions
|
@ -1,4 +1,4 @@
|
|||
lcairo cairo : zlib soltools NULL
|
||||
lcairo cairo : ZLIB:zlib soltools NULL
|
||||
lcairo cairo usr1 - all lcairo_mkout NULL
|
||||
lcairo cairo\pixman nmake - all lcairo_pixman NULL
|
||||
lcairo cairo\cairo nmake - all lcairo_cairo lcairo_pixman NULL
|
||||
|
|
|
@ -68,6 +68,12 @@ TARGET=so_graphite
|
|||
|
||||
.INCLUDE : settings.mk
|
||||
|
||||
.IF "$(SYSTEM_GRAPHITE)" == "YES"
|
||||
all:
|
||||
@echo "An already available installation of silgraphite should exist on your system."
|
||||
@echo "Therefore the version provided here does not need to be built in addition."
|
||||
.ENDIF
|
||||
|
||||
# --- Files --------------------------------------------------------
|
||||
.IF "$(ENABLE_GRAPHITE)"=="TRUE"
|
||||
TARFILE_NAME=silgraphite-2.3.1
|
||||
|
|
|
@ -62,8 +62,8 @@ PATCH_FILES=neon.patch
|
|||
.ENDIF
|
||||
|
||||
ADDITIONAL_FILES=src$/makefile.mk src$/config.h src$/ne_ntlm.h src$/ne_ntlm.c
|
||||
|
||||
BUILD_DIR=src
|
||||
|
||||
BUILD_ACTION=dmake $(MFLAGS) $(CALLMACROS)
|
||||
|
||||
OUT2INC= \
|
||||
|
@ -71,6 +71,7 @@ OUT2INC= \
|
|||
$(BUILD_DIR)$/ne_alloc.h \
|
||||
$(BUILD_DIR)$/ne_auth.h \
|
||||
$(BUILD_DIR)$/ne_basic.h \
|
||||
$(BUILD_DIR)$/ne_compress.h \
|
||||
$(BUILD_DIR)$/ne_defs.h \
|
||||
$(BUILD_DIR)$/ne_locks.h \
|
||||
$(BUILD_DIR)$/ne_props.h \
|
||||
|
|
190
neon/neon.patch
190
neon/neon.patch
|
@ -1,6 +1,6 @@
|
|||
--- misc/neon-0.28.2/src/config.h 2009-09-29 10:28:26.750000000 +0200
|
||||
+++ misc/build/neon-0.28.2/src/config.h 2009-09-29 10:22:51.890625000 +0200
|
||||
@@ -1 +1,484 @@
|
||||
--- misc/neon-0.28.2/src/config.h 2010-01-08 11:51:21.000000000 +0100
|
||||
+++ misc/build/neon-0.28.2/src/config.h 2010-01-08 11:53:42.000000000 +0100
|
||||
@@ -1 +1,488 @@
|
||||
-dummy
|
||||
+
|
||||
+/* Define to specific EGD socket path */
|
||||
|
@ -132,14 +132,14 @@
|
|||
+#endif
|
||||
+
|
||||
+/* Define if OpenSSL support is enabled */
|
||||
+/* #undef HAVE_OPENSSL */
|
||||
+#define HAVE_OPENSSL
|
||||
+#define HAVE_OPENSSL 1
|
||||
+
|
||||
+/* Define to 1 if you have the <openssl/opensslv.h> header file. */
|
||||
+/* #undef HAVE_OPENSSL_OPENSSLV_H */
|
||||
+#define HAVE_OPENSSL_OPENSSLV_H 1
|
||||
+
|
||||
+/* Define to 1 if you have the <openssl/ssl.h> header file. */
|
||||
+/* #undef HAVE_OPENSSL_SSL_H */
|
||||
+#define HAVE_OPENSSL_SSL_H 1
|
||||
+
|
||||
+/* Define to 1 if you have the `pipe' function. */
|
||||
+#define HAVE_PIPE 1
|
||||
+
|
||||
|
@ -340,13 +340,13 @@
|
|||
+/* #undef NE_HAVE_SOCKS */
|
||||
+
|
||||
+/* Defined if SSL is supported */
|
||||
+/* #undef NE_HAVE_SSL */
|
||||
+#define NE_HAVE_SSL
|
||||
+
|
||||
+/* Defined if TS_SSL is supported */
|
||||
+/* #undef NE_HAVE_TS_SSL */
|
||||
+
|
||||
+/* Defined if ZLIB is supported */
|
||||
+/* #undef NE_HAVE_ZLIB */
|
||||
+#define NE_HAVE_ZLIB 1
|
||||
+
|
||||
+/* Define to be filename of an SSL CA root bundle */
|
||||
+/* #undef NE_SSL_CA_BUNDLE */
|
||||
|
@ -455,6 +455,10 @@
|
|||
+/* Define to `unsigned' if <sys/types.h> does not define. */
|
||||
+/* #undef size_t */
|
||||
+
|
||||
+/* MS IIS does not send Lock-Token response header after creation of a */
|
||||
+/* new lock. This violates RFC, but... if we want to talk with this */
|
||||
+/* beast we need a workaround */
|
||||
+#define IIS_LOCK_BUG_WORKAROUND 1
|
||||
+
|
||||
+/* Enable leak-tracking versions of ne_*alloc when NEON_MEMLEAK is enabled */
|
||||
+#ifdef NEON_MEMLEAK
|
||||
|
@ -486,9 +490,9 @@
|
|||
+#else
|
||||
+#define HAVE_NTLM 1
|
||||
+#endif
|
||||
--- misc/neon-0.28.2/src/makefile.mk 2009-09-29 10:28:26.687500000 +0200
|
||||
+++ misc/build/neon-0.28.2/src/makefile.mk 2009-09-17 13:04:18.031250000 +0200
|
||||
@@ -1 +1,92 @@
|
||||
--- misc/neon-0.28.2/src/makefile.mk 2010-01-08 11:51:21.000000000 +0100
|
||||
+++ misc/build/neon-0.28.2/src/makefile.mk 2010-01-08 11:53:27.000000000 +0100
|
||||
@@ -1 +1,100 @@
|
||||
-dummy
|
||||
+PRJ=..$/..$/..$/..$/..
|
||||
+
|
||||
|
@ -497,7 +501,7 @@
|
|||
+LIBTARGET=NO
|
||||
+USE_DEFFILE=TRUE
|
||||
+EXTERNAL_WARNINGS_NOT_ERRORS := TRUE
|
||||
+ UWINAPILIB=
|
||||
+UWINAPILIB=
|
||||
+
|
||||
+# --- Settings -----------------------------------------------------
|
||||
+
|
||||
|
@ -508,7 +512,7 @@
|
|||
+CDEFS+=-DHAVE_CONFIG_H
|
||||
+
|
||||
+.IF "$(SYSTEM_LIBXML)" == "YES"
|
||||
+CFLAGS+= -DSYSTEM_LIBXML $(LIBXML_CFLAGS)
|
||||
+CFLAGS+=-DSYSTEM_LIBXML $(LIBXML_CFLAGS)
|
||||
+.ELSE
|
||||
+LIBXMLINCDIR=external$/libxml
|
||||
+CFLAGS+= -I$(SOLARINCDIR)$/$(LIBXMLINCDIR)
|
||||
|
@ -518,6 +522,13 @@
|
|||
+CFLAGS+= $(OPENSSL_CFLAGS)
|
||||
+.ENDIF
|
||||
+
|
||||
+.IF "$(SYSTEM_ZLIB)" == "YES"
|
||||
+CFLAGS+=-DSYSTEM_ZLIB
|
||||
+.ELSE
|
||||
+ZLIBINCDIR=external$/zlib
|
||||
+CFLAGS+=-I$(SOLARINCDIR)$/$(ZLIBINCDIR)
|
||||
+.ENDIF
|
||||
+
|
||||
+SLOFILES= \
|
||||
+ $(SLO)$/ne_207.obj \
|
||||
+ $(SLO)$/ne_acl.obj \
|
||||
|
@ -555,7 +566,8 @@
|
|||
+SHL1VERSIONMAP=exports.map
|
||||
+SHL1IMPLIB=i$(TARGET)
|
||||
+
|
||||
+SHL1STDLIBS+= $(LIBXML2LIB)
|
||||
+SHL1STDLIBS+= $(LIBXML2LIB) \
|
||||
+ $(ZLIB3RDLIB)
|
||||
+
|
||||
+.IF "$(GUI)"=="WNT"
|
||||
+ SHL1STDLIBS+= $(WSOCK32LIB)
|
||||
|
@ -583,7 +595,7 @@
|
|||
+DEF1NAME=$(SHL1TARGET)
|
||||
+.INCLUDE : target.mk
|
||||
--- misc/neon-0.28.2/src/ne_auth.c 2008-02-29 17:30:12.000000000 +0100
|
||||
+++ misc/build/neon-0.28.2/src/ne_auth.c 2009-09-29 10:22:51.906250000 +0200
|
||||
+++ misc/build/neon-0.28.2/src/ne_auth.c 2010-01-08 11:30:06.000000000 +0100
|
||||
@@ -77,6 +77,10 @@
|
||||
#include "ne_sspi.h"
|
||||
#endif
|
||||
|
@ -627,7 +639,7 @@
|
|||
chall->handler->attempt++, sess->username, pwbuf) == 0) {
|
||||
return 0;
|
||||
} else {
|
||||
@@ -598,9 +611,10 @@
|
||||
@@ -598,7 +611,8 @@
|
||||
int ntlm = ne_strcasecmp(parms->protocol->name, "NTLM") == 0;
|
||||
int status;
|
||||
char *response = NULL;
|
||||
|
@ -635,11 +647,8 @@
|
|||
+ char password[NE_ABUFSIZ];
|
||||
+
|
||||
NE_DEBUG(NE_DBG_HTTPAUTH, "auth: SSPI challenge.\n");
|
||||
-
|
||||
+
|
||||
if (!sess->sspi_context) {
|
||||
ne_uri uri = {0};
|
||||
|
||||
if (!sess->sspi_context) {
|
||||
@@ -614,8 +628,17 @@
|
||||
return status;
|
||||
}
|
||||
|
@ -685,7 +694,7 @@
|
|||
+
|
||||
+ NE_DEBUG(NE_DBG_HTTPAUTH, "auth: NTLM challenge.\n");
|
||||
+
|
||||
+ if (!parms->opaque) {
|
||||
+ if (!parms->opaque && (!sess->ntlm_context || (attempt > 1))) {
|
||||
+ char password[NE_ABUFSIZ];
|
||||
+
|
||||
+ if (get_credentials(sess, errmsg, attempt, parms, password)) {
|
||||
|
@ -747,7 +756,7 @@
|
|||
return ret;
|
||||
}
|
||||
--- misc/neon-0.28.2/src/ne_auth.h 2007-12-05 17:39:58.000000000 +0100
|
||||
+++ misc/build/neon-0.28.2/src/ne_auth.h 2009-09-29 10:22:51.921875000 +0200
|
||||
+++ misc/build/neon-0.28.2/src/ne_auth.h 2010-01-08 11:30:07.000000000 +0100
|
||||
@@ -47,8 +47,8 @@
|
||||
* Hint: if you just wish to attempt authentication just once (even if
|
||||
* the user gets the username/password wrong), have the callback
|
||||
|
@ -760,7 +769,7 @@
|
|||
/* Set callbacks to provide credentials for server and proxy
|
||||
* authentication, using the default set of authentication protocols.
|
||||
--- misc/neon-0.28.2/src/ne_defs.h 2006-10-24 21:40:09.000000000 +0200
|
||||
+++ misc/build/neon-0.28.2/src/ne_defs.h 2009-09-29 10:22:51.921875000 +0200
|
||||
+++ misc/build/neon-0.28.2/src/ne_defs.h 2010-01-08 11:30:07.000000000 +0100
|
||||
@@ -41,7 +41,7 @@
|
||||
#endif
|
||||
|
||||
|
@ -770,8 +779,76 @@
|
|||
#define ssize_t int
|
||||
#endif
|
||||
|
||||
--- misc/neon-0.28.2/src/ne_locks.c 2007-02-05 11:09:27.000000000 +0100
|
||||
+++ misc/build/neon-0.28.2/src/ne_locks.c 2010-01-08 11:30:06.000000000 +0100
|
||||
@@ -579,6 +579,23 @@
|
||||
const char *token = ne_get_response_header(ctx->req, "Lock-Token");
|
||||
/* at the root element; retrieve the Lock-Token header,
|
||||
* and bail if it wasn't given. */
|
||||
+#ifdef IIS_LOCK_BUG_WORKAROUND
|
||||
+ /* MS IIS violates RFC 2518/4918. It does not send a Lock-Token response
|
||||
+ header upon successful creation of a new lock. As a workaround, we
|
||||
+ will try to pick the lock token from the response body (although
|
||||
+ this is not 100% safe in case of multiple activelocks). */
|
||||
+ if (token == NULL)
|
||||
+ NE_DEBUG(NE_DBG_LOCKS,
|
||||
+ "Ignoring missing LOCK response Lock-Token header\n");
|
||||
+
|
||||
+ if (token != NULL) {
|
||||
+ if (token[0] == '<') token++;
|
||||
+ ctx->token = ne_strdup(token);
|
||||
+ ne_shave(ctx->token, ">");
|
||||
+ NE_DEBUG(NE_DBG_LOCKS, "lk_startelm: Finding token %s\n",
|
||||
+ ctx->token);
|
||||
+ }
|
||||
+#else
|
||||
if (token == NULL) {
|
||||
ne_xml_set_error(ctx->parser,
|
||||
_("LOCK response missing Lock-Token header"));
|
||||
@@ -590,12 +607,28 @@
|
||||
ne_shave(ctx->token, ">");
|
||||
NE_DEBUG(NE_DBG_LOCKS, "lk_startelm: Finding token %s\n",
|
||||
ctx->token);
|
||||
+#endif
|
||||
}
|
||||
|
||||
/* TODO: only accept 'prop' as root for LOCK response */
|
||||
if (!can_accept(parent, id))
|
||||
return NE_XML_DECLINE;
|
||||
|
||||
+#ifdef IIS_LOCK_BUG_WORKAROUND
|
||||
+ if (id == ELM_activelock && ctx->found) {
|
||||
+ /* Found another activelock... */
|
||||
+ const char *token = ne_get_response_header(ctx->req, "Lock-Token");
|
||||
+ if (token == NULL) {
|
||||
+ /* Response contains more than one activelock and no Lock-Token
|
||||
+ * response header. We are doomed. No safe workaround for IIS
|
||||
+ * lock bug possible. */
|
||||
+ ne_xml_set_error(ctx->parser,
|
||||
+ _("LOCK response missing Lock-Token header and more than one activelock"));
|
||||
+ return NE_XML_ABORT;
|
||||
+ }
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
if (id == ELM_activelock && !ctx->found) {
|
||||
/* a new activelock */
|
||||
ne_lock_free(&ctx->active);
|
||||
@@ -621,7 +654,12 @@
|
||||
return -1;
|
||||
|
||||
if (state == ELM_activelock) {
|
||||
+#ifdef IIS_LOCK_BUG_WORKAROUND
|
||||
+ if (ctx->active.token) {
|
||||
+ ctx->token = ne_strdup(ctx->active.token);
|
||||
+#else
|
||||
if (ctx->active.token && strcmp(ctx->active.token, ctx->token) == 0) {
|
||||
+#endif
|
||||
ctx->found = 1;
|
||||
}
|
||||
}
|
||||
--- misc/neon-0.28.2/src/ne_locks.h 2006-01-02 12:43:19.000000000 +0100
|
||||
+++ misc/build/neon-0.28.2/src/ne_locks.h 2009-09-29 10:22:51.921875000 +0200
|
||||
+++ misc/build/neon-0.28.2/src/ne_locks.h 2010-01-08 11:30:07.000000000 +0100
|
||||
@@ -22,6 +22,10 @@
|
||||
#ifndef NE_LOCKS_H
|
||||
#define NE_LOCKS_H
|
||||
|
@ -783,9 +860,9 @@
|
|||
#include "ne_request.h" /* for ne_session + ne_request */
|
||||
#include "ne_uri.h" /* for ne_uri */
|
||||
|
||||
--- misc/neon-0.28.2/src/ne_ntlm.c 2009-09-29 10:28:26.875000000 +0200
|
||||
+++ misc/build/neon-0.28.2/src/ne_ntlm.c 2009-09-29 10:22:51.937500000 +0200
|
||||
@@ -1 +1,700 @@
|
||||
--- misc/neon-0.28.2/src/ne_ntlm.c 2010-01-08 11:51:21.000000000 +0100
|
||||
+++ misc/build/neon-0.28.2/src/ne_ntlm.c 2010-01-08 11:53:52.000000000 +0100
|
||||
@@ -1 +1,703 @@
|
||||
-dummy
|
||||
+/*
|
||||
+ Handling of NTLM Authentication
|
||||
|
@ -1458,6 +1535,9 @@
|
|||
+ if (context == NULL) {
|
||||
+ return -1;
|
||||
+ } else {
|
||||
+ if (!responseToken && (context->state == NTLMSTATE_TYPE3))
|
||||
+ context->state = NTLMSTATE_NONE;
|
||||
+
|
||||
+ if (context->state <= NTLMSTATE_TYPE3) {
|
||||
+ ntlm ntlmstatus = ne_input_ntlm(context, responseToken);
|
||||
+
|
||||
|
@ -1487,8 +1567,8 @@
|
|||
+
|
||||
+#endif /* HAVE_OPENSSL */
|
||||
+#endif /* HAVE_NTLM */
|
||||
--- misc/neon-0.28.2/src/ne_ntlm.h 2009-09-29 10:28:26.812500000 +0200
|
||||
+++ misc/build/neon-0.28.2/src/ne_ntlm.h 2009-09-29 10:22:51.937500000 +0200
|
||||
--- misc/neon-0.28.2/src/ne_ntlm.h 2010-01-08 11:51:21.000000000 +0100
|
||||
+++ misc/build/neon-0.28.2/src/ne_ntlm.h 2010-01-08 11:53:52.000000000 +0100
|
||||
@@ -1 +1,44 @@
|
||||
-dummy
|
||||
+/*
|
||||
|
@ -1536,7 +1616,7 @@
|
|||
+
|
||||
+#endif /* NE_NTLM_H */
|
||||
--- misc/neon-0.28.2/src/ne_socket.c 2008-02-28 14:19:19.000000000 +0100
|
||||
+++ misc/build/neon-0.28.2/src/ne_socket.c 2009-09-29 10:22:51.953125000 +0200
|
||||
+++ misc/build/neon-0.28.2/src/ne_socket.c 2010-01-08 11:30:06.000000000 +0100
|
||||
@@ -60,6 +60,7 @@
|
||||
#include <stddef.h>
|
||||
#ifdef USE_GETADDRINFO
|
||||
|
@ -1546,15 +1626,11 @@
|
|||
#endif
|
||||
|
||||
--- misc/neon-0.28.2/src/ne_sspi.c 2007-08-10 17:26:08.000000000 +0200
|
||||
+++ misc/build/neon-0.28.2/src/ne_sspi.c 2009-09-29 10:22:51.953125000 +0200
|
||||
@@ -202,9 +202,48 @@
|
||||
return -1;
|
||||
+++ misc/build/neon-0.28.2/src/ne_sspi.c 2010-01-08 11:30:07.000000000 +0100
|
||||
@@ -206,6 +206,45 @@
|
||||
}
|
||||
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+/*
|
||||
/*
|
||||
+ * Simplification wrapper arround AcquireCredentialsHandle as most of
|
||||
+ * the parameters do not change.
|
||||
+ */
|
||||
|
@ -1589,13 +1665,14 @@
|
|||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
/*
|
||||
+
|
||||
+/*
|
||||
* Wrapper arround initializeSecurityContext. Supplies several
|
||||
* default parameters as well as logging in case of errors.
|
||||
*/
|
||||
@@ -483,7 +522,7 @@
|
||||
* Processes received authentication tokens as well as supplies the
|
||||
* response token.
|
||||
|
@ -1605,11 +1682,17 @@
|
|||
{
|
||||
SecBufferDesc outBufferDesc;
|
||||
SecBuffer outBuffer;
|
||||
@@ -560,14 +599,23 @@
|
||||
|
||||
@@ -561,13 +600,22 @@
|
||||
/* Reset any existing context since we are starting over */
|
||||
resetContext(sspiContext);
|
||||
+
|
||||
|
||||
- if (acquireCredentialsHandle
|
||||
- (&sspiContext->credentials, sspiContext->mechanism) != SEC_E_OK) {
|
||||
- freeBuffer(&outBufferDesc);
|
||||
- NE_DEBUG(NE_DBG_HTTPAUTH,
|
||||
- "sspi: acquireCredentialsHandle failed.\n");
|
||||
- return -1;
|
||||
- }
|
||||
+ if (strlen(username) != 0) {
|
||||
+ if (acquireCredentialsHandleForUsername
|
||||
+ (&sspiContext->credentials, sspiContext->mechanism, username, password) != SEC_E_OK) {
|
||||
|
@ -1625,19 +1708,12 @@
|
|||
+ return -1;
|
||||
+ }
|
||||
+ }
|
||||
|
||||
- if (acquireCredentialsHandle
|
||||
- (&sspiContext->credentials, sspiContext->mechanism) != SEC_E_OK) {
|
||||
- freeBuffer(&outBufferDesc);
|
||||
- NE_DEBUG(NE_DBG_HTTPAUTH,
|
||||
- "sspi: acquireCredentialsHandle failed.\n");
|
||||
- return -1;
|
||||
- }
|
||||
+
|
||||
|
||||
securityStatus =
|
||||
initializeSecurityContext(&sspiContext->credentials, NULL,
|
||||
--- misc/neon-0.28.2/src/ne_sspi.h 2006-02-12 13:05:14.000000000 +0100
|
||||
+++ misc/build/neon-0.28.2/src/ne_sspi.h 2009-09-29 10:22:51.968750000 +0200
|
||||
+++ misc/build/neon-0.28.2/src/ne_sspi.h 2010-01-08 11:30:06.000000000 +0100
|
||||
@@ -41,7 +41,7 @@
|
||||
int ne_sspi_clear_context(void *context);
|
||||
|
||||
|
@ -1648,7 +1724,7 @@
|
|||
#endif /* HAVE_SSPI */
|
||||
|
||||
--- misc/neon-0.28.2/src/ne_uri.c 2007-12-05 12:04:47.000000000 +0100
|
||||
+++ misc/build/neon-0.28.2/src/ne_uri.c 2009-09-29 10:22:51.968750000 +0200
|
||||
+++ misc/build/neon-0.28.2/src/ne_uri.c 2010-01-08 11:30:06.000000000 +0100
|
||||
@@ -42,7 +42,7 @@
|
||||
#include "ne_alloc.h"
|
||||
#include "ne_uri.h"
|
||||
|
@ -1695,7 +1771,7 @@
|
|||
/* 4x */ AT, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
|
||||
/* 5x */ AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, GD, OT, GD, OT, US,
|
||||
--- misc/neon-0.28.2/src/ne_utils.c 2006-03-07 10:36:43.000000000 +0100
|
||||
+++ misc/build/neon-0.28.2/src/ne_utils.c 2009-09-29 10:22:51.984375000 +0200
|
||||
+++ misc/build/neon-0.28.2/src/ne_utils.c 2010-01-08 11:30:06.000000000 +0100
|
||||
@@ -118,6 +118,9 @@
|
||||
#ifdef HAVE_GNUTLS
|
||||
", GNU TLS " LIBGNUTLS_VERSION
|
||||
|
@ -1726,7 +1802,7 @@
|
|||
#endif /* NE_HAVE_* */
|
||||
default:
|
||||
--- misc/neon-0.28.2/src/ne_utils.h 2007-07-16 08:54:57.000000000 +0200
|
||||
+++ misc/build/neon-0.28.2/src/ne_utils.h 2009-09-29 10:22:51.984375000 +0200
|
||||
+++ misc/build/neon-0.28.2/src/ne_utils.h 2010-01-08 11:30:07.000000000 +0100
|
||||
@@ -54,6 +54,7 @@
|
||||
#define NE_FEATURE_SOCKS (5) /* SOCKSv5 support */
|
||||
#define NE_FEATURE_TS_SSL (6) /* Thread-safe SSL/TLS support */
|
||||
|
|
Loading…
Reference in a new issue