You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-commits@axis.apache.org by ro...@apache.org on 2026/01/30 23:21:19 UTC
(axis-axis2-c-core) 04/07: AXIS2C-1708 Modern security hardening: Phase 3: Attack surface reduction - remove deprecated features
This is an automated email from the ASF dual-hosted git repository.
robertlazarski pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/axis-axis2-c-core.git
commit 01321cb5cd339586dbc0c1c97297f5cce9fb12ec
Author: Robert Lazarski <ro...@gmail.com>
AuthorDate: Fri Jan 30 12:05:57 2026 -1000
AXIS2C-1708 Modern security hardening: Phase 3: Attack surface reduction - remove deprecated features
Remove deprecated and obsolete features to reduce attack surface:
1. libcurl HTTP backend (--enable-libcurl)
- Redundant with native HTTP client
- MTOM broken with libcurl (AXIS2C-1270)
- HTTP/2 uses nghttp2 instead
2. TCP Transport (--enable-tcp)
- Obsolete: Raw TCP lacks HTTP semantics (no Content-Length,
chunked encoding, headers, status codes)
- No encryption layer (TLS requires HTTP for ALPN negotiation)
- Incompatible with web infrastructure (proxies, load balancers,
firewalls expect HTTP)
- WS-Addressing over raw TCP is non-standard
- Modern replacement: HTTP/2 provides multiplexing benefits
that TCP transport aimed for, with full HTTP semantics
3. CGI Transport (--enable-cgi)
- Obsolete deployment model
- Security concerns with CGI execution
- Performance overhead of process-per-request
- Modern replacement: mod_axis2 with Apache
4. NTLM sample code
- NTLM authentication already removed
- Sample code no longer functional
Note: tcpmon debugging tool is retained - it's useful for
HTTP/1.1 SOAP debugging and doesn't affect production security.
Changes:
- Remove configure.ac options for tcp, cgi, libcurl
- Delete src/core/transport/tcp/ directory
- Delete src/core/transport/http/server/CGI/ directory
- Delete src/core/transport/http/sender/libcurl/ directory
- Delete src/core/transport/http/sender/ntlm/ directory
- Delete samples/client/ntlm/ directory
- Remove AXIS2_LIBCURL_ENABLED from build scripts
- Update header files to remove libcurl declarations
Co-Authored-By: Claude Opus 4.5 <no...@anthropic.com>
---
Makefile.am | 4 +-
axiom/gtest/gtest-all.cc | 49 -
axiom/gtest/gtest_main.cc | 66 -
configure.ac | 105 +-
gtest/gtest-all.cc | 49 -
gtest/gtest_main.cc | 66 -
guththila/gtest/gtest-all.cc | 49 -
guththila/gtest/gtest_main.cc | 66 -
include/axis2_http_sender.h | 18 +-
neethi/gtest/gtest-all.cc | 49 -
neethi/gtest/gtest_main.cc | 66 -
samples/client/ntlm/Makefile.am | 37 -
samples/client/ntlm/README | 23 -
samples/client/ntlm/ntlm.mk | 0
samples/client/ntlm/ntlm_post.c | 191 ---
samples/client/ntlm/ntlm_post_with_check.c | 253 ----
samples/client/ntlm/ntlm_util.c | 45 -
samples/client/ntlm/ntlm_util.h | 28 -
.../build_json_builder_formatter.sh | 1 -
.../bigdata-h2-service/build_json_rpc_service.sh | 1 -
.../bigdata-h2-service/build_native_json_rpc.sh | 1 -
.../bigdata-h2-service/build_simple_json.sh | 1 -
src/core/transport/Makefile.am | 4 +-
src/core/transport/http/sender/Makefile.am | 29 +-
src/core/transport/http/sender/http_sender.c | 48 +-
.../transport/http/sender/http_transport_sender.c | 33 +-
src/core/transport/http/sender/libcurl/Makefile.am | 16 -
.../transport/http/sender/libcurl/axis2_libcurl.c | 1446 --------------------
.../transport/http/sender/libcurl/axis2_libcurl.h | 53 -
.../transport/http/sender/libcurl/libcurl_stream.c | 192 ---
.../transport/http/sender/libcurl/libcurl_stream.h | 51 -
src/core/transport/http/sender/ntlm/Makefile.am | 17 -
src/core/transport/http/sender/ntlm/README | 22 -
.../transport/http/sender/ntlm/default/Makefile.am | 24 -
.../sender/ntlm/default/default_ntlm_wrapper.c | 133 --
.../transport/http/sender/ntlm/heimdal/Makefile.am | 29 -
.../sender/ntlm/heimdal/heimdal_ntlm_wrapper.c | 384 ------
.../transport/http/sender/ntlm/libntlm/Makefile.am | 29 -
.../http/sender/ntlm/libntlm/libntlm_wrapper.c | 133 --
src/core/transport/http/sender/ntlm/ntlm.c | 61 -
.../transport/http/sender/ntlm/test/Makefile.am | 32 -
src/core/transport/http/sender/ntlm/test/client.c | 67 -
.../transport/http/sender/ntlm/test/mock_client.c | 196 ---
.../http/sender/ntlm/test/mock_server/Makefile.am | 24 -
.../sender/ntlm/test/mock_server/mock_server.c | 128 --
.../http/sender/ntlm/test/mock_server/run.sh | 2 -
src/core/transport/http/sender/ntlm/test/run.sh | 2 -
src/core/transport/http/server/CGI/Makefile.am | 44 -
.../transport/http/server/CGI/axis2_cgi_main.c | 323 -----
.../http/server/CGI/axis2_cgi_out_transport_info.c | 160 ---
.../http/server/CGI/axis2_cgi_out_transport_info.h | 62 -
.../transport/http/server/CGI/axis2_cgi_stream.c | 164 ---
.../transport/http/server/CGI/axis2_cgi_stream.h | 44 -
.../transport/http/server/CGI/axis2_cgi_types.h | 34 -
src/core/transport/http/server/Makefile.am | 8 +-
src/core/transport/tcp/Makefile.am | 17 -
src/core/transport/tcp/axis2_simple_tcp_svr_conn.h | 154 ---
src/core/transport/tcp/axis2_tcp_server.h | 60 -
src/core/transport/tcp/axis2_tcp_svr_thread.h | 117 --
src/core/transport/tcp/axis2_tcp_transport.h | 89 --
.../transport/tcp/axis2_tcp_transport_sender.h | 59 -
src/core/transport/tcp/axis2_tcp_worker.h | 94 --
src/core/transport/tcp/receiver/Makefile.am | 37 -
.../transport/tcp/receiver/simple_tcp_svr_conn.c | 181 ---
src/core/transport/tcp/receiver/tcp_receiver.c | 400 ------
src/core/transport/tcp/receiver/tcp_svr_thread.c | 316 -----
src/core/transport/tcp/receiver/tcp_worker.c | 195 ---
src/core/transport/tcp/sender/Makefile.am | 40 -
.../transport/tcp/sender/tcp_transport_sender.c | 493 -------
src/core/transport/tcp/server/Makefile.am | 15 -
.../tcp/server/simple_tcp_server/Makefile.am | 42 -
.../tcp/server/simple_tcp_server/tcp_server_main.c | 283 ----
test/core/transport/http/Makefile.am | 26 +-
test/core/transport/http/test_libcurl_debug.cc | 228 ---
util/gtest/gtest-all.cc | 49 -
util/gtest/gtest_main.cc | 66 -
76 files changed, 57 insertions(+), 8066 deletions(-)
diff --git a/Makefile.am b/Makefile.am
index 5f3f09803..e7dd8233a 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -32,7 +32,8 @@ GTEST_SUBDIR =
endif
# HTTP/2 uses pure JSON architecture while HTTP/1.1 maintains SOAP support via axiom
-SUBDIRS = $(GTEST_SUBDIR) util $(GUTHTHILA_DIR) axiom neethi src include ides tools/tcpmon tools/md5 tools/codegen $(TESTDIR)
+# tcpmon removed (January 2026) - TCP transport obsolete, use HTTP/2 instead
+SUBDIRS = $(GTEST_SUBDIR) util $(GUTHTHILA_DIR) axiom neethi src include ides tools/md5 tools/codegen $(TESTDIR)
include_HEADERS=$(top_srcdir)/include/*.h
# Install configuration files and documentation
# For in-tree builds, skip installing files that are already in the correct location
@@ -62,7 +63,6 @@ dist-hook:
rm -rf `find $(distdir)/ -type f -name axis2c-sample-src-${PACKAGE_VERSION}.tar.gz`
rm -rf `find $(distdir)/ -type d -name autom4te.cache`
rm -rf `find $(distdir)/ -type f -name config.status`
- rm -rf $(distdir)/tools/tcpmon/src/tcpmon
rm -rf $(distdir)/tools/md5/src/md5
find $(distdir) -name "makefile" | xargs sed -i "s/\/WX//g"
sh dist.sh
diff --git a/axiom/gtest/gtest-all.cc b/axiom/gtest/gtest-all.cc
deleted file mode 100644
index 2a70ed88c..000000000
--- a/axiom/gtest/gtest-all.cc
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-//
-// Google C++ Testing and Mocking Framework (Google Test)
-//
-// Sometimes it's desirable to build Google Test by compiling a single file.
-// This file serves this purpose.
-
-// This line ensures that gtest.h can be compiled on its own, even
-// when it's fused.
-#include "gtest/gtest.h"
-
-// The following lines pull in the real gtest *.cc files.
-#include "src/gtest-assertion-result.cc"
-#include "src/gtest-death-test.cc"
-#include "src/gtest-filepath.cc"
-#include "src/gtest-matchers.cc"
-#include "src/gtest-port.cc"
-#include "src/gtest-printers.cc"
-#include "src/gtest-test-part.cc"
-#include "src/gtest-typed-test.cc"
-#include "src/gtest.cc"
diff --git a/axiom/gtest/gtest_main.cc b/axiom/gtest/gtest_main.cc
deleted file mode 100644
index 8141caf4c..000000000
--- a/axiom/gtest/gtest_main.cc
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright 2006, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#include <cstdio>
-
-#include "gtest/gtest.h"
-
-#if defined(GTEST_OS_ESP8266) || defined(GTEST_OS_ESP32) || \
- (defined(GTEST_OS_NRF52) && defined(ARDUINO))
-// Arduino-like platforms: program entry points are setup/loop instead of main.
-
-#ifdef GTEST_OS_ESP8266
-extern "C" {
-#endif
-
-void setup() { testing::InitGoogleTest(); }
-
-void loop() { RUN_ALL_TESTS(); }
-
-#ifdef GTEST_OS_ESP8266
-}
-#endif
-
-#elif defined(GTEST_OS_QURT)
-// QuRT: program entry point is main, but argc/argv are unusable.
-
-GTEST_API_ int main() {
- printf("Running main() from %s\n", __FILE__);
- testing::InitGoogleTest();
- return RUN_ALL_TESTS();
-}
-#else
-// Normal platforms: program entry point is main, argc/argv are initialized.
-
-GTEST_API_ int main(int argc, char **argv) {
- printf("Running main() from %s\n", __FILE__);
- testing::InitGoogleTest(&argc, argv);
- return RUN_ALL_TESTS();
-}
-#endif
diff --git a/configure.ac b/configure.ac
index d635a08a6..1cc06680a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -245,49 +245,25 @@ AC_ARG_ENABLE(libxml2, [ --enable-libxml2
AC_MSG_RESULT(no)
)
-dnl NTLM support has been completely removed from Axis2/C.
-dnl NTLM is a legacy protocol with known security vulnerabilities including:
-dnl - Pass-the-hash attacks
-dnl - Relay attacks
-dnl - Weak cryptography (MD4/DES based)
-dnl Microsoft is deprecating NTLM. Use Kerberos, OAuth 2.0, or mTLS instead.
-dnl See: https://techcommunity.microsoft.com/blog/windows-itpro-blog/the-evolution-of-windows-authentication/4478637
-NTLM_WRAPPER_DIR=""
-NTLM_DIR=""
-NTLM_LIB=""
-
-
-AC_MSG_CHECKING(whether to build tcp transport)
-AC_ARG_ENABLE(tcp, [ --enable-tcp
- build tcp transport (default=no)],
-[ case "${enableval}" in
- no)
- AC_MSG_RESULT(no)
- ;;
- *)
- AC_MSG_RESULT(yes)
- TCP_DIR="tcp"
-
- ;;
- esac ],
- AC_MSG_RESULT(no)
-)
-
-AC_MSG_CHECKING(whether to use cgi transport)
-AC_ARG_ENABLE(cgi, [ --enable-cgi
- build cgi transport (default=no)],
-[ case "${enableval}" in
- no)
- AC_MSG_RESULT(no)
- ;;
- *)
- AC_MSG_RESULT(yes)
- CGI_DIR="CGI"
-
- ;;
- esac ],
- AC_MSG_RESULT(no)
-)
+dnl ============================================================================
+dnl REMOVED FEATURES - Attack Surface Reduction (January 2026)
+dnl ============================================================================
+dnl The following features have been completely removed from Axis2/C:
+dnl
+dnl 1. NTLM Authentication - Security vulnerabilities (pass-the-hash, relay attacks)
+dnl Microsoft is deprecating NTLM. Use Kerberos, OAuth 2.0, or mTLS instead.
+dnl See: https://techcommunity.microsoft.com/blog/windows-itpro-blog/the-evolution-of-windows-authentication/4478637
+dnl
+dnl 2. TCP Transport (--enable-tcp) - Rarely used, HTTP/2 is the modern replacement
+dnl Raw SOAP over TCP is obsolete. Use HTTPS with HTTP/2 instead.
+dnl
+dnl 3. CGI Transport (--enable-cgi) - Obsolete deployment model
+dnl Use Apache mod_axis2 module instead for better performance and security.
+dnl
+dnl 4. libcurl Backend (--enable-libcurl) - Redundant with native HTTP client
+dnl Native HTTP client is mature and well-tested. HTTP/2 uses nghttp2.
+dnl libcurl had broken MTOM support (AXIS2C-1270).
+dnl ============================================================================
AC_MSG_CHECKING(whether to use apache2 as server transport)
AC_ARG_WITH(apache2,
@@ -560,27 +536,7 @@ AC_ARG_WITH(openssl,
AC_MSG_RESULT(no)
)
-AC_MSG_CHECKING(whether to use libcurl)
-AC_ARG_ENABLE(libcurl, [ --enable-libcurl
- enable libcurl based client transport (default=no)],
-[ case "${enableval}" in
- no)
- AC_MSG_RESULT(no)
- CFLAGS="$CFLAGS"
- CPPFLAGS="$CPPFLAGS"
- libcurl_enabled=false
- ;;
- *)
- AC_MSG_RESULT(yes)
- CFLAGS="$CFLAGS -DAXIS2_LIBCURL_ENABLED"
- CPPFLAGS="$CPPFLAGS -DAXIS2_LIBCURL_ENABLED"
- libcurl_enabled=true
- ;;
- esac ],
- AC_MSG_RESULT(no)
- CFLAGS="$CFLAGS"
- CPPFLAGS="$CPPFLAGS"
-)
+dnl libcurl backend removed - see REMOVED FEATURES section above
AC_MSG_CHECKING(whether to use JSON)
AC_ARG_ENABLE(json, [ --enable-json
@@ -742,31 +698,19 @@ fi
AM_CONDITIONAL(GTEST_AVAILABLE, test x$gtest_available = xtrue)
AC_SUBST(SAMPLES)
AC_SUBST(APACHE2BUILD)
-AC_SUBST(NTLM_CFLAGS)
-AC_SUBST(NTLM_LDFLAGS)
AC_SUBST(WRAPPER_DIR)
-AC_SUBST(NTLM_WRAPPER_DIR)
-AC_SUBST(NTLM_LIB)
-AC_SUBST(NTLM_DIR)
-AC_SUBST(TCP_DIR)
-AC_SUBST(CGI_DIR)
AC_SUBST(GUTHTHILA_DIR)
AC_SUBST(GUTHTHILA_LIBS)
AC_SUBST(ZLIBBUILD)
AC_SUBST(NATIVE_CODEGEN_DIR)
AM_CONDITIONAL(AXIS2_SSL_ENABLED, test x$ssl_enabled = xtrue)
-AM_CONDITIONAL(AXIS2_LIBCURL_ENABLED, test x$libcurl_enabled = xtrue)
AM_CONDITIONAL(AXIS2_JSON_ENABLED, test x$json_enabled = xtrue)
AM_CONDITIONAL(AXIS2_HTTP2_ENABLED, test x$http2_enabled = xtrue)
AM_CONDITIONAL(WITH_NGHTTP2, test x$http2_enabled = xtrue)
AM_CONDITIONAL(AXIS2_APACHE2_ENABLED, test x$APACHE2BUILD = xapache2)
AM_CONDITIONAL(AXIS2_NATIVE_CODEGEN_ENABLED, test x$native_codegen_enabled = xtrue)
-export NTLM_LDFLAGS
export WRAPPER_DIR
-export NTLM_WRAPPER_DIR
-export NTLM_LIB
-export NTLM_DIR
export prefix
AC_CONFIG_FILES([Makefile \
@@ -783,17 +727,10 @@ AC_CONFIG_FILES([Makefile \
src/core/transport/http/util/Makefile \
src/core/transport/http/sender/Makefile \
src/core/transport/http/sender/ssl/Makefile \
- src/core/transport/http/sender/libcurl/Makefile \
src/core/transport/http/receiver/Makefile \
src/core/transport/http/server/simple_axis2_server/Makefile \
src/core/transport/http/server/Makefile \
src/core/transport/http/server/apache2/Makefile \
- src/core/transport/tcp/Makefile \
- src/core/transport/tcp/sender/Makefile \
- src/core/transport/tcp/receiver/Makefile \
- src/core/transport/tcp/server/Makefile \
- src/core/transport/tcp/server/simple_tcp_server/Makefile \
- src/core/transport/http/server/CGI/Makefile \
src/core/deployment/Makefile \
src/core/clientapi/Makefile \
src/core/receivers/Makefile \
@@ -813,8 +750,6 @@ AC_CONFIG_FILES([Makefile \
test/core/security/Makefile \
test/core/transport/Makefile\
test/core/transport/http/Makefile \
- tools/tcpmon/Makefile \
- tools/tcpmon/src/Makefile \
tools/md5/Makefile \
tools/md5/src/Makefile \
tools/codegen/Makefile \
diff --git a/gtest/gtest-all.cc b/gtest/gtest-all.cc
deleted file mode 100644
index 2a70ed88c..000000000
--- a/gtest/gtest-all.cc
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-//
-// Google C++ Testing and Mocking Framework (Google Test)
-//
-// Sometimes it's desirable to build Google Test by compiling a single file.
-// This file serves this purpose.
-
-// This line ensures that gtest.h can be compiled on its own, even
-// when it's fused.
-#include "gtest/gtest.h"
-
-// The following lines pull in the real gtest *.cc files.
-#include "src/gtest-assertion-result.cc"
-#include "src/gtest-death-test.cc"
-#include "src/gtest-filepath.cc"
-#include "src/gtest-matchers.cc"
-#include "src/gtest-port.cc"
-#include "src/gtest-printers.cc"
-#include "src/gtest-test-part.cc"
-#include "src/gtest-typed-test.cc"
-#include "src/gtest.cc"
diff --git a/gtest/gtest_main.cc b/gtest/gtest_main.cc
deleted file mode 100644
index 8141caf4c..000000000
--- a/gtest/gtest_main.cc
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright 2006, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#include <cstdio>
-
-#include "gtest/gtest.h"
-
-#if defined(GTEST_OS_ESP8266) || defined(GTEST_OS_ESP32) || \
- (defined(GTEST_OS_NRF52) && defined(ARDUINO))
-// Arduino-like platforms: program entry points are setup/loop instead of main.
-
-#ifdef GTEST_OS_ESP8266
-extern "C" {
-#endif
-
-void setup() { testing::InitGoogleTest(); }
-
-void loop() { RUN_ALL_TESTS(); }
-
-#ifdef GTEST_OS_ESP8266
-}
-#endif
-
-#elif defined(GTEST_OS_QURT)
-// QuRT: program entry point is main, but argc/argv are unusable.
-
-GTEST_API_ int main() {
- printf("Running main() from %s\n", __FILE__);
- testing::InitGoogleTest();
- return RUN_ALL_TESTS();
-}
-#else
-// Normal platforms: program entry point is main, argc/argv are initialized.
-
-GTEST_API_ int main(int argc, char **argv) {
- printf("Running main() from %s\n", __FILE__);
- testing::InitGoogleTest(&argc, argv);
- return RUN_ALL_TESTS();
-}
-#endif
diff --git a/guththila/gtest/gtest-all.cc b/guththila/gtest/gtest-all.cc
deleted file mode 100644
index 2a70ed88c..000000000
--- a/guththila/gtest/gtest-all.cc
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-//
-// Google C++ Testing and Mocking Framework (Google Test)
-//
-// Sometimes it's desirable to build Google Test by compiling a single file.
-// This file serves this purpose.
-
-// This line ensures that gtest.h can be compiled on its own, even
-// when it's fused.
-#include "gtest/gtest.h"
-
-// The following lines pull in the real gtest *.cc files.
-#include "src/gtest-assertion-result.cc"
-#include "src/gtest-death-test.cc"
-#include "src/gtest-filepath.cc"
-#include "src/gtest-matchers.cc"
-#include "src/gtest-port.cc"
-#include "src/gtest-printers.cc"
-#include "src/gtest-test-part.cc"
-#include "src/gtest-typed-test.cc"
-#include "src/gtest.cc"
diff --git a/guththila/gtest/gtest_main.cc b/guththila/gtest/gtest_main.cc
deleted file mode 100644
index 8141caf4c..000000000
--- a/guththila/gtest/gtest_main.cc
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright 2006, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#include <cstdio>
-
-#include "gtest/gtest.h"
-
-#if defined(GTEST_OS_ESP8266) || defined(GTEST_OS_ESP32) || \
- (defined(GTEST_OS_NRF52) && defined(ARDUINO))
-// Arduino-like platforms: program entry points are setup/loop instead of main.
-
-#ifdef GTEST_OS_ESP8266
-extern "C" {
-#endif
-
-void setup() { testing::InitGoogleTest(); }
-
-void loop() { RUN_ALL_TESTS(); }
-
-#ifdef GTEST_OS_ESP8266
-}
-#endif
-
-#elif defined(GTEST_OS_QURT)
-// QuRT: program entry point is main, but argc/argv are unusable.
-
-GTEST_API_ int main() {
- printf("Running main() from %s\n", __FILE__);
- testing::InitGoogleTest();
- return RUN_ALL_TESTS();
-}
-#else
-// Normal platforms: program entry point is main, argc/argv are initialized.
-
-GTEST_API_ int main(int argc, char **argv) {
- printf("Running main() from %s\n", __FILE__);
- testing::InitGoogleTest(&argc, argv);
- return RUN_ALL_TESTS();
-}
-#endif
diff --git a/include/axis2_http_sender.h b/include/axis2_http_sender.h
index 2a487bfc5..5593c9c31 100644
--- a/include/axis2_http_sender.h
+++ b/include/axis2_http_sender.h
@@ -38,9 +38,7 @@
#include <axiom_soap_envelope.h>
#include <axis2_http_simple_request.h>
-#ifdef AXIS2_LIBCURL_ENABLED
-#include <curl/curl.h>
-#endif
+/* libcurl backend removed (January 2026) - using native HTTP client only */
#ifdef __cplusplus
extern "C"
@@ -75,20 +73,6 @@ extern "C"
axis2_char_t * header_name,
const axis2_char_t * header_value);
-#ifdef AXIS2_LIBCURL_ENABLED
- typedef struct axis2_libcurl axis2_libcurl_t;
-
- AXIS2_EXTERN axis2_status_t AXIS2_CALL
- axis2_libcurl_http_send(
- axis2_libcurl_t * curl,
- axis2_http_sender_t * sender,
- const axutil_env_t * env,
- axis2_msg_ctx_t * msg_ctx,
- axiom_soap_envelope_t * out,
- const axis2_char_t * str_url,
- const axis2_char_t * soap_action);
-#endif
-
/**
* @param sender sender
* @param env pointer to environment struct
diff --git a/neethi/gtest/gtest-all.cc b/neethi/gtest/gtest-all.cc
deleted file mode 100644
index 2a70ed88c..000000000
--- a/neethi/gtest/gtest-all.cc
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-//
-// Google C++ Testing and Mocking Framework (Google Test)
-//
-// Sometimes it's desirable to build Google Test by compiling a single file.
-// This file serves this purpose.
-
-// This line ensures that gtest.h can be compiled on its own, even
-// when it's fused.
-#include "gtest/gtest.h"
-
-// The following lines pull in the real gtest *.cc files.
-#include "src/gtest-assertion-result.cc"
-#include "src/gtest-death-test.cc"
-#include "src/gtest-filepath.cc"
-#include "src/gtest-matchers.cc"
-#include "src/gtest-port.cc"
-#include "src/gtest-printers.cc"
-#include "src/gtest-test-part.cc"
-#include "src/gtest-typed-test.cc"
-#include "src/gtest.cc"
diff --git a/neethi/gtest/gtest_main.cc b/neethi/gtest/gtest_main.cc
deleted file mode 100644
index 8141caf4c..000000000
--- a/neethi/gtest/gtest_main.cc
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright 2006, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#include <cstdio>
-
-#include "gtest/gtest.h"
-
-#if defined(GTEST_OS_ESP8266) || defined(GTEST_OS_ESP32) || \
- (defined(GTEST_OS_NRF52) && defined(ARDUINO))
-// Arduino-like platforms: program entry points are setup/loop instead of main.
-
-#ifdef GTEST_OS_ESP8266
-extern "C" {
-#endif
-
-void setup() { testing::InitGoogleTest(); }
-
-void loop() { RUN_ALL_TESTS(); }
-
-#ifdef GTEST_OS_ESP8266
-}
-#endif
-
-#elif defined(GTEST_OS_QURT)
-// QuRT: program entry point is main, but argc/argv are unusable.
-
-GTEST_API_ int main() {
- printf("Running main() from %s\n", __FILE__);
- testing::InitGoogleTest();
- return RUN_ALL_TESTS();
-}
-#else
-// Normal platforms: program entry point is main, argc/argv are initialized.
-
-GTEST_API_ int main(int argc, char **argv) {
- printf("Running main() from %s\n", __FILE__);
- testing::InitGoogleTest(&argc, argv);
- return RUN_ALL_TESTS();
-}
-#endif
diff --git a/samples/client/ntlm/Makefile.am b/samples/client/ntlm/Makefile.am
deleted file mode 100644
index 0611905f7..000000000
--- a/samples/client/ntlm/Makefile.am
+++ /dev/null
@@ -1,37 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-prgbindir=$(prefix)/samples/bin
-prgbin_PROGRAMS = ntlm_post_with_check ntlm_post
-AM_CFLAGS = -g -O2
-ntlm_post_with_check_SOURCES = ntlm_post_with_check.c ntlm_util.c
-ntlm_post_SOURCES = ntlm_post.c ntlm_util.c
-
-LINK_FLAGS = $(LDFLAGS) \
- -L$(AXIS2C_HOME)/lib \
- -laxutil \
- -laxis2_axiom \
- -laxis2_engine \
- -laxis2_parser \
- -laxis2_http_sender \
- -laxis2_http_receiver \
- -laxis2_http_common \
- -laxis2_http_util \
- -laxis2_ntlm \
- $(GUTHTHILA_LIBS)
-
-ntlm_post_with_check_LDADD = $(LINK_FLAGS)
-ntlm_post_LDADD = $(LINK_FLAGS)
-AM_CPPFLAGS = @AXIS2INC@
-EXTRA_DIST=ntlm_util.h README ntlm.mk
diff --git a/samples/client/ntlm/README b/samples/client/ntlm/README
deleted file mode 100644
index 18d89cdb2..000000000
--- a/samples/client/ntlm/README
+++ /dev/null
@@ -1,23 +0,0 @@
-This folder contain examples of using NTLM authentication for Axis2/C clients.
-Before running the samples you need to build Axis2/C enabling NTLM authentication with a valid
-NTLM external library. For example to enable NTLM support with Heimdal NTML library give configure option
-configure --ehanble-heimdal when building Axis2/C
-
-ntlm_post:
-This sample send a HelloWorld web service POST request to the Windows IIS server
-secured with NTLM authentication.
-
-Usage : ./ntlm_post [endpoint_url] (-n [username] [password] [flags] [domain] [workstation])
-use -n option for NTLM HTTP Authentication
-use -h for help
-
-ntlm_post_with_check:
-This sample send a HellowWorld web service POST request to the Windows IIS server
-secured with NTLM authentication.
-In this sample before sending the actual message, the client send a
-test head request to check whether server require authentication. If server require
-NTLM authentication, then only the client send the security credentials.
-
-Usage : ./ntlm_post_with_check [endpoint_url] (-n [username] [password] [flags] [domain] [workstation])
-use -n option for NTLM HTTP Authentication
-use -h for help
diff --git a/samples/client/ntlm/ntlm.mk b/samples/client/ntlm/ntlm.mk
deleted file mode 100644
index e69de29bb..000000000
diff --git a/samples/client/ntlm/ntlm_post.c b/samples/client/ntlm/ntlm_post.c
deleted file mode 100755
index 5e5e58a2e..000000000
--- a/samples/client/ntlm/ntlm_post.c
+++ /dev/null
@@ -1,191 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <stdio.h>
-#include <axiom.h>
-#include <axis2_util.h>
-#include <axiom_soap.h>
-#include <axis2_client.h>
-#include <axis2_http_transport.h>
-#include "ntlm_util.h"
-
-int
-main(
- int argc,
- char **argv)
-{
- const axutil_env_t *env = NULL;
- const axis2_char_t *address = NULL;
- axis2_endpoint_ref_t *endpoint_ref = NULL;
- axis2_options_t *options = NULL;
- const axis2_char_t *client_home = NULL;
- axis2_svc_client_t *svc_client = NULL;
- axiom_node_t *payload = NULL;
- axiom_node_t *ret_node = NULL;
- const axis2_char_t *un = NULL;
- const axis2_char_t *pw = NULL;
- const axis2_char_t *flags = NULL;
- const int fg = 0;
- int i = 0;
- const axis2_char_t *domain = NULL;
- const axis2_char_t *workstation = NULL;
- axutil_string_t *soap_action = NULL;
-
- /* Set up the environment */
- env = axutil_env_create_all("ntlm_post.log", AXIS2_LOG_LEVEL_TRACE);
-
- /* Set end point reference of ntlm service */
- address = "http://172.16.176.132:80/myservice/Service1.asmx";
- if (argc > 1)
- {
- if (axutil_strcmp(argv[1], "-h") == 0)
- {
- printf("Usage : %s [endpoint_url] (-n [username] [password] [flags] [domain] [workstation])\n",
- argv[0]);
- printf("use -n option for NTLM HTTP Authentication\n");
- printf("use -h for help\n");
- return 0;
- }
- else if (axutil_strcmp(argv[1], "-n") == 0)
- {
- if (argc > 3)
- {
- un = argv[2];
- pw = argv[3];
- flags = argv[4];
- domain = argv[5];
- workstation = argv[6];
- }
- }
- else
- {
- address = argv[1];
- }
-
- if (argc > 4)
- {
- if (axutil_strcmp(argv[2], "-n") == 0)
- {
- un = argv[3];
- pw = argv[4];
- flags = argv[5];
- domain = argv[6];
- workstation = argv[7];
- }
- }
- }
- printf("Using endpoint : %s\n", address);
-
- /* Create EPR with given address */
- endpoint_ref = axis2_endpoint_ref_create(env, address);
-
- /* Setup options */
- options = axis2_options_create(env);
- axis2_options_set_to(options, env, endpoint_ref);
- soap_action =
- axutil_string_create(env, "http://tempuri.org/HelloWorld");
- axis2_options_set_soap_action(options, env, soap_action);
- axutil_string_free(soap_action, env);
-
- /* Set up deploy folder. It is from the deploy folder, the configuration is picked up
- * using the axis2.xml file.
- * In this sample client_home points to the Axis2/C default deploy folder. The client_home can
- * be different from this folder on your system. For example, you may have a different folder
- * (say, my_client_folder) with its own axis2.xml file. my_client_folder/modules will have the
- * modules that the client uses
- */
- client_home = AXIS2_GETENV("AXIS2C_HOME");
- if (!client_home || !strcmp(client_home, ""))
- client_home = "../..";
-
- /* Create service client */
- svc_client = axis2_svc_client_create(env, client_home);
- if (!svc_client)
- {
- printf
- ("Error creating service client, Please check AXIS2C_HOME again\n");
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
- "Stub invoke FAILED: Error code:" " %d :: %s",
- env->error->error_number,
- AXIS2_ERROR_GET_MESSAGE(env->error));
- return -1;
- }
-
- /* Set service client options */
- axis2_svc_client_set_options(svc_client, env, options);
-
- /* un-comment line below to setup proxy from code*/
- /*axis2_svc_client_set_proxy_with_auth(svc_client, env, "127.0.0.1", "3128", NULL, NULL);*/
-
-
- /* Set http-auth information */
- if (un && pw)
- {
- axis2_options_set_ntlm_http_auth_info(options, env, un, pw, fg, domain, workstation,
- AXIS2_HTTP_AUTH_TYPE_NTLM);
- }
-
-
- /* Setting Request as HTTP POST Request */
- axis2_options_set_http_method(options, env, AXIS2_HTTP_POST);
-
-
- for(i = 0; i < 1; i++)
- {
- /* Build the SOAP request message payload using OM API. */
- payload = build_om_payload_for_ntlm_auth_service(env);
-
- /*axis2_svc_client_send_robust(svc_client, env, payload);*/
- /* Send request */
- ret_node = axis2_svc_client_send_receive(svc_client, env, payload);
-
- if (ret_node)
- {
- axis2_char_t *om_str = NULL;
- om_str = axiom_node_to_string(ret_node, env);
- if (om_str)
- printf("\nReceived OM : %s\n", om_str);
- printf("\nntlm client invoke SUCCESSFUL!\n");
-
- AXIS2_FREE(env->allocator, om_str);
- ret_node = NULL;
- }
- else
- {
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
- "Stub invoke FAILED: Error code:" " %d :: %s",
- env->error->error_number,
- AXIS2_ERROR_GET_MESSAGE(env->error));
- printf("ntlm client invoke FAILED!\n");
- }
- }
- if (svc_client)
- {
- axis2_svc_client_free(svc_client, env);
- svc_client = NULL;
- }
-
- if (env)
- {
- axutil_env_free((axutil_env_t *) env);
- env = NULL;
- }
-
- return 0;
-}
-
-
diff --git a/samples/client/ntlm/ntlm_post_with_check.c b/samples/client/ntlm/ntlm_post_with_check.c
deleted file mode 100755
index 373210612..000000000
--- a/samples/client/ntlm/ntlm_post_with_check.c
+++ /dev/null
@@ -1,253 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <stdio.h>
-#include <axiom.h>
-#include <axis2_util.h>
-#include <axiom_soap.h>
-#include <axis2_client.h>
-#include <axis2_http_transport.h>
-#include "ntlm_util.h"
-
-int
-main(
- int argc,
- char **argv)
-{
- const axutil_env_t *env = NULL;
- axis2_char_t *address = NULL;
- axis2_endpoint_ref_t *endpoint_ref = NULL;
- axis2_options_t *options = NULL;
- axis2_char_t *client_home = NULL;
- axis2_svc_client_t *svc_client = NULL;
- axiom_node_t *payload = NULL;
- axiom_node_t *ret_node = NULL;
- axis2_char_t *un = NULL;
- axis2_char_t *pw = NULL;
- axis2_char_t *flags = NULL;
- int fg = 0;
- axis2_char_t *domain = NULL;
- axis2_char_t *workstation = NULL;
- axis2_bool_t http_auth_required = AXIS2_FALSE;
- axis2_bool_t proxy_auth_required = AXIS2_FALSE;
- axutil_string_t *soap_action = NULL;
- int i = 0;
-
- /* Set up the environment */
- env = axutil_env_create_all("ntlm_post_with_check.log", AXIS2_LOG_LEVEL_TRACE);
-
- /* Set end point reference of ntlm service */
- address = "http://172.16.176.132:80/myservice/Service1.asmx";
- if (argc > 1)
- {
- if (axutil_strcmp(argv[1], "-h") == 0)
- {
- printf("Usage : %s [endpoint_url] (-n [username] [password] [flags] [domain] [workstation])\n",
- argv[0]);
- printf("use -n option for NTLM HTTP Authentication\n");
- printf("use -h for help\n");
- return 0;
- }
- else if (axutil_strcmp(argv[1], "-n") == 0)
- {
- if (argc > 3)
- {
- un = argv[2];
- pw = argv[3];
- flags = argv[4];
- domain = argv[5];
- workstation = argv[6];
- }
- }
- else
- {
- address = argv[1];
- }
-
- if (argc > 4)
- {
- if (axutil_strcmp(argv[2], "-n") == 0)
- {
- un = argv[3];
- pw = argv[4];
- flags = argv[5];
- domain = argv[6];
- workstation = argv[7];
- }
- }
- }
- printf("Using endpoint : %s\n", address);
-
- /* Create EPR with given address */
- endpoint_ref = axis2_endpoint_ref_create(env, address);
-
- /* Setup options */
- options = axis2_options_create(env);
- axis2_options_set_to(options, env, endpoint_ref);
- soap_action =
- axutil_string_create(env, "http://tempuri.org/HelloWorld");
- axis2_options_set_soap_action(options, env, soap_action);
- axutil_string_free(soap_action, env);
-
- /* Set up deploy folder. It is from the deploy folder, the configuration is picked up
- * using the axis2.xml file.
- * In this sample client_home points to the Axis2/C default deploy folder. The client_home can
- * be different from this folder on your system. For example, you may have a different folder
- * (say, my_client_folder) with its own axis2.xml file. my_client_folder/modules will have the
- * modules that the client uses
- */
- client_home = AXIS2_GETENV("AXIS2C_HOME");
- if (!client_home || !strcmp(client_home, ""))
- client_home = "../..";
-
- /* Create service client */
- svc_client = axis2_svc_client_create(env, client_home);
- if (!svc_client)
- {
- printf
- ("Error creating service client, Please check AXIS2C_HOME again\n");
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
- "Stub invoke FAILED: Error code:" " %d :: %s",
- env->error->error_number,
- AXIS2_ERROR_GET_MESSAGE(env->error));
- return -1;
- }
-
- /* Enabling REST for HTTP HEAD Request */
- axis2_options_set_enable_rest(options, env, AXIS2_TRUE);
-
- /* Setting Request as HTTP HEAD Request */
- axis2_options_set_http_method(options, env, AXIS2_HTTP_HEAD);
-
- /* Sending dummy authentication info */
- if (un && pw)
- {
- axis2_options_set_ntlm_proxy_auth_info(options, env, "", "", 0, NULL, NULL, NULL);
- }
- if(flags)
- {
- fg = atoi(flags);
- }
- else
- {
- fg = 0;
- }
-
- /* Force authentication tests */
- axis2_options_set_test_http_auth(options, env, AXIS2_TRUE);
- axis2_options_set_test_proxy_auth(options, env, AXIS2_TRUE);
-
- /* Set service client options */
- axis2_svc_client_set_options(svc_client, env, options);
-
- /* un-comment line below to setup proxy from code*/
- /*axis2_svc_client_set_proxy_with_auth(svc_client, env, "127.0.0.1", "3128", NULL, NULL);*/
-
- /* Sending robust authentication test message */
- axis2_svc_client_send_robust(svc_client, env, NULL);
-
- /* Checking whether authentication is required */
- if (axis2_svc_client_get_proxy_auth_required(svc_client, env))
- {
- proxy_auth_required = AXIS2_TRUE;
-
- /* Set proxy-auth information */
- if (un && pw)
- {
- axis2_options_set_ntlm_proxy_auth_info(options, env, un, pw, fg, domain, workstation,
- axis2_svc_client_get_auth_type(svc_client, env));
- }
-
- /* Sending robust authentication test message */
- axis2_svc_client_send_robust(svc_client, env, NULL);
- }
- if (axis2_svc_client_get_http_auth_required(svc_client, env))
- {
- http_auth_required = AXIS2_TRUE;
- /* Set http-auth information */
- if (un && pw)
- {
- axis2_options_set_ntlm_http_auth_info(options, env, un, pw, fg, domain, workstation,
- axis2_svc_client_get_auth_type(svc_client, env));
- }
- }
-
- /* Cancel authentication tests */
- axis2_options_set_test_http_auth(options, env, AXIS2_FALSE);
- axis2_options_set_test_proxy_auth(options, env, AXIS2_FALSE);
-
- /* Print whether authentication was required */
- if (http_auth_required)
- {
- printf("\nHTTP Authentication info required.\n");
- }
- if (proxy_auth_required)
- {
- printf("\nProxy Authentication info required.\n");
- }
-
- /* Disabling REST for SOAP Request */
- axis2_options_set_enable_rest(options, env, AXIS2_FALSE);
-
- /* Setting Request as HTTP POST Request */
- axis2_options_set_http_method(options, env, AXIS2_HTTP_POST);
-
-
- for(i = 0; i < 1; i++)
- {
- /* Build the SOAP request message payload using OM API. */
- payload = build_om_payload_for_ntlm_auth_service(env);
-
- /*axis2_svc_client_send_robust(svc_client, env, payload);*/
- /* Send request */
- ret_node = axis2_svc_client_send_receive(svc_client, env, payload);
-
- if (ret_node)
- {
- axis2_char_t *om_str = NULL;
- om_str = axiom_node_to_string(ret_node, env);
- if (om_str)
- printf("\nReceived OM : %s\n", om_str);
- printf("\nntlm client invoke SUCCESSFUL!\n");
-
- AXIS2_FREE(env->allocator, om_str);
- ret_node = NULL;
- }
- else
- {
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
- "Stub invoke FAILED: Error code:" " %d :: %s",
- env->error->error_number,
- AXIS2_ERROR_GET_MESSAGE(env->error));
- printf("ntlm client invoke FAILED!\n");
- }
- }
- if (svc_client)
- {
- axis2_svc_client_free(svc_client, env);
- svc_client = NULL;
- }
-
- if (env)
- {
- axutil_env_free((axutil_env_t *) env);
- env = NULL;
- }
-
- return 0;
-}
-
diff --git a/samples/client/ntlm/ntlm_util.c b/samples/client/ntlm/ntlm_util.c
deleted file mode 100644
index 896b04098..000000000
--- a/samples/client/ntlm/ntlm_util.c
+++ /dev/null
@@ -1,45 +0,0 @@
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "ntlm_util.h"
-
-/* build SOAP request message content using OM */
-axiom_node_t *
-build_om_payload_for_ntlm_auth_service(
- const axutil_env_t * env)
-{
- axiom_node_t *ntlm_om_node = NULL;
- axiom_element_t *ntlm_om_ele = NULL;
- axiom_namespace_t *ns1 = NULL;
- axis2_char_t *om_str = NULL;
-
- ns1 = axiom_namespace_create(env, "http://tempuri.org", "ns1");
- ntlm_om_ele = axiom_element_create(env, NULL, "HelloWorld", ns1, &ntlm_om_node);
- axiom_element_set_text(ntlm_om_ele, env, "Hello World!", ntlm_om_node);
- axiom_namespace_free(ns1, env);
-
- om_str = axiom_node_to_string(ntlm_om_node, env);
- if (om_str)
- {
- printf("\nSending OM : %s\n", om_str);
- AXIS2_FREE(env->allocator, om_str);
- }
-
- return ntlm_om_node;
-}
-
diff --git a/samples/client/ntlm/ntlm_util.h b/samples/client/ntlm/ntlm_util.h
deleted file mode 100644
index bfa50e083..000000000
--- a/samples/client/ntlm/ntlm_util.h
+++ /dev/null
@@ -1,28 +0,0 @@
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef AXIS2_NTLM_UTIL_H
-#define AXIS2_NTLM_UTIL_H
-
-#include <stdio.h>
-#include <axiom.h>
-
-axiom_node_t *build_om_payload_for_ntlm_auth_service(
- const axutil_env_t * env);
-
-#endif
diff --git a/samples/user_guide/bigdata-h2-service/build_json_builder_formatter.sh b/samples/user_guide/bigdata-h2-service/build_json_builder_formatter.sh
index 774a4f5ce..8ba49de40 100644
--- a/samples/user_guide/bigdata-h2-service/build_json_builder_formatter.sh
+++ b/samples/user_guide/bigdata-h2-service/build_json_builder_formatter.sh
@@ -33,7 +33,6 @@ gcc -shared -fPIC \
-I/usr/include/json-c \
-DAXIS2_GUTHTHILA_ENABLED \
-DAXIS2_SVR_MULTI_THREADED \
- -DAXIS2_LIBCURL_ENABLED \
-DAXIS2_JSON_ENABLED \
-DWITH_NGHTTP2 \
-DENABLE_JSON_ONLY \
diff --git a/samples/user_guide/bigdata-h2-service/build_json_rpc_service.sh b/samples/user_guide/bigdata-h2-service/build_json_rpc_service.sh
index 12e21848d..89eede246 100755
--- a/samples/user_guide/bigdata-h2-service/build_json_rpc_service.sh
+++ b/samples/user_guide/bigdata-h2-service/build_json_rpc_service.sh
@@ -30,7 +30,6 @@ gcc -shared -fPIC \
-I/usr/include/json-c \
-DAXIS2_GUTHTHILA_ENABLED \
-DAXIS2_SVR_MULTI_THREADED \
- -DAXIS2_LIBCURL_ENABLED \
-DAXIS2_JSON_ENABLED \
-DWITH_NGHTTP2 \
-DENABLE_JSON_ONLY \
diff --git a/samples/user_guide/bigdata-h2-service/build_native_json_rpc.sh b/samples/user_guide/bigdata-h2-service/build_native_json_rpc.sh
index 88ae3728b..a537ab695 100644
--- a/samples/user_guide/bigdata-h2-service/build_native_json_rpc.sh
+++ b/samples/user_guide/bigdata-h2-service/build_native_json_rpc.sh
@@ -34,7 +34,6 @@ gcc -shared -fPIC \
-I/usr/include/json-c \
-DAXIS2_GUTHTHILA_ENABLED \
-DAXIS2_SVR_MULTI_THREADED \
- -DAXIS2_LIBCURL_ENABLED \
-DAXIS2_JSON_ENABLED \
-DWITH_NGHTTP2 \
-DENABLE_JSON_ONLY \
diff --git a/samples/user_guide/bigdata-h2-service/build_simple_json.sh b/samples/user_guide/bigdata-h2-service/build_simple_json.sh
index 187a1d78d..c2ea6906a 100644
--- a/samples/user_guide/bigdata-h2-service/build_simple_json.sh
+++ b/samples/user_guide/bigdata-h2-service/build_simple_json.sh
@@ -33,7 +33,6 @@ gcc -shared -fPIC \
-I/usr/include/json-c \
-DAXIS2_GUTHTHILA_ENABLED \
-DAXIS2_SVR_MULTI_THREADED \
- -DAXIS2_LIBCURL_ENABLED \
-DAXIS2_JSON_ENABLED \
-DWITH_NGHTTP2 \
-DENABLE_JSON_ONLY \
diff --git a/src/core/transport/Makefile.am b/src/core/transport/Makefile.am
index 17f1edc99..05f612770 100644
--- a/src/core/transport/Makefile.am
+++ b/src/core/transport/Makefile.am
@@ -20,7 +20,7 @@ else
H2_DIR =
endif
-SUBDIRS=http $(H2_DIR) $(TCP_DIR)
-DIST_SUBDIRS=http h2 tcp
+SUBDIRS=http $(H2_DIR)
+DIST_SUBDIRS=http h2
EXTRA_DIST=Makefile.am
diff --git a/src/core/transport/http/sender/Makefile.am b/src/core/transport/http/sender/Makefile.am
index 4e778ca32..20dc51d4e 100644
--- a/src/core/transport/http/sender/Makefile.am
+++ b/src/core/transport/http/sender/Makefile.am
@@ -4,30 +4,22 @@
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
-#
+#
# http://www.apache.org/licenses/LICENSE-2.0
-#
+#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
-# NTLM support has been removed - see docs/SECURITY.md
-SUBDIRS=ssl libcurl
-DIST_SUBDIRS=ssl libcurl
-lib_LTLIBRARIES = libaxis2_http_sender.la
-
-
-if AXIS2_LIBCURL_ENABLED
-LIBCURL_SOURCES=libcurl/axis2_libcurl.c\
- libcurl/libcurl_stream.c
-LIBCURL_LIBS=-lssl -lcrypto -lcurl -ldl -lz
-else
-LIBCURL_SOURCES=
-LIBCURL_LIBS=
-endif
+# Removed features (January 2026 - attack surface reduction):
+# - NTLM authentication - security vulnerabilities
+# - libcurl backend - redundant with native HTTP client
+SUBDIRS=ssl
+DIST_SUBDIRS=ssl
+lib_LTLIBRARIES = libaxis2_http_sender.la
if AXIS2_SSL_ENABLED
SSL_SOURCES = ssl/ssl_stream.c\
@@ -43,15 +35,13 @@ endif
libaxis2_http_sender_la_SOURCES = http_transport_sender.c \
http_sender.c \
http_client.c \
- $(SSL_SOURCES) \
- $(LIBCURL_SOURCES)
+ $(SSL_SOURCES)
libaxis2_http_sender_la_LIBADD = $(top_builddir)/src/core/transport/http/common/libaxis2_http_common.la\
$(top_builddir)/src/core/transport/http/util/libaxis2_http_util.la\
$(top_builddir)/axiom/src/om/libaxis2_axiom.la\
$(top_builddir)/util/src/libaxutil.la\
$(top_builddir)/src/core/engine/libaxis2_engine.la\
- $(LIBCURL_LIBS)\
$(SSL_LIBS)
@@ -60,7 +50,6 @@ libaxis2_http_sender_la_LDFLAGS = -version-info $(VERSION_NO)
libaxis2_http_sender_la_CPPFLAGS = -I$(top_srcdir)/include \
-I$(top_srcdir)/src/core/transport\
-I$(top_srcdir)/src/core/transport/http \
- -I$(top_srcdir)/src/core/transport/http/sender/libcurl \
-I$(top_srcdir)/src/core/description \
-I$(top_srcdir)/src/core/context \
-I$(top_srcdir)/src/core/phaseresolver \
diff --git a/src/core/transport/http/sender/http_sender.c b/src/core/transport/http/sender/http_sender.c
index 4de58f14f..b7ed41faf 100644
--- a/src/core/transport/http/sender/http_sender.c
+++ b/src/core/transport/http/sender/http_sender.c
@@ -47,11 +47,8 @@
* Use Kerberos, OAuth 2.0, or mTLS instead.
*/
-#ifdef AXIS2_LIBCURL_ENABLED
-#include "libcurl/axis2_libcurl.h"
-#else
+/* libcurl backend removed (January 2026) - using native HTTP client only */
#define CLIENT_NONCE_LENGTH 8
-#endif
/* AXIS2C-1568: Constants AXIS2_HTTP_CLIENT_STATUS_TIMEOUT (-2) and
* AXIS2_HTTP_KEEPALIVE_TIMEOUT_MAX_RETRIES are defined in axis2_http_transport.h
@@ -70,7 +67,7 @@ struct axis2_http_sender
unsigned int keepalive_timeout_retries;
};
-#ifndef AXIS2_LIBCURL_ENABLED
+/* Native HTTP client (libcurl removed) */
static void
axis2_http_sender_add_header_list(
axis2_http_simple_request_t * request,
@@ -164,7 +161,7 @@ axis2_http_sender_configure_proxy_digest_auth(
#endif
-#ifndef AXIS2_LIBCURL_ENABLED
+/* Native HTTP client (libcurl removed) */
static axutil_hash_t *
axis2_http_sender_connection_map_create(
const axutil_env_t *env,
@@ -185,7 +182,7 @@ axis2_http_sender_connection_map_add(
const axutil_env_t *env,
axis2_msg_ctx_t *msg_ctx);
-#ifndef AXIS2_LIBCURL_ENABLED
+/* Native HTTP client (libcurl removed) */
static axis2_http_client_t *
axis2_http_sender_connection_map_get(
axutil_hash_t *connection_map,
@@ -249,7 +246,7 @@ axis2_http_sender_free(
return;
}
-#ifndef AXIS2_LIBCURL_ENABLED
+/* Native HTTP client (libcurl removed) */
AXIS2_EXTERN axis2_status_t AXIS2_CALL
axis2_http_sender_send(
axis2_http_sender_t * sender,
@@ -1827,7 +1824,7 @@ axis2_http_sender_set_http_version(
return AXIS2_SUCCESS;
}
-#ifndef AXIS2_LIBCURL_ENABLED
+/* Native HTTP client (libcurl removed) */
static void
axis2_http_sender_add_header_list(
axis2_http_simple_request_t * request,
@@ -1954,7 +1951,7 @@ axis2_http_sender_configure_proxy(
}
#endif
-#ifndef AXIS2_LIBCURL_ENABLED
+/* Native HTTP client (libcurl removed) */
static axis2_status_t
axis2_http_sender_configure_server_cert(
axis2_http_sender_t * sender,
@@ -1991,7 +1988,7 @@ axis2_http_sender_configure_server_cert(
}
#endif
-#ifndef AXIS2_LIBCURL_ENABLED
+/* Native HTTP client (libcurl removed) */
static axis2_status_t
axis2_http_sender_configure_key_file(
axis2_http_sender_t * sender,
@@ -2028,7 +2025,7 @@ axis2_http_sender_configure_key_file(
}
#endif
-#ifndef AXIS2_LIBCURL_ENABLED
+/* Native HTTP client (libcurl removed) */
static axis2_status_t
axis2_http_sender_configure_http_basic_auth(
axis2_http_sender_t * sender,
@@ -2250,7 +2247,7 @@ axis2_http_sender_configure_proxy_basic_auth(
}
#endif
-#ifndef AXIS2_LIBCURL_ENABLED
+/* Native HTTP client (libcurl removed) */
static axis2_status_t
axis2_http_sender_configure_http_digest_auth(
axis2_http_sender_t * sender,
@@ -2908,7 +2905,7 @@ axis2_http_sender_configure_proxy_digest_auth(
#endif
-#ifndef AXIS2_LIBCURL_ENABLED
+/* Native HTTP client (libcurl removed) */
static axis2_status_t
axis2_http_sender_configure_http_auth(
axis2_http_sender_t * sender,
@@ -3115,7 +3112,7 @@ axis2_http_sender_configure_proxy_auth(
}
#endif
-#ifndef AXIS2_LIBCURL_ENABLED
+/* Native HTTP client (libcurl removed) */
static axis2_status_t
axis2_http_sender_set_http_auth_type(
axis2_http_sender_t * sender,
@@ -3242,20 +3239,7 @@ axis2_http_sender_set_proxy_auth_type(
}
#endif
-#ifdef AXIS2_LIBCURL_ENABLED
-AXIS2_EXTERN axis2_status_t AXIS2_CALL
-axis2_libcurl_http_send (axis2_libcurl_t * curl,
- axis2_http_sender_t * sender,
- const axutil_env_t * env,
- axis2_msg_ctx_t * msg_ctx,
- axiom_soap_envelope_t * out,
- const axis2_char_t * str_url,
- const axis2_char_t * soap_action)
-{
- return axis2_libcurl_send (curl, sender->om_output,
- env, msg_ctx, out, str_url, soap_action);
-}
-#endif
+/* libcurl backend removed (January 2026) - using native HTTP client only */
AXIS2_EXTERN axis2_char_t *AXIS2_CALL
axis2_http_sender_get_param_string(
@@ -3412,7 +3396,7 @@ axis2_http_sender_get_so_timeout(
return AXIS2_HTTP_DEFAULT_SO_TIMEOUT;
}
-#ifndef AXIS2_LIBCURL_ENABLED
+/* Native HTTP client (libcurl removed) */
static axutil_hash_t *
axis2_http_sender_connection_map_create(
const axutil_env_t *env,
@@ -3551,7 +3535,7 @@ axis2_http_sender_connection_map_add(
}
}
-#ifndef AXIS2_LIBCURL_ENABLED
+/* Native HTTP client (libcurl removed) */
static axis2_http_client_t *
axis2_http_sender_connection_map_get(
axutil_hash_t *connection_map,
@@ -3588,7 +3572,7 @@ axis2_http_sender_connection_map_get(
}
#endif
-#ifndef AXIS2_LIBCURL_ENABLED
+/* Native HTTP client (libcurl removed) */
static void AXIS2_CALL
axis2_http_sender_connection_map_free(
void *cm_void,
diff --git a/src/core/transport/http/sender/http_transport_sender.c b/src/core/transport/http/sender/http_transport_sender.c
index 79cde587f..f5cea4038 100644
--- a/src/core/transport/http/sender/http_transport_sender.c
+++ b/src/core/transport/http/sender/http_transport_sender.c
@@ -31,9 +31,7 @@
#include <axiom_soap_fault_detail.h>
#include <axis2_msg_ctx.h>
-#ifdef AXIS2_LIBCURL_ENABLED
-#include "libcurl/axis2_libcurl.h"
-#endif
+/* libcurl backend removed (January 2026) - using native HTTP client only */
#ifdef AXIS2_JSON_ENABLED
#ifndef WITH_NGHTTP2
@@ -55,9 +53,6 @@ typedef struct axis2_http_transport_sender_impl
int connection_timeout;
int so_timeout;
axis2_bool_t keep_alive;
-#ifdef AXIS2_LIBCURL_ENABLED
- axis2_libcurl_t *libcurl;
-#endif
} axis2_http_transport_sender_impl_t;
#define AXIS2_WS_RM_ANONYMOUS_URL "http://docs.oasis-open.org/ws-rx/wsmc/200702/anonymous?id="
@@ -125,16 +120,6 @@ axis2_http_transport_sender_create(
transport_sender_impl->keep_alive = AXIS2_TRUE;
transport_sender_impl->transport_sender.ops = &http_transport_sender_ops_var;
-#ifdef AXIS2_LIBCURL_ENABLED
- transport_sender_impl->libcurl = axis2_libcurl_create(env);
- if (!transport_sender_impl->libcurl)
- {
- AXIS2_FREE(env->allocator, transport_sender_impl);
- AXIS2_HANDLE_ERROR(env, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
- return NULL;
- }
-#endif
-
return &(transport_sender_impl->transport_sender);
}
@@ -158,13 +143,6 @@ axis2_http_transport_sender_free(
transport_sender_impl->http_version = NULL;
}
-#ifdef AXIS2_LIBCURL_ENABLED
- if (transport_sender_impl->libcurl)
- {
- axis2_libcurl_free(transport_sender_impl->libcurl, env);
- }
-#endif
-
AXIS2_FREE(env->allocator, transport_sender_impl);
return;
}
@@ -870,16 +848,9 @@ axis2_http_transport_sender_write_message(
}
AXIS2_HTTP_SENDER_SET_OM_OUTPUT(sender, env, om_output);
-#ifdef AXIS2_LIBCURL_ENABLED
- AXIS2_LOG_DEBUG (env->log, AXIS2_LOG_SI, "using axis2 libcurl http sender.");
- status =
- axis2_libcurl_http_send(AXIS2_INTF_TO_IMPL(transport_sender)->libcurl,
- sender, env, msg_ctx, out, url, soap_action);
-#else
+ /* Native HTTP client (libcurl backend removed January 2026) */
AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "using axis2 native http sender.");
status = AXIS2_HTTP_SENDER_SEND(sender, env, msg_ctx, out, url, soap_action);
-#endif
-
/* if the send was not successful, do not process any response */
if(status != AXIS2_SUCCESS)
diff --git a/src/core/transport/http/sender/libcurl/Makefile.am b/src/core/transport/http/sender/libcurl/Makefile.am
deleted file mode 100644
index fe616484b..000000000
--- a/src/core/transport/http/sender/libcurl/Makefile.am
+++ /dev/null
@@ -1,16 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-EXTRA_DIST= axis2_libcurl.h axis2_libcurl.c libcurl_stream.h libcurl_stream.c
-
diff --git a/src/core/transport/http/sender/libcurl/axis2_libcurl.c b/src/core/transport/http/sender/libcurl/axis2_libcurl.c
deleted file mode 100644
index c5b525b39..000000000
--- a/src/core/transport/http/sender/libcurl/axis2_libcurl.c
+++ /dev/null
@@ -1,1446 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifdef AXIS2_LIBCURL_ENABLED
-
-#include "axis2_libcurl.h"
-#include <axiom_soap.h>
-#include <axutil_string.h>
-#include <axis2_http_transport.h>
-#include <axiom_output.h>
-#include <axis2_op_ctx.h>
-#include <axis2_ctx.h>
-#include <axis2_conf_ctx.h>
-#include <axis2_http_client.h>
-#include <axiom_xml_writer.h>
-#include <axutil_property.h>
-#include <axutil_param.h>
-#include <axutil_types.h>
-#include <axutil_generic_obj.h>
-#include <axis2_const.h>
-#include <axis2_util.h>
-#include <stdlib.h>
-#include <axis2_http_sender.h>
-#include <axis2_http_transport.h>
-#include "libcurl_stream.h"
-
-static int ref = 0;
-
-struct axis2_libcurl
-{
- axis2_char_t *memory;
- axutil_array_list_t *alist;
- unsigned int size;
- const axutil_env_t *env;
- char errorbuffer[CURL_ERROR_SIZE];
- CURL *handler;
- axis2_bool_t cookies;
-};
-
-static size_t
-axis2_libcurl_write_memory_callback(
- void *ptr,
- size_t size,
- size_t nmemb,
- void *data);
-
-static size_t
-axis2_libcurl_header_callback(
- void *ptr,
- size_t size,
- size_t nmemb,
- void *data);
-
-static axis2_char_t *
-axis2_libcurl_get_content_type(
- axis2_libcurl_t *curl,
- const axutil_env_t * env);
-
-static int
-axis2_libcurl_get_content_length(
- axis2_libcurl_t *curl,
- const axutil_env_t * env);
-
-static axis2_http_header_t *
-axis2_libcurl_get_first_header(
- axis2_libcurl_t *curl,
- const axutil_env_t * env,
- const axis2_char_t * str);
-
-static void
-axis2_libcurl_free_headers(
- axis2_libcurl_t *curl,
- const axutil_env_t * env);
-
-static axis2_status_t
-axis2_libcurl_set_options(
- CURL *handler,
- const axutil_env_t * env,
- axis2_msg_ctx_t * msg_ctx);
-
-axis2_status_t AXIS2_CALL
-axis2_libcurl_send(
- axis2_libcurl_t *data,
- axiom_output_t * om_output,
- const axutil_env_t * env,
- axis2_msg_ctx_t * msg_ctx,
- axiom_soap_envelope_t * out,
- const axis2_char_t * str_url,
- const axis2_char_t * soap_action)
-{
- struct curl_slist *headers = NULL;
- axiom_soap_body_t *soap_body;
- axis2_bool_t is_soap = AXIS2_TRUE;
- axis2_bool_t send_via_get = AXIS2_FALSE;
- axis2_bool_t send_via_head = AXIS2_FALSE;
- axis2_bool_t send_via_put = AXIS2_FALSE;
- axis2_bool_t send_via_delete = AXIS2_FALSE;
- axis2_bool_t doing_mtom = AXIS2_FALSE;
- axiom_node_t *body_node = NULL;
- axiom_node_t *data_out = NULL;
- axutil_property_t *method = NULL;
- axis2_char_t *method_value = NULL;
- axiom_xml_writer_t *xml_writer = NULL;
- axis2_char_t *buffer = NULL;
- unsigned int buffer_size = 0;
- int content_length = -1;
- axis2_char_t *content_type = NULL;
- axis2_bool_t content_type_allocated = AXIS2_FALSE; /* AXIS2C-1622: track ownership */
- /*axis2_char_t *content_len = AXIS2_HTTP_HEADER_CONTENT_LENGTH_; */
- const axis2_char_t *char_set_enc = NULL;
- axis2_char_t *content = AXIS2_HTTP_HEADER_CONTENT_TYPE_;
- axis2_char_t *soap_action_header = AXIS2_HTTP_HEADER_SOAP_ACTION_;
- axutil_stream_t *in_stream;
- axutil_property_t *trans_in_property;
- axutil_string_t *char_set_enc_str;
- axis2_byte_t *output_stream = NULL;
- int output_stream_size = 0;
- CURL *handler;
- axis2_conf_ctx_t *conf_ctx = NULL;
- axis2_conf_t *conf = NULL;
- axis2_transport_out_desc_t *trans_desc = NULL;
- axutil_param_t *write_xml_declaration_param = NULL;
- axutil_hash_t *transport_attrs = NULL;
- axis2_bool_t write_xml_declaration = AXIS2_FALSE;
- axutil_property_t *property;
- int *response_length = NULL;
- axis2_http_status_line_t *status_line = NULL;
- axis2_char_t *status_line_str = NULL;
- axis2_char_t *tmp_strcat = NULL;
- int status_code = 0;
-
- AXIS2_PARAM_CHECK(env->error, data, AXIS2_FAILURE);
- AXIS2_PARAM_CHECK(env->error, data->handler, AXIS2_FAILURE);
-
- handler = data->handler;
- curl_easy_reset(handler);
- curl_easy_setopt(handler, CURLOPT_ERRORBUFFER, data->errorbuffer);
-
- /* AXIS2C-1612: Check for custom User-Agent property */
- {
- axutil_property_t *user_agent_property = NULL;
- axis2_char_t *user_agent_value = NULL;
-
- user_agent_property = (axutil_property_t *)axis2_msg_ctx_get_property(
- msg_ctx, env, AXIS2_HTTP_HEADER_USER_AGENT);
-
- if (user_agent_property)
- {
- user_agent_value = (axis2_char_t *)axutil_property_get_value(
- user_agent_property, env);
- }
-
- if (user_agent_value)
- {
- axis2_char_t *user_agent_header = NULL;
- int header_len = axutil_strlen(AXIS2_HTTP_HEADER_USER_AGENT) +
- axutil_strlen(user_agent_value) + 3;
-
- user_agent_header = AXIS2_MALLOC(env->allocator,
- header_len * sizeof(axis2_char_t));
- if (user_agent_header)
- {
- sprintf(user_agent_header, "%s: %s",
- AXIS2_HTTP_HEADER_USER_AGENT, user_agent_value);
- headers = curl_slist_append(headers, user_agent_header);
- /* curl_slist_append copies the string, so free our copy */
- AXIS2_FREE(env->allocator, user_agent_header);
- }
- else
- {
- /* Fallback to default on allocation failure */
- headers = curl_slist_append(headers, AXIS2_HTTP_HEADER_USER_AGENT_AXIS2C);
- }
- }
- else
- {
- headers = curl_slist_append(headers, AXIS2_HTTP_HEADER_USER_AGENT_AXIS2C);
- }
- }
-
- headers = curl_slist_append(headers, AXIS2_HTTP_HEADER_ACCEPT_);
- headers = curl_slist_append(headers, AXIS2_HTTP_HEADER_EXPECT_);
-
- if(AXIS2_FAILURE == axis2_libcurl_set_options(handler, env, msg_ctx))
- {
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[axis2libcurl]Setting options in Libcurl failed");
- return AXIS2_FAILURE;
- }
-
- if (AXIS2_TRUE == axis2_msg_ctx_get_doing_rest(msg_ctx, env))
- {
- is_soap = AXIS2_FALSE;
- }
- else
- {
- is_soap = AXIS2_TRUE;
- }
-
- if (!is_soap)
- {
- soap_body = axiom_soap_envelope_get_body(out, env);
- if (!soap_body)
- {
- AXIS2_HANDLE_ERROR(env,
- AXIS2_ERROR_SOAP_ENVELOPE_OR_SOAP_BODY_NULL,
- AXIS2_FAILURE);
- return AXIS2_FAILURE;
- }
-
- body_node = axiom_soap_body_get_base_node(soap_body, env);
- if (!body_node)
- {
- AXIS2_HANDLE_ERROR(env,
- AXIS2_ERROR_SOAP_ENVELOPE_OR_SOAP_BODY_NULL,
- AXIS2_FAILURE);
-
- return AXIS2_FAILURE;
- }
- data_out = axiom_node_get_first_element(body_node, env);
-
- method = (axutil_property_t *) axis2_msg_ctx_get_property(msg_ctx, env,
- AXIS2_HTTP_METHOD);
-
- if (method)
- {
- method_value =
- (axis2_char_t *) axutil_property_get_value(method, env);
- }
-
- /* The default is POST */
- if (method_value && 0 == axutil_strcmp(method_value, AXIS2_HTTP_GET))
- {
- send_via_get = AXIS2_TRUE;
- }
- else if (method_value && 0 == axutil_strcmp(method_value, AXIS2_HTTP_HEAD))
- {
- send_via_head = AXIS2_TRUE;
- }
- else if (method_value && 0 == axutil_strcmp(method_value, AXIS2_HTTP_PUT))
- {
- send_via_put = AXIS2_TRUE;
- }
- else if (method_value && 0 == axutil_strcmp(method_value, AXIS2_HTTP_DELETE))
- {
- send_via_delete = AXIS2_TRUE;
- }
- }
-
- conf_ctx = axis2_msg_ctx_get_conf_ctx (msg_ctx, env);
- if (conf_ctx)
- {
- conf = axis2_conf_ctx_get_conf (conf_ctx, env);
- }
-
- if (conf)
- {
- trans_desc = axis2_conf_get_transport_out (conf,
- env, AXIS2_TRANSPORT_ENUM_HTTP);
- }
-
- if (trans_desc)
- {
- write_xml_declaration_param =
- axutil_param_container_get_param
- (axis2_transport_out_desc_param_container (trans_desc, env), env,
- AXIS2_XML_DECLARATION);
- }
-
- if (write_xml_declaration_param)
- {
- transport_attrs =
- axutil_param_get_attributes (write_xml_declaration_param, env);
- if (transport_attrs)
- {
- axutil_generic_obj_t *obj = NULL;
- axiom_attribute_t *write_xml_declaration_attr = NULL;
- axis2_char_t *write_xml_declaration_attr_value = NULL;
-
- obj = axutil_hash_get (transport_attrs, AXIS2_ADD_XML_DECLARATION,
- AXIS2_HASH_KEY_STRING);
- if (obj)
- {
- write_xml_declaration_attr = (axiom_attribute_t *)
- axutil_generic_obj_get_value (obj,
- env);
- }
- if (write_xml_declaration_attr)
- {
- write_xml_declaration_attr_value =
- axiom_attribute_get_value (write_xml_declaration_attr, env);
- }
- if (write_xml_declaration_attr_value &&
- 0 == axutil_strcasecmp (write_xml_declaration_attr_value,
- AXIS2_VALUE_TRUE))
- {
- write_xml_declaration = AXIS2_TRUE;
- }
- }
- }
-
- if (write_xml_declaration)
- {
- axiom_output_write_xml_version_encoding (om_output, env);
- }
-
- if (!send_via_get && !send_via_head && !send_via_delete)
- {
- xml_writer = axiom_output_get_xml_writer(om_output, env);
-
- char_set_enc_str = axis2_msg_ctx_get_charset_encoding(msg_ctx, env);
-
- if (!char_set_enc_str)
- {
- char_set_enc = AXIS2_DEFAULT_CHAR_SET_ENCODING;
- }
- else
- {
- char_set_enc = axutil_string_get_buffer(char_set_enc_str, env);
- }
-
- if (!send_via_put && is_soap)
- {
- doing_mtom = axis2_msg_ctx_get_doing_mtom(msg_ctx, env);
-
- axiom_output_set_do_optimize(om_output, env, doing_mtom);
- axiom_soap_envelope_serialize(out, env, om_output, AXIS2_FALSE);
- if (AXIS2_TRUE == axis2_msg_ctx_get_is_soap_11(msg_ctx, env))
- {
- if (AXIS2_ESC_DOUBLE_QUOTE != *soap_action)
- {
- axis2_char_t *tmp_soap_action = NULL;
- tmp_soap_action =
- AXIS2_MALLOC(env->allocator,
- (axutil_strlen(soap_action) +
- 5) * sizeof(axis2_char_t));
- sprintf(tmp_soap_action, "\"%s\"", soap_action);
- tmp_strcat = axutil_stracat(env, soap_action_header,tmp_soap_action);
- headers = curl_slist_append(headers, tmp_strcat);
- AXIS2_FREE(env->allocator, tmp_strcat);
- AXIS2_FREE(env->allocator, tmp_soap_action);
- }
- else
- {
- tmp_strcat = axutil_stracat(env, soap_action_header, soap_action);
- headers = curl_slist_append(headers, tmp_strcat );
- AXIS2_FREE(env->allocator, tmp_strcat);
- }
- }
-
- if (doing_mtom)
- {
- /*
- * AXIS2C-1270: MTOM is broken in libcurl sender. The old API call
- * below that would populate output_stream was commented out, but
- * the code at lines ~524-525 still tries to use output_stream
- * (which remains NULL/0), resulting in empty MTOM request bodies.
- *
- * The native HTTP sender uses axis2_http_transport_utils_send_mtom_message()
- * with mime_parts instead. Fixing this would require rewriting MTOM
- * handling in libcurl to use the mime_parts approach.
- *
- * Workaround: Use native HTTP sender (don't enable --enable-libcurl)
- * for SOAP services requiring MTOM attachments.
- */
- /*axiom_output_flush(om_output, env, &output_stream,
- &output_stream_size);*/
- axiom_output_flush(om_output, env);
- content_type =
- (axis2_char_t *) axiom_output_get_content_type(om_output,
- env);
- /* AXIS2C-1622: content_type from axiom_output is NOT allocated,
- * only mark as allocated if we create new strings below */
- if (AXIS2_TRUE != axis2_msg_ctx_get_is_soap_11(msg_ctx, env))
- {
- if (axutil_strcmp(soap_action, ""))
- {
- /* handle SOAP action for SOAP 1.2 case */
- axis2_char_t *temp_content_type = NULL;
- temp_content_type = axutil_stracat (env,
- content_type,
- AXIS2_CONTENT_TYPE_ACTION);
- content_type = temp_content_type;
- temp_content_type = axutil_stracat (env,
- content_type,
- soap_action);
- AXIS2_FREE (env->allocator, content_type);
- content_type = temp_content_type;
- temp_content_type =
- axutil_stracat (env, content_type,
- AXIS2_ESC_DOUBLE_QUOTE_STR);
- AXIS2_FREE (env->allocator, content_type);
- content_type = temp_content_type;
- content_type_allocated = AXIS2_TRUE;
- }
- }
- }
- else if (AXIS2_TRUE == axis2_msg_ctx_get_is_soap_11(msg_ctx, env))
- {
- axis2_char_t *temp_content_type = NULL;
- content_type =
- (axis2_char_t *) AXIS2_HTTP_HEADER_ACCEPT_TEXT_XML;
- content_type = axutil_stracat(env, content_type,
- AXIS2_CONTENT_TYPE_CHARSET);
- temp_content_type =
- axutil_stracat(env, content_type, char_set_enc);
- AXIS2_FREE(env->allocator, content_type);
- content_type = temp_content_type;
- content_type_allocated = AXIS2_TRUE;
- }
- else
- {
- axis2_char_t *temp_content_type = NULL;
- content_type =
- (axis2_char_t *) AXIS2_HTTP_HEADER_ACCEPT_APPL_SOAP;
- content_type = axutil_stracat(env, content_type,
- AXIS2_CONTENT_TYPE_CHARSET);
- temp_content_type =
- axutil_stracat(env, content_type, char_set_enc);
- AXIS2_FREE(env->allocator, content_type);
- content_type = temp_content_type;
- if (axutil_strcmp(soap_action, ""))
- {
- temp_content_type =
- axutil_stracat(env, content_type,
- AXIS2_CONTENT_TYPE_ACTION);
- AXIS2_FREE(env->allocator, content_type);
- content_type = temp_content_type;
- temp_content_type =
- axutil_stracat(env, content_type, soap_action);
- AXIS2_FREE(env->allocator, content_type);
- content_type = temp_content_type;
- }
- temp_content_type = axutil_stracat(env, content_type,
- AXIS2_SEMI_COLON_STR);
- AXIS2_FREE(env->allocator, content_type);
- content_type = temp_content_type;
- content_type_allocated = AXIS2_TRUE;
- }
- }
- else if (is_soap)
- {
- AXIS2_LOG_ERROR (env->log, AXIS2_LOG_SI, "Attempt to send SOAP"
- "message using HTTP PUT failed");
- return AXIS2_FAILURE;
- }
- else
- {
- axutil_property_t *content_type_property = NULL;
- axutil_hash_t *content_type_hash = NULL;
- axis2_char_t *content_type_value = NULL;
-
- axiom_node_serialize(data_out, env, om_output);
- content_type_property =
- (axutil_property_t *)
- axis2_msg_ctx_get_property(msg_ctx, env,
- AXIS2_USER_DEFINED_HTTP_HEADER_CONTENT_TYPE);
-
- if (content_type_property)
- {
- content_type_hash =
- (axutil_hash_t *)
- axutil_property_get_value(content_type_property, env);
-
- if (content_type_hash)
- {
- content_type_value =
- (char *) axutil_hash_get(content_type_hash,
- AXIS2_HTTP_HEADER_CONTENT_TYPE,
- AXIS2_HASH_KEY_STRING);
- }
- }
-
- if (content_type_value)
- {
- content_type = content_type_value;
- /* AXIS2C-1622: content_type_value is from property, NOT allocated by us */
- }
- else
- {
- content_type = axutil_strdup(env,AXIS2_HTTP_HEADER_ACCEPT_TEXT_XML);
- content_type_allocated = AXIS2_TRUE;
- }
-
- }
-
- buffer = axiom_xml_writer_get_xml(xml_writer, env);
- if (!doing_mtom)
- {
- buffer_size = axiom_xml_writer_get_xml_size(xml_writer, env);
- }
- else
- buffer_size = output_stream_size;
- {
- /*
- * Curl calculates the content-length automatically.
- * This commented section is not only unnecessary,
- * it interferes with authentication.
- *
- * NTLM, for example, will send an empty request
- * first (no body) to get the auth challenge
- * before resending with actual content.
- */
- /*char tmp_buf[10];
- sprintf(tmp_buf, "%d", buffer_size);
- tmp_strcat = axutil_stracat(env, content_len, tmp_buf);
- headers = curl_slist_append(headers, tmp_strcat);
- AXIS2_FREE(env->allocator, tmp_strcat);
- tmp_strcat = NULL;*/
-
- tmp_strcat = axutil_stracat(env, content, content_type);
- headers = curl_slist_append(headers, tmp_strcat);
- AXIS2_FREE(env->allocator, tmp_strcat);
- tmp_strcat = NULL;
- }
-
- if (!doing_mtom)
- {
- curl_easy_setopt(handler, CURLOPT_POSTFIELDSIZE, buffer_size);
- curl_easy_setopt(handler, CURLOPT_POSTFIELDS, buffer);
- }
- else
- {
- curl_easy_setopt(handler, CURLOPT_POSTFIELDSIZE,
- output_stream_size);
- curl_easy_setopt(handler, CURLOPT_POSTFIELDS, output_stream);
- }
-
- if (send_via_put)
- {
- curl_easy_setopt(handler, CURLOPT_CUSTOMREQUEST, AXIS2_HTTP_PUT);
- }
- curl_easy_setopt(handler, CURLOPT_URL, str_url);
- }
- else
- {
- axis2_char_t *request_param;
- axis2_char_t *url_encode;
- request_param =
- (axis2_char_t *) axis2_http_sender_get_param_string(NULL, env,
- msg_ctx);
- url_encode = axutil_strcat(env, str_url, AXIS2_Q_MARK_STR,
- request_param, NULL);
- if (send_via_get)
- {
- curl_easy_setopt(handler, CURLOPT_HTTPGET, 1);
- }
- else if (send_via_head)
- {
- curl_easy_setopt(handler, CURLOPT_NOBODY, 1);
- }
- else if (send_via_delete)
- {
- curl_easy_setopt(handler, CURLOPT_CUSTOMREQUEST, AXIS2_HTTP_DELETE);
- }
- curl_easy_setopt(handler, CURLOPT_URL, url_encode);
- }
-
- {
- axis2_bool_t manage_session;
- manage_session = axis2_msg_ctx_get_manage_session(msg_ctx, env);
- if (manage_session == AXIS2_TRUE)
- {
- if (data->cookies == AXIS2_FALSE)
- {
- /* Ensure cookies enabled to manage session */
- /* Pass empty cookie string to enable cookies */
- curl_easy_setopt(handler, CURLOPT_COOKIEFILE, " ");
- data->cookies = AXIS2_TRUE;
- }
- }
- else if (data->cookies == AXIS2_TRUE)
- {
- /* Pass special string ALL to reset cookies if any have been enabled. */
- /* If cookies have ever been enabled, we reset every time as long as
- manage_session is false, as there is no clear curl option to
- turn off the cookie engine once enabled. */
- curl_easy_setopt(handler, CURLOPT_COOKIELIST, AXIS2_ALL);
- }
- }
-
- curl_easy_setopt(handler, CURLOPT_HTTPHEADER, headers);
- curl_easy_setopt(handler, CURLOPT_WRITEFUNCTION,
- axis2_libcurl_write_memory_callback);
- curl_easy_setopt(handler, CURLOPT_WRITEDATA, data);
-
- curl_easy_setopt (handler, CURLOPT_HEADERFUNCTION, axis2_libcurl_header_callback);
-
- curl_easy_setopt (handler, CURLOPT_WRITEHEADER, data);
-
- /* Free response data from previous request */
- if( data->size )
- {
- if (data->memory)
- {
- AXIS2_FREE(data->env->allocator, data->memory);
- }
- data->size = 0;
- }
-
- if (curl_easy_perform(handler))
- {
- AXIS2_LOG_ERROR (env->log, AXIS2_LOG_SI, "%s", &data->errorbuffer);
- AXIS2_HANDLE_ERROR(env, AXIS2_ERROR_HTTP_CLIENT_TRANSPORT_ERROR,
- AXIS2_FAILURE);
- return AXIS2_FAILURE;
- }
-
- in_stream = axutil_stream_create_libcurl(env, data->memory, data->size);
- trans_in_property = axutil_property_create(env);
- axutil_property_set_scope(trans_in_property, env, AXIS2_SCOPE_REQUEST);
- /* Do not set a custom free_func pointing to libcurl_stream_free.
- * The libcurl library may be unloaded before the property is freed,
- * making the function pointer invalid. The default property cleanup
- * (AXIS2_FREE when own_value is true) correctly frees the stream struct. */
- axutil_property_set_value(trans_in_property, env, in_stream);
- axis2_msg_ctx_set_property(msg_ctx, env, AXIS2_TRANSPORT_IN,
- trans_in_property);
-
- if (axutil_array_list_size(data->alist, env) > 0)
- {
- status_line_str = axutil_array_list_get(data->alist, env, 0);
- if (status_line_str)
- {
- status_line = axis2_http_status_line_create(env, status_line_str);
- }
- }
-
- if (status_line)
- {
- status_code = axis2_http_status_line_get_status_code(status_line, env);
- }
-
- axis2_msg_ctx_set_status_code (msg_ctx, env, status_code);
- /* AXIS2C-1622: Only free content_type if we allocated it.
- * In some cases (MTOM, REST with user content type) it points to
- * external memory that we must not free. */
- if (content_type_allocated)
- {
- AXIS2_FREE(data->env->allocator, content_type);
- }
- content_type = axis2_libcurl_get_content_type(data, env);
-
- if (content_type)
- {
- if (strstr (content_type, AXIS2_HTTP_HEADER_ACCEPT_MULTIPART_RELATED)
- && strstr (content_type, AXIS2_HTTP_HEADER_ACCEPT_XOP_XML))
- {
- axis2_ctx_t *axis_ctx =
- axis2_op_ctx_get_base (axis2_msg_ctx_get_op_ctx (msg_ctx, env),
- env);
- property = axutil_property_create (env);
- axutil_property_set_scope (property, env, AXIS2_SCOPE_REQUEST);
- axutil_property_set_value (property,
- env, axutil_strdup (env, content_type));
- axis2_ctx_set_property (axis_ctx,
- env, MTOM_RECIVED_CONTENT_TYPE, property);
- }
- }
-
- content_length = axis2_libcurl_get_content_length(data, env);
- if (content_length >= 0)
- {
- response_length = AXIS2_MALLOC (env->allocator, sizeof (int));
- memcpy (response_length, &content_length, sizeof (int));
- property = axutil_property_create (env);
- axutil_property_set_scope (property, env, AXIS2_SCOPE_REQUEST);
- axutil_property_set_value (property, env, response_length);
- axis2_msg_ctx_set_property (msg_ctx, env,
- AXIS2_HTTP_HEADER_CONTENT_LENGTH, property);
- }
-
- curl_slist_free_all (headers);
- /* release the read http headers. */
- /* (commenting out the call below is a clever way to force a premature EOF
- condition in subsequent messages, as they will be read using the content-length
- of the first message.) */
- axis2_libcurl_free_headers(data, env);
- AXIS2_FREE(data->env->allocator, content_type);
- axis2_http_status_line_free( status_line, env);
-
- return AXIS2_SUCCESS;
-}
-
-static size_t
-axis2_libcurl_write_memory_callback(
- void *ptr,
- size_t size,
- size_t nmemb,
- void *data)
-{
- size_t realsize = size * nmemb;
- axis2_libcurl_t *curl = (axis2_libcurl_t *) data;
- axis2_char_t *buffer =
- (axis2_char_t *) AXIS2_MALLOC(curl->env->allocator,
- curl->size + realsize + 1);
- if (buffer)
- {
- if (curl->size)
- {
- memcpy(&(buffer[0]), curl->memory, curl->size);
- AXIS2_FREE(curl->env->allocator, curl->memory);
- }
-
- memcpy(&(buffer[curl->size]), ptr, realsize);
- curl->size += (int)realsize;
- /* We are sure that the difference lies within the int range */
- buffer[curl->size] = 0;
- curl->memory = buffer;
- }
- return realsize;
-}
-
-static size_t
-axis2_libcurl_header_callback(
- void *ptr,
- size_t size,
- size_t nmemb,
- void *data)
-{
- axis2_char_t *memory;
- size_t realsize = size * nmemb;
- axis2_libcurl_t *curl = (axis2_libcurl_t *) data;
- memory = (axis2_char_t *)AXIS2_MALLOC(curl->env->allocator, realsize + 1);
- if (memory)
- {
- memcpy(&(memory[0]), ptr, realsize);
- memory[realsize] = 0;
- axutil_array_list_add(curl->alist, curl->env, memory);
- }
- return realsize;
-}
-
-axis2_libcurl_t * AXIS2_CALL
-axis2_libcurl_create(
- const axutil_env_t * env)
-{
- axis2_libcurl_t *curl = NULL;
- CURLcode code;
-
- if (!ref)
- {
- /* curl_global_init is not thread-safe so it would be better
- to do this, as well as the test and increment of ref, under
- mutex if one is available, or as part of an
- axis2_initialize() if a global initialize is created.
- Otherwise the client application should perform the the
- curl_global_init itself in a thread-safe fashion.
- */
- code = curl_global_init(CURL_GLOBAL_ALL);
- if (code)
- {
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
- "libcurl curl_global_init failed, error: %d", code);
- return NULL;
- }
- ref++;
- }
-
- curl =
- (axis2_libcurl_t *) AXIS2_MALLOC(env->allocator,
- sizeof(axis2_libcurl_t));
- if (curl)
- {
- curl->memory = 0;
- curl->size = 0;
- curl->alist = axutil_array_list_create(env, 15);
- curl->env = env;
- curl->handler = curl_easy_init();
- curl->cookies = AXIS2_FALSE;
- if ((!curl->alist) || (!curl->handler))
- {
- axis2_libcurl_free(curl, env);
- curl = 0;
- }
- }
- return curl;
-}
-
-void AXIS2_CALL
-axis2_libcurl_free(
- axis2_libcurl_t *curl,
- const axutil_env_t * env)
-{
- if (!curl)
- {
- return;
- }
-
- if (curl->handler)
- {
- curl_easy_cleanup (curl->handler);
- }
- if (curl->alist)
- {
- axis2_libcurl_free_headers(curl, env);
- axutil_array_list_free(curl->alist, env);
- curl->alist = NULL;
- }
- if (curl->memory)
- {
- AXIS2_FREE(env->allocator, curl->memory);
- }
-
- AXIS2_FREE(env->allocator, curl);
-}
-
-static void
-axis2_libcurl_free_headers(
- axis2_libcurl_t *curl,
- const axutil_env_t * env)
-{
- int count = 0;
- axutil_array_list_t *header_group = curl->alist;
- if (header_group)
- {
- while ((count = axutil_array_list_size(header_group, env)) > 0)
- {
- axis2_char_t *header = axutil_array_list_remove(header_group, env, count-1);
- AXIS2_FREE(env->allocator, header);
- }
- }
-}
-
-static axis2_http_header_t *
-axis2_libcurl_get_first_header(
- axis2_libcurl_t *curl,
- const axutil_env_t * env,
- const axis2_char_t * str)
-{
- axis2_http_header_t *tmp_header = NULL;
- axis2_char_t *tmp_header_str = NULL;
- axis2_char_t *tmp_name = NULL;
- int i = 0;
- int count = 0;
- axutil_array_list_t *header_group = NULL;
-
- AXIS2_PARAM_CHECK(env->error, curl, NULL);
- AXIS2_PARAM_CHECK(env->error, str, NULL);
-
- header_group = curl->alist;
- if (!header_group)
- {
- return NULL;
- }
-
- if (0 == axutil_array_list_size(header_group, env))
- {
- return NULL;
- }
-
- count = axutil_array_list_size(header_group, env);
-
- for (i = 0; i < count; i++)
- {
- tmp_header_str = (axis2_char_t *) axutil_array_list_get(header_group,
- env, i);
- if(!tmp_header_str)
- {
- continue;
- }
- tmp_header = (axis2_http_header_t *) axis2_http_header_create_by_str(env, tmp_header_str);
- if(!tmp_header)
- {
- continue;
- }
-
- tmp_name = axis2_http_header_get_name(tmp_header, env);
- if (0 == axutil_strcasecmp(str, tmp_name))
- {
- return tmp_header;
- }
- else
- {
- axis2_http_header_free( tmp_header, env );
- }
-
- }
- return NULL;
-}
-
-static int
-axis2_libcurl_get_content_length(
- axis2_libcurl_t *curl,
- const axutil_env_t * env)
-{
- axis2_http_header_t *tmp_header;
- int rtn_value = -1;
-
- tmp_header = axis2_libcurl_get_first_header
- (curl, env, AXIS2_HTTP_HEADER_CONTENT_LENGTH);
- if (tmp_header)
- {
- rtn_value = AXIS2_ATOI(axis2_http_header_get_value(tmp_header, env));
- axis2_http_header_free( tmp_header, env );
- }
- return rtn_value;
-}
-
-static axis2_char_t *
-axis2_libcurl_get_content_type(
- axis2_libcurl_t *curl,
- const axutil_env_t * env)
-{
- axis2_http_header_t *tmp_header;
- axis2_char_t *rtn_value = NULL;
-
- tmp_header = axis2_libcurl_get_first_header
- (curl, env, AXIS2_HTTP_HEADER_CONTENT_TYPE);
- if (tmp_header)
- {
- rtn_value = axutil_strdup (env, axis2_http_header_get_value(tmp_header, env) );
- axis2_http_header_free( tmp_header, env );
- }
- else
- {
- rtn_value = axutil_strdup (env, AXIS2_HTTP_HEADER_ACCEPT_TEXT_PLAIN);
- }
-
- return rtn_value;
-}
-
-/**
- * axis2_libcurl_set_auth_options maps authentication AXIS2/C options to
- * libcURL options.
- *
- * CURLOPT_USERPWD - char * user:password for authentication
- * CURLOPT_HTTPAUTH - long bitmask which authentication methods to use
- */
-static axis2_status_t
-axis2_libcurl_set_auth_options(
- CURL *handler,
- const axutil_env_t * env,
- axis2_msg_ctx_t * msg_ctx)
-{
- axutil_property_t *property = NULL;
- axis2_char_t *uname = NULL;
- axis2_char_t *passwd = NULL;
- axis2_char_t *auth_type = NULL;
-
- property = axis2_msg_ctx_get_property(msg_ctx, env, AXIS2_HTTP_AUTH_UNAME);
- if (property)
- {
- uname = (axis2_char_t *) axutil_property_get_value(property, env);
- }
- property = axis2_msg_ctx_get_property(msg_ctx, env, AXIS2_HTTP_AUTH_PASSWD);
- if (property)
- {
- passwd = (axis2_char_t *) axutil_property_get_value(property, env);
- }
- if (uname && passwd)
- {
- axis2_char_t buffer[256];
- strncpy(buffer, uname, 256);
- strncat(buffer, ":", 256);
- strncat(buffer, passwd, 256);
- curl_easy_setopt(handler, CURLOPT_USERPWD, buffer);
- }
-
- property = (axutil_property_t *)axis2_msg_ctx_get_property(msg_ctx, env, AXIS2_HTTP_AUTH_TYPE);
-
- if (property)
- {
- auth_type = (axis2_char_t *) axutil_property_get_value(property, env);
- }
-
- if (auth_type && 0 == axutil_strcmp(auth_type, AXIS2_HTTP_AUTH_TYPE_BASIC))
- {
- curl_easy_setopt(handler, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
- }
- else
- {
- /* Uses anonymous connection.*/
- }
-
- return AXIS2_SUCCESS;
-}
-
-/**
- * axis2_libcurl_set_proxy_options maps proxy AXIS2/C options to
- * libcURL options.
- *
- * CURLOPT_PROXY - char * proxy hostname
- * CURLOPT_PROXYPORT - long proxy listen port
- * CURLOPT_PROXYUSERPWD - char * user:password to authenticate to proxy
- *
- * TODO:
- * CURLOPT_PROXYTYPE - long enum type of proxy (HTTP, SOCKS)
- * CURLOPT_PROXYAUTH - long bitmask which authentication methods to use for proxy
- */
-static axis2_status_t
-axis2_libcurl_set_proxy_options(
- CURL *handler,
- const axutil_env_t * env,
- axis2_msg_ctx_t * msg_ctx)
-{
- axis2_conf_ctx_t *conf_ctx = NULL;
- axis2_conf_t *conf = NULL;
- axis2_transport_out_desc_t *trans_desc = NULL;
- axutil_param_t *proxy_param = NULL;
- axutil_hash_t *transport_attrs = NULL;
- axutil_property_t *property = NULL;
- axis2_char_t *uname = NULL;
- axis2_char_t *passwd = NULL;
- axis2_char_t *proxy_host = NULL;
- axis2_char_t *proxy_port = NULL;
-
- property = axis2_msg_ctx_get_property(msg_ctx, env, AXIS2_PROXY_AUTH_UNAME);
- if (property)
- {
- uname = (axis2_char_t *) axutil_property_get_value(property, env);
- }
- property = axis2_msg_ctx_get_property(msg_ctx, env, AXIS2_PROXY_AUTH_PASSWD);
- if (property)
- {
- passwd = (axis2_char_t *) axutil_property_get_value(property, env);
- }
-
- conf_ctx = axis2_msg_ctx_get_conf_ctx(msg_ctx, env);
- if (conf_ctx)
- {
- conf = axis2_conf_ctx_get_conf(conf_ctx, env);
- if (conf)
- {
- trans_desc = axis2_conf_get_transport_out(conf, env, AXIS2_TRANSPORT_ENUM_HTTP);
- }
- }
- if (trans_desc)
- {
- proxy_param = axutil_param_container_get_param(
- axis2_transport_out_desc_param_container(trans_desc, env), env, AXIS2_HTTP_PROXY_API);
- if (!proxy_param)
- {
- proxy_param = axutil_param_container_get_param(
- axis2_transport_out_desc_param_container(trans_desc, env), env, AXIS2_HTTP_PROXY);
- }
- if (proxy_param)
- {
- transport_attrs = axutil_param_get_attributes(proxy_param, env);
- }
- }
-
- if (transport_attrs)
- {
- axutil_generic_obj_t *obj = NULL;
- axiom_attribute_t *attr = NULL;
-
- if (!uname || !passwd)
- {
- obj = axutil_hash_get(transport_attrs, AXIS2_HTTP_PROXY_USERNAME, AXIS2_HASH_KEY_STRING);
- if (obj)
- {
- attr = (axiom_attribute_t *) axutil_generic_obj_get_value(obj, env);
- }
- if (attr)
- {
- uname = axiom_attribute_get_value(attr, env);
- }
-
- attr = NULL;
- obj = axutil_hash_get(transport_attrs, AXIS2_HTTP_PROXY_PASSWORD, AXIS2_HASH_KEY_STRING);
- if (obj)
- {
- attr = (axiom_attribute_t *)axutil_generic_obj_get_value(obj, env);
- }
- if (attr)
- {
- passwd = axiom_attribute_get_value(attr, env);
- }
- }
-
- obj = axutil_hash_get(transport_attrs, AXIS2_HTTP_PROXY_HOST, AXIS2_HASH_KEY_STRING);
- if (obj)
- {
- attr = (axiom_attribute_t *)axutil_generic_obj_get_value(obj, env);
- }
- if (attr)
- {
- proxy_host = axiom_attribute_get_value(attr, env);
- }
- if (proxy_host)
- {
- curl_easy_setopt(handler, CURLOPT_PROXY, proxy_host);
- }
-
- attr = NULL;
- obj = axutil_hash_get(transport_attrs, AXIS2_HTTP_PROXY_PORT, AXIS2_HASH_KEY_STRING);
- if (obj)
- {
- attr = (axiom_attribute_t *)axutil_generic_obj_get_value(obj, env);
- }
- if (attr)
- {
- proxy_port = axiom_attribute_get_value(attr, env);
- }
- if (proxy_port)
- {
- curl_easy_setopt(handler, CURLOPT_PROXYPORT, AXIS2_ATOI(proxy_port));
- }
- }
- if (uname && passwd)
- {
- axis2_char_t buffer[256];
- strncpy(buffer, uname, 256);
- strncat(buffer, ":", 256);
- strncat(buffer, passwd, 256);
- curl_easy_setopt(handler, CURLOPT_PROXYUSERPWD, buffer);
- }
-
- return AXIS2_SUCCESS;
-}
-
-/**
- * axis2_libcurl_set_ssl_options maps SSL AXIS2/C options to
- * libcURL options.
- *
- * CURLOPT_SSL_VERIFYHOST - long enum whether to verify the server identity
- * CURLOPT_SSL_VERIFYPEER - long boolean whether to verify the server certificate
- * CURLOPT_CAINFO - path to CA certificate file (SERVER_CERT)
- * CURLOPT_SSLCERT - path to client certificate file (KEY_FILE)
- * CURLOPT_KEYPASSWD - passphrase for encrypted private key (SSL_PASSPHRASE)
- */
-static axis2_status_t
-axis2_libcurl_set_ssl_options(
- CURL *handler,
- const axutil_env_t * env,
- axis2_msg_ctx_t * msg_ctx)
-{
- axutil_property_t *property = NULL;
- axutil_param_t *param = NULL;
- axis2_char_t *verify_peer = NULL;
- axis2_char_t *verify_host = NULL;
- axis2_char_t *server_cert = NULL;
- axis2_char_t *key_file = NULL;
- axis2_char_t *passphrase = NULL;
-
- property = axis2_msg_ctx_get_property(msg_ctx, env, AXIS2_SSL_VERIFY_PEER);
- if (property)
- {
- verify_peer = (axis2_char_t *)axutil_property_get_value(property, env);
- }
- if (verify_peer)
- {
- if (0 == axutil_strcasecmp(verify_peer, AXIS2_VALUE_TRUE))
- {
- curl_easy_setopt(handler, CURLOPT_SSL_VERIFYPEER, 1);
- }
- else
- {
- curl_easy_setopt(handler, CURLOPT_SSL_VERIFYPEER, 0);
- }
- }
-
- property = axis2_msg_ctx_get_property(msg_ctx, env, AXIS2_SSL_VERIFY_HOST);
- if (property)
- {
- verify_host = (axis2_char_t *)axutil_property_get_value(property, env);
- }
- if (verify_host)
- {
- curl_easy_setopt(handler, CURLOPT_SSL_VERIFYHOST, AXIS2_ATOI(verify_host));
- }
-
- /* AXIS2C-1550: Add support for SSL certificates from axis2.xml */
-
- /* SERVER_CERT - CA certificate for verifying the server */
- property = axis2_msg_ctx_get_property(msg_ctx, env, AXIS2_SSL_SERVER_CERT);
- if (property)
- {
- server_cert = (axis2_char_t *)axutil_property_get_value(property, env);
- }
- if (!server_cert)
- {
- param = axis2_msg_ctx_get_parameter(msg_ctx, env, AXIS2_SSL_SERVER_CERT);
- if (param)
- {
- server_cert = (axis2_char_t *)axutil_param_get_value(param, env);
- }
- }
- if (server_cert)
- {
- curl_easy_setopt(handler, CURLOPT_CAINFO, server_cert);
- AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "SSL CA certificate: %s", server_cert);
- }
-
- /* KEY_FILE - client certificate (and optionally key) for client authentication */
- property = axis2_msg_ctx_get_property(msg_ctx, env, AXIS2_SSL_KEY_FILE);
- if (property)
- {
- key_file = (axis2_char_t *)axutil_property_get_value(property, env);
- }
- if (!key_file)
- {
- param = axis2_msg_ctx_get_parameter(msg_ctx, env, AXIS2_SSL_KEY_FILE);
- if (param)
- {
- key_file = (axis2_char_t *)axutil_param_get_value(param, env);
- }
- }
- if (key_file)
- {
- curl_easy_setopt(handler, CURLOPT_SSLCERT, key_file);
- /* Also set as key file - combined PEM files contain both cert and key */
- curl_easy_setopt(handler, CURLOPT_SSLKEY, key_file);
- AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "SSL client certificate: %s", key_file);
- }
-
- /* SSL_PASSPHRASE - passphrase for encrypted private key */
- property = axis2_msg_ctx_get_property(msg_ctx, env, AXIS2_SSL_PASSPHRASE);
- if (property)
- {
- passphrase = (axis2_char_t *)axutil_property_get_value(property, env);
- }
- if (!passphrase)
- {
- param = axis2_msg_ctx_get_parameter(msg_ctx, env, AXIS2_SSL_PASSPHRASE);
- if (param)
- {
- passphrase = (axis2_char_t *)axutil_param_get_value(param, env);
- }
- }
- if (passphrase)
- {
- curl_easy_setopt(handler, CURLOPT_KEYPASSWD, passphrase);
- AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "SSL passphrase configured");
- }
-
- return AXIS2_SUCCESS;
-}
-
-/**
- * axis2_libcurl_set_connection_options maps connection AXIS2/C options to
- * libcURL options.
- * CURLOPT_CONNECTTIMEOUT_MS - long connection timeout in milliseconds
- * CURLOPT_TIMEOUT_MS - long transfer timeout in milliseconds
- */
-static axis2_status_t
-axis2_libcurl_set_connection_options(
- CURL *handler,
- const axutil_env_t * env,
- axis2_msg_ctx_t * msg_ctx)
-{
- axutil_property_t *property = NULL;
- long long_property_value = 0;
-
- /* check if timeout has been set by user using options
- * with axis2_options_set_timeout_in_milli_seconds
- */
- property = axis2_msg_ctx_get_property(msg_ctx, env, AXIS2_HTTP_CONNECTION_TIMEOUT);
- if (property)
- {
- axis2_char_t *value = axutil_property_get_value(property, env);
- if (value)
- {
- long_property_value = AXIS2_ATOI(value);
- curl_easy_setopt(handler, CURLOPT_CONNECTTIMEOUT_MS, long_property_value);
- }
- }
-
- property = axis2_msg_ctx_get_property(msg_ctx, env, AXIS2_HTTP_SO_TIMEOUT);
- if (property)
- {
- axis2_char_t *value = axutil_property_get_value(property, env);
- if (value)
- {
- long_property_value = AXIS2_ATOI(value);
- curl_easy_setopt(handler, CURLOPT_TIMEOUT_MS, long_property_value);
- }
- }
-
- return AXIS2_SUCCESS;
-}
-
-/**
- * axis2_libcurl_debug_callback routes libcurl debug information to the Axis2/C log.
- * This is called by libcurl when CURLOPT_VERBOSE is enabled and CURLOPT_DEBUGFUNCTION is set.
- * See: https://curl.se/libcurl/c/CURLOPT_DEBUGFUNCTION.html
- *
- * @param handle the curl handle
- * @param type the type of debug information (text, header in/out, data in/out, SSL)
- * @param data pointer to the debug data
- * @param size size of the debug data
- * @param userptr user pointer (we pass the axutil_env_t)
- * @return 0 always (required by libcurl)
- */
-static int
-axis2_libcurl_debug_callback(
- CURL *handle,
- curl_infotype type,
- char *data,
- size_t size,
- void *userptr)
-{
- const axutil_env_t *env = (const axutil_env_t *)userptr;
- const char *prefix = NULL;
- char *buffer = NULL;
-
- /* Avoid unused parameter warning */
- (void)handle;
-
- if (!env || !env->log || !data || size == 0)
- {
- return 0;
- }
-
- /* Determine the prefix based on the info type */
- switch (type)
- {
- case CURLINFO_TEXT:
- prefix = "[CURL] ";
- break;
- case CURLINFO_HEADER_OUT:
- prefix = "[CURL] >> Header: ";
- break;
- case CURLINFO_HEADER_IN:
- prefix = "[CURL] << Header: ";
- break;
- case CURLINFO_DATA_OUT:
- prefix = "[CURL] >> Data: ";
- break;
- case CURLINFO_DATA_IN:
- prefix = "[CURL] << Data: ";
- break;
- case CURLINFO_SSL_DATA_OUT:
- prefix = "[CURL] >> SSL: ";
- break;
- case CURLINFO_SSL_DATA_IN:
- prefix = "[CURL] << SSL: ";
- break;
- default:
- prefix = "[CURL] ";
- break;
- }
-
- /* For large data transfers, just log the size to avoid flooding the log */
- if (size > 1024 && (type == CURLINFO_DATA_IN || type == CURLINFO_DATA_OUT ||
- type == CURLINFO_SSL_DATA_IN || type == CURLINFO_SSL_DATA_OUT))
- {
- AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "%s(%zu bytes)", prefix, size);
- return 0;
- }
-
- /* Allocate buffer for null-terminated copy (data may not be null-terminated) */
- buffer = (char *)AXIS2_MALLOC(env->allocator, size + 1);
- if (!buffer)
- {
- return 0;
- }
-
- memcpy(buffer, data, size);
- buffer[size] = '\0';
-
- /* Trim trailing newlines for cleaner log output */
- while (size > 0 && (buffer[size - 1] == '\r' || buffer[size - 1] == '\n'))
- {
- buffer[--size] = '\0';
- }
-
- if (size > 0)
- {
- AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "%s%s", prefix, buffer);
- }
-
- AXIS2_FREE(env->allocator, buffer);
- return 0;
-}
-
-/**
- * axis2_libcurl_set_debug_options enables libcurl verbose logging when Axis2/C
- * debug logging is enabled. This helps debug HTTP transport issues.
- * AXIS2C-1371: Axis should log libcurl debug information
- */
-static axis2_status_t
-axis2_libcurl_set_debug_options(
- CURL *handler,
- const axutil_env_t *env)
-{
- if (!env || !env->log)
- {
- return AXIS2_SUCCESS;
- }
-
- /* Enable verbose logging only when debug level is active and not USER level */
- if (env->log->level >= AXIS2_LOG_LEVEL_DEBUG && env->log->level != AXIS2_LOG_LEVEL_USER)
- {
- curl_easy_setopt(handler, CURLOPT_VERBOSE, 1L);
- curl_easy_setopt(handler, CURLOPT_DEBUGFUNCTION, axis2_libcurl_debug_callback);
- curl_easy_setopt(handler, CURLOPT_DEBUGDATA, (void *)env);
- AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "libcurl verbose logging enabled");
- }
-
- return AXIS2_SUCCESS;
-}
-
-/**
- * axis2_libcurl_set_options maps the AXIS2/C options to libcURL options.
- */
-static axis2_status_t
-axis2_libcurl_set_options(
- CURL *handler,
- const axutil_env_t * env,
- axis2_msg_ctx_t * msg_ctx)
-{
- /* AXIS2C-1371: Enable debug logging first */
- if (axis2_libcurl_set_debug_options(handler, env) != AXIS2_SUCCESS)
- {
- return AXIS2_FAILURE;
- }
- if (axis2_libcurl_set_auth_options(handler, env, msg_ctx) != AXIS2_SUCCESS)
- {
- return AXIS2_FAILURE;
- }
-
- if (axis2_libcurl_set_proxy_options(handler, env, msg_ctx) != AXIS2_SUCCESS)
- {
- return AXIS2_FAILURE;
- }
-
- if (axis2_libcurl_set_ssl_options(handler, env, msg_ctx) != AXIS2_SUCCESS)
- {
- return AXIS2_FAILURE;
- }
-
- if (axis2_libcurl_set_connection_options(handler, env, msg_ctx) != AXIS2_SUCCESS)
- {
- return AXIS2_FAILURE;
- }
-
- return AXIS2_SUCCESS;
-}
-
-
-#endif /* AXIS2_LIBCURL_ENABLED */
-
diff --git a/src/core/transport/http/sender/libcurl/axis2_libcurl.h b/src/core/transport/http/sender/libcurl/axis2_libcurl.h
deleted file mode 100644
index f2971e504..000000000
--- a/src/core/transport/http/sender/libcurl/axis2_libcurl.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef AXIS2_LIBCURL_H
-#define AXIS2_LIBCURL_H
-#include <curl/curl.h>
-#include <stdio.h>
-#include <string.h>
-#include <axis2_http_sender.h>
-#include <axutil_string.h>
-#include <axutil_types.h>
-#include <axutil_generic_obj.h>
-#include <axis2_const.h>
-#include <axis2_util.h>
-#include <axiom.h>
-
-/* typedef struct axis2_libcurl axis2_libcurl_t; */
-/* actually defined in axis2_http_sender.h as it is part of axis2/include */
-
-AXIS2_EXTERN axis2_libcurl_t *AXIS2_CALL
-axis2_libcurl_create(
- const axutil_env_t * env);
-
-AXIS2_EXTERN void AXIS2_CALL
-axis2_libcurl_free(
- axis2_libcurl_t *data,
- const axutil_env_t * env);
-
-AXIS2_EXTERN axis2_status_t AXIS2_CALL
-axis2_libcurl_send(
- axis2_libcurl_t *data,
- axiom_output_t * om_output,
- const axutil_env_t * env,
- axis2_msg_ctx_t * msg_ctx,
- axiom_soap_envelope_t * out,
- const axis2_char_t * str_url,
- const axis2_char_t * soap_action);
-
-#endif /* AXIS2_LIBCURL_H */
diff --git a/src/core/transport/http/sender/libcurl/libcurl_stream.c b/src/core/transport/http/sender/libcurl/libcurl_stream.c
deleted file mode 100644
index 0c9126d1a..000000000
--- a/src/core/transport/http/sender/libcurl/libcurl_stream.c
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifdef AXIS2_LIBCURL_ENABLED
-
-#include "libcurl_stream.h"
-#include <string.h>
-
-typedef struct libcurl_stream_impl
-{
- axutil_stream_t stream;
- axutil_stream_type_t stream_type;
- axis2_char_t *buffer;
- int size;
- int read_len;
-}
-libcurl_stream_impl_t;
-
-#define AXIS2_INTF_TO_IMPL(stream) ((libcurl_stream_impl_t *)(stream))
-
-/********************************Function headers******************************/
-axutil_stream_type_t AXIS2_CALL libcurl_stream_get_type(
- axutil_stream_t * stream,
- const axutil_env_t * env);
-
-int AXIS2_CALL libcurl_stream_write(
- axutil_stream_t * stream,
- const axutil_env_t * env,
- const void *buffer,
- size_t count);
-
-int AXIS2_CALL libcurl_stream_read(
- axutil_stream_t * stream,
- const axutil_env_t * env,
- void *buffer,
- size_t count);
-
-int AXIS2_CALL libcurl_stream_skip(
- axutil_stream_t * stream,
- const axutil_env_t * env,
- int count);
-
-int AXIS2_CALL libcurl_stream_get_char(
- axutil_stream_t * stream,
- const axutil_env_t * env);
-
-/************************* End of function headers ****************************/
-
-/*
- * Internal function. Not exposed to outside
- */
-AXIS2_EXTERN axutil_stream_t *AXIS2_CALL
-axutil_stream_create_libcurl(
- const axutil_env_t * env,
- axis2_char_t * buffer,
- unsigned int size)
-{
- libcurl_stream_impl_t *stream_impl = NULL;
-
- AXIS2_PARAM_CHECK(env->error, buffer, NULL);
-
- stream_impl =
- (libcurl_stream_impl_t *) AXIS2_MALLOC(env->allocator,
- sizeof(libcurl_stream_impl_t));
-
- if (!stream_impl)
- {
- AXIS2_HANDLE_ERROR(env, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
- return NULL;
- }
-
- stream_impl->buffer = buffer;
- stream_impl->size = size;
- stream_impl->read_len = 0;
- stream_impl->stream_type = AXIS2_STREAM_MANAGED;
-
- axutil_stream_set_read(&(stream_impl->stream), env, libcurl_stream_read);
- axutil_stream_set_write(&(stream_impl->stream), env, libcurl_stream_write);
- axutil_stream_set_skip(&(stream_impl->stream), env, libcurl_stream_skip);
-
- return &(stream_impl->stream);
-}
-
-void AXIS2_CALL
-libcurl_stream_free(
- void * stream,
- const axutil_env_t * env)
-{
- libcurl_stream_impl_t *stream_impl = NULL;
-
- stream_impl = AXIS2_INTF_TO_IMPL(stream);
- AXIS2_FREE(env->allocator, stream_impl);
-
- return;
-}
-
-int AXIS2_CALL
-libcurl_stream_read(
- axutil_stream_t * stream,
- const axutil_env_t * env,
- void *buffer,
- size_t count)
-{
- libcurl_stream_impl_t *stream_impl = NULL;
- int read = 0;
- int unread = 0;
-
- stream_impl = AXIS2_INTF_TO_IMPL(stream);
- if (stream_impl->size >= (int)count)
- /* We are sure that the difference lies within the int range */
- {
- if (buffer && (stream_impl->size > stream_impl->read_len))
- {
- unread = (stream_impl->size - stream_impl->read_len);
- if (unread > (int)count)
- /* We are sure that the difference lies within the int range */
- {
- memcpy(buffer, &stream_impl->buffer[stream_impl->read_len],
- count);
- read = (int)count;
- /* We are sure that the difference lies within the int range */
- stream_impl->read_len += read;
- }
- else
- {
- memcpy(buffer, &stream_impl->buffer[stream_impl->read_len],
- unread);
- read = unread;
- stream_impl->read_len += read;
- }
- }
- else
- read = 0;
- }
- else
- {
- if (buffer && (stream_impl->size > stream_impl->read_len))
- {
- memcpy(buffer, &stream_impl->buffer[stream_impl->read_len],
- stream_impl->size - stream_impl->read_len);
- read = stream_impl->size - stream_impl->read_len;
- stream_impl->read_len += read;
- }
- else
- read = 0;
- }
- return read;
-}
-
-int AXIS2_CALL
-libcurl_stream_write(
- axutil_stream_t * stream,
- const axutil_env_t * env,
- const void *buffer,
- size_t count)
-{
- return (int)count;
- /* We are sure that the difference lies within the int range */
-}
-
-int AXIS2_CALL
-libcurl_stream_skip(
- axutil_stream_t * stream,
- const axutil_env_t * env,
- int count)
-{
- return 0;
-}
-
-int AXIS2_CALL
-libcurl_stream_get_char(
- axutil_stream_t * stream,
- const axutil_env_t * env)
-{
- return 0;
-}
-
-#endif /* AXIS2_LIBCURL_ENABLED */
-
diff --git a/src/core/transport/http/sender/libcurl/libcurl_stream.h b/src/core/transport/http/sender/libcurl/libcurl_stream.h
deleted file mode 100644
index 8a24fcc49..000000000
--- a/src/core/transport/http/sender/libcurl/libcurl_stream.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef LIBCURL_STREAM_H
-#define LIBCURL_STREAM_H
-
-#include <axis2_const.h>
-#include <axis2_defines.h>
-#include <axutil_env.h>
-#include <axutil_stream.h>
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
- /** brief Constructor for creating apche2 stream
- * @return axutil_stream (libcurl)
- */
- AXIS2_EXTERN axutil_stream_t *AXIS2_CALL
- axutil_stream_create_libcurl(
- const axutil_env_t * env,
- axis2_char_t * buffer,
- unsigned int size);
-
- /** @} */
-
- void AXIS2_CALL libcurl_stream_free(
- void * stream,
- const axutil_env_t * env);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* LIBCURL_STREAM_H */
diff --git a/src/core/transport/http/sender/ntlm/Makefile.am b/src/core/transport/http/sender/ntlm/Makefile.am
deleted file mode 100644
index 9983fa6f7..000000000
--- a/src/core/transport/http/sender/ntlm/Makefile.am
+++ /dev/null
@@ -1,17 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-SUBDIRS = $(NTLM_WRAPPER_DIR)
-DIST_SUBDIRS=heimdal libntlm
-EXTRA_DIST=README
diff --git a/src/core/transport/http/sender/ntlm/README b/src/core/transport/http/sender/ntlm/README
deleted file mode 100644
index 4e9203c29..000000000
--- a/src/core/transport/http/sender/ntlm/README
+++ /dev/null
@@ -1,22 +0,0 @@
-NTLM authentication for Axis2/C clients using default http transport is made possible with this
-package. By default NTLM authentication is disabled in Axis2/C build. to enable NTLM authentication
-user need to configure Axis2/C with an external NTLM library like Heimdal[1]
-
-NTLM support is added to Axis2/C client transport as a dynamically loadedable library called axis2c_ntlm.
-This library will wrap a external NTLM library like Heimdal to provide NTLM support. Axis2/C is shipped with
-a wrapper to Heimdal which you can find under heimdal subdirectory here. Developers have tested successfully with a
-wrapper to libntlm[2] as well.
-
-One can write a wrapper to any other external NTLM libary of his choice by implementing axis2_ntlm.h header file and
-studying the heimdal wrapper here.
-
-To enable heimdal NTLM library at build time configure Axis2/C with following option
-configure --enable-heimdal=yes
-
-There are some examples of using NTLM authenticaion with Axis2/C clients under
-<AXIS2C_SOURCE>/samples/client/ntlm subdirecory.
-
-
-
-[1] http://www.h5l.org/
-[2] http://josefsson.org/libntlm/
diff --git a/src/core/transport/http/sender/ntlm/default/Makefile.am b/src/core/transport/http/sender/ntlm/default/Makefile.am
deleted file mode 100644
index c856127d6..000000000
--- a/src/core/transport/http/sender/ntlm/default/Makefile.am
+++ /dev/null
@@ -1,24 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-lib_LTLIBRARIES = libaxis2_ntlm.la
-
-
-libaxis2_ntlm_la_SOURCES = ../ntlm.c \
- default_ntlm_wrapper.c
-
-libaxis2_ntlm_la_LIBADD = $(top_builddir)/util/src/libaxutil.la
-
-libaxis2_ntlm_la_CPPFLAGS = -I$(top_srcdir)/include \
- -I$(top_srcdir)/util/include
diff --git a/src/core/transport/http/sender/ntlm/default/default_ntlm_wrapper.c b/src/core/transport/http/sender/ntlm/default/default_ntlm_wrapper.c
deleted file mode 100644
index dee3513a9..000000000
--- a/src/core/transport/http/sender/ntlm/default/default_ntlm_wrapper.c
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <axis2_ntlm.h>
-#include <axutil_utils_defines.h>
-#include <axutil_utils.h>
-#include <string.h>
-#include <axutil_string.h>
-
-void AXIS2_CALL
-default_ntlm_wrapper_free(
- axis2_ntlm_t * ntlm,
- const axutil_env_t * env);
-
-axis2_status_t AXIS2_CALL
-default_ntlm_wrapper_create_type1_message(
- axis2_ntlm_t * ntlm,
- const axutil_env_t * env,
- axis2_char_t **encoded_message,
- int *encoded_len,
- const axis2_char_t *uname,
- const axis2_char_t *passwd,
- const int flags,
- const axis2_char_t *domain);
-
-axis2_status_t AXIS2_CALL
-default_ntlm_wrapper_create_type3_message(
- axis2_ntlm_t * ntlm,
- const axutil_env_t * env,
- axis2_char_t *header_value,
- axis2_char_t **encoded_message,
- int *encoded_len,
- const axis2_char_t *uname,
- const axis2_char_t *passwd,
- const axis2_char_t *domain,
- const axis2_char_t *workstation);
-
-typedef struct default_ntlm_wrapper_impl_t
-{
- axis2_ntlm_t ntlm;
-
- /*xmlTextReaderPtr reader;*/
-
-} default_ntlm_wrapper_impl_t;
-
-#define AXIS2_INTF_TO_IMPL(p) ((default_ntlm_wrapper_impl_t*)p)
-#define AXIS2_IMPL_TO_INTF(p) &(p->ntlm)
-
-static const axis2_ntlm_ops_t axis2_ntlm_ops_var = {
- default_ntlm_wrapper_free,
- default_ntlm_wrapper_create_type1_message,
- default_ntlm_wrapper_create_type3_message };
-
-AXIS2_EXTERN axis2_ntlm_t *AXIS2_CALL
-axis2_ntlm_create(
- const axutil_env_t *env)
-{
- default_ntlm_wrapper_impl_t *wrapper_impl = NULL;
- wrapper_impl = (default_ntlm_wrapper_impl_t *)AXIS2_MALLOC(env->allocator,
- sizeof(default_ntlm_wrapper_impl_t));
-
- if(!wrapper_impl)
- {
- AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "No memory. Cannot create default ntlm wrapper");
- return NULL;
- }
- memset(wrapper_impl, 0, sizeof(default_ntlm_wrapper_impl_t));
- /*wrapper_impl->x=NULL;*/
- wrapper_impl->ntlm.ops = &axis2_ntlm_ops_var;
- return &(wrapper_impl->ntlm);
-}
-
-/**
- */
-void AXIS2_CALL
-default_ntlm_wrapper_free(
- axis2_ntlm_t * ntlm,
- const axutil_env_t * env)
-{
- default_ntlm_wrapper_impl_t *ntlm_impl = NULL;
- ntlm_impl = AXIS2_INTF_TO_IMPL(ntlm);
-
- AXIS2_FREE(env->allocator, AXIS2_INTF_TO_IMPL(ntlm));
- return;
-}
-
-axis2_status_t AXIS2_CALL
-default_ntlm_wrapper_create_type1_message(
- axis2_ntlm_t * ntlm,
- const axutil_env_t * env,
- axis2_char_t **encoded_message,
- int *encoded_len,
- const axis2_char_t *user,
- const axis2_char_t *password,
- const int flags,
- const axis2_char_t *domain)
-{
- axis2_status_t status = AXIS2_FAILURE;
- return status;
-}
-
-axis2_status_t AXIS2_CALL
-default_ntlm_wrapper_create_type3_message(
- axis2_ntlm_t * ntlm,
- const axutil_env_t * env,
- axis2_char_t *header_value,
- axis2_char_t **encoded_message,
- int *encoded_len,
- const axis2_char_t *user,
- const axis2_char_t *password,
- const axis2_char_t *domain,
- const axis2_char_t *workstation)
-{
- axis2_status_t status = AXIS2_FAILURE;
- return status;
-}
-
-
diff --git a/src/core/transport/http/sender/ntlm/heimdal/Makefile.am b/src/core/transport/http/sender/ntlm/heimdal/Makefile.am
deleted file mode 100644
index 9c1998868..000000000
--- a/src/core/transport/http/sender/ntlm/heimdal/Makefile.am
+++ /dev/null
@@ -1,29 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-lib_LTLIBRARIES = libaxis2_ntlm.la
-
-
-libaxis2_ntlm_la_SOURCES = ../ntlm.c \
- heimdal_ntlm_wrapper.c
-
-libaxis2_ntlm_la_LIBADD = @NTLM_LDFLAGS@ \
- $(top_builddir)/util/src/libaxutil.la
-
-#libaxis2_ntlm_la_LDFLAGS = -version-info $(VERSION_NO)
-
-
-libaxis2_ntlm_la_CPPFLAGS = -I$(top_srcdir)/include \
- -I$(top_srcdir)/util/include \
- @NTLM_CFLAGS@
diff --git a/src/core/transport/http/sender/ntlm/heimdal/heimdal_ntlm_wrapper.c b/src/core/transport/http/sender/ntlm/heimdal/heimdal_ntlm_wrapper.c
deleted file mode 100644
index 08dbc6907..000000000
--- a/src/core/transport/http/sender/ntlm/heimdal/heimdal_ntlm_wrapper.c
+++ /dev/null
@@ -1,384 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifdef AXIS2_NTLM_ENABLED
-
-#include <axis2_ntlm.h>
-#include <axutil_utils_defines.h>
-#include <axutil_utils.h>
-#include <string.h>
-#include <axutil_string.h>
-
-#include <roken.h>
-#include <krb5-types.h> /* or <inttypes.h> */
-#include <heimntlm.h>
-#include <openssl/rand.h>
-
-void AXIS2_CALL
-heimdal_ntlm_wrapper_free(
- axis2_ntlm_t * ntlm,
- const axutil_env_t * env);
-
-axis2_status_t AXIS2_CALL
-heimdal_ntlm_wrapper_create_type1_message(
- axis2_ntlm_t * ntlm,
- const axutil_env_t * env,
- axis2_char_t **encoded_message,
- int *encoded_len,
- const axis2_char_t *uname,
- const axis2_char_t *passwd,
- const int flags,
- const axis2_char_t *domain);
-
-axis2_status_t AXIS2_CALL
-heimdal_ntlm_wrapper_create_type3_message(
- axis2_ntlm_t * ntlm,
- const axutil_env_t * env,
- axis2_char_t *header_value,
- axis2_char_t **encoded_message,
- int *encoded_len,
- const axis2_char_t *uname,
- const axis2_char_t *passwd,
- const axis2_char_t *domain,
- const axis2_char_t *workstation);
-
-typedef struct heimdal_ntlm_wrapper_impl_t
-{
- axis2_ntlm_t ntlm;
-} heimdal_ntlm_wrapper_impl_t;
-
-#define AXIS2_INTF_TO_IMPL(p) ((heimdal_ntlm_wrapper_impl_t*)p)
-#define AXIS2_IMPL_TO_INTF(p) &(p->ntlm)
-
-static const axis2_ntlm_ops_t axis2_ntlm_ops_var = {
- heimdal_ntlm_wrapper_free,
- heimdal_ntlm_wrapper_create_type1_message,
- heimdal_ntlm_wrapper_create_type3_message };
-
-AXIS2_EXTERN axis2_ntlm_t *AXIS2_CALL
-axis2_ntlm_create(
- const axutil_env_t *env)
-{
- heimdal_ntlm_wrapper_impl_t *wrapper_impl = NULL;
- wrapper_impl = (heimdal_ntlm_wrapper_impl_t *)AXIS2_MALLOC(env->allocator,
- sizeof(heimdal_ntlm_wrapper_impl_t));
-
- if(!wrapper_impl)
- {
- AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "No memory. Cannot create heimdal ntlm wrapper");
- return NULL;
- }
- memset(wrapper_impl, 0, sizeof(heimdal_ntlm_wrapper_impl_t));
- wrapper_impl->ntlm.ops = &axis2_ntlm_ops_var;
- return &(wrapper_impl->ntlm);
-}
-
-/**
- */
-void AXIS2_CALL
-heimdal_ntlm_wrapper_free(
- axis2_ntlm_t * ntlm,
- const axutil_env_t * env)
-{
- heimdal_ntlm_wrapper_impl_t *ntlm_impl = NULL;
- ntlm_impl = AXIS2_INTF_TO_IMPL(ntlm);
-
- AXIS2_FREE(env->allocator, AXIS2_INTF_TO_IMPL(ntlm));
- return;
-}
-
-axis2_status_t AXIS2_CALL
-heimdal_ntlm_wrapper_create_type1_message(
- axis2_ntlm_t * ntlm,
- const axutil_env_t * env,
- axis2_char_t **encoded_message,
- int *encoded_len,
- const axis2_char_t *user,
- const axis2_char_t *password,
- const int flags,
- const axis2_char_t *domain)
-{
- struct ntlm_type1 type1;
- struct ntlm_buf data;
- int ret;
- heimdal_ntlm_wrapper_impl_t *ntlm_impl = NULL;
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
- ntlm_impl = AXIS2_INTF_TO_IMPL(ntlm);
-
-
- memset(&type1, 0, sizeof(type1));
-
- if(flags != 0)
- {
- type1.flags = NTLM_NEG_UNICODE|NTLM_NEG_TARGET|NTLM_NEG_NTLM|flags;
- }
- else
- {
- type1.flags = NTLM_NEG_UNICODE|NTLM_NEG_TARGET|NTLM_NEG_NTLM;
- }
- if(domain)
- {
- type1.domain = rk_UNCONST(domain);
- }
- else
- {
- type1.domain = NULL;
- }
- type1.hostname = NULL;
- type1.os[0] = 0;
- type1.os[1] = 0;
-
- ret = heim_ntlm_encode_type1(&type1, &data);
- if (ret)
- {
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
- "[heimdal_wrapper] heim_ntlm_encode_type1 call failed");
- return AXIS2_FAILURE;
- }
-
- *encoded_message = AXIS2_MALLOC(env->allocator, (2 * data.length));
- if(!*encoded_message)
- {
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
- "[heimdal_wrapper] Memory allocation for encoded message failed");
- return AXIS2_FAILURE;
- }
- *encoded_len = axutil_base64_encode_binary(*encoded_message, data.data, data.length);
-
- if(data.data)
- {
- free(data.data);
- }
-
- return AXIS2_SUCCESS;
-}
-
-axis2_status_t AXIS2_CALL
-heimdal_ntlm_wrapper_create_type3_message(
- axis2_ntlm_t * ntlm,
- const axutil_env_t * env,
- axis2_char_t *header_value,
- axis2_char_t **encoded_message,
- int *encoded_len,
- const axis2_char_t *user,
- const axis2_char_t *password,
- const axis2_char_t *domain,
- const axis2_char_t *workstation)
-{
-
- heimdal_ntlm_wrapper_impl_t *ntlm_impl = NULL;
- struct ntlm_type3 type3;
- struct ntlm_type2 type2;
- struct ntlm_buf data;
- int ret;
- int len;
-
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
- ntlm_impl = AXIS2_INTF_TO_IMPL(ntlm);
-
- memset(&type2, 0, sizeof(type2));
-
- len = axutil_strlen(header_value);
- len = 2 * len + 1;
- data.data = AXIS2_MALLOC(env->allocator, sizeof(char)*len);
- data.length = axutil_base64_decode_binary(data.data, header_value);
- ret = heim_ntlm_decode_type2(&data, &type2);
- AXIS2_FREE(env->allocator, data.data);
- data.data = NULL;
- if (ret)
- {
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
- "[heimdal_wrapper] heim_ntlm_decode_type2 call failed");
- return AXIS2_FAILURE;
- }
-
- memset(&type3, 0, sizeof(type3));
-
- type3.flags = type2.flags;
- type3.username = rk_UNCONST(user);
- type3.targetname = rk_UNCONST(type2.targetname);
- if(workstation)
- {
- type3.ws = rk_UNCONST(workstation);
- }
- else
- {
- type3.ws = NULL;
- }
- AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "type3.flags:***%d***", type3.flags);
- AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "type3.username:***%s***", type3.username);
- AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "type3.targetname:***%s***", type3.targetname);
- AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "type3.ws:***%s***", type3.ws);
-
- {
- struct ntlm_buf key;
- heim_ntlm_nt_key(password, &key);
-
- /* NTLM Version 1 if no targetinfo buffer.*/
-
- if (1 || type2.targetinfo.length == 0)
- {
-
- if (type2.flags & NTLM_NEG_NTLM2_SESSION)
- {
- unsigned char nonce[8];
- AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[heimdal_wrapper] ntlm2 session");
-
-
- if (RAND_bytes(nonce, sizeof(nonce)) != 1)
- {
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
- "[heimdal_wrapper] RAND_bytes function call failed");
- return AXIS2_FAILURE;
- }
-
- AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[heimdal_wrapper] calculate_ntlm2_sess");
- ret = heim_ntlm_calculate_ntlm2_sess(nonce,
- type2.challange,
- key.data,
- &type3.lm,
- &type3.ntlm);
- }
- else
- {
- AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[heimdal_wrapper] calculate_ntlm1");
- ret = heim_ntlm_calculate_ntlm1(key.data,
- key.length,
- type2.challange,
- &type3.ntlm);
-
- }
- if (ret)
- {
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
- "[heimdal_wrapper] heim_ntlm_calculate_ntlm1 function call failed");
- return AXIS2_FAILURE;
- }
-
- if (type2.flags & NTLM_NEG_KEYEX)
- {
- struct ntlm_buf sessionkey;
-
- AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[heimdal_wrapper] build_ntlm1_master");
- ret = heim_ntlm_build_ntlm1_master(key.data,
- key.length,
- &sessionkey,
- &type3.sessionkey);
- if (ret)
- {
- if (type3.lm.data)
- {
- free(type3.lm.data);
- }
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
- "[heimdal_wrapper] heim_ntlm_build_ntlm1_master function call failed");
- return AXIS2_FAILURE;
- }
-
- free(sessionkey.data);
- }
-
- }
- else
- {
- unsigned char ntlmv2[16];
- struct ntlm_targetinfo ti;
-
- /* verify infotarget */
-
- ret = heim_ntlm_decode_targetinfo(&type2.targetinfo, 1, &ti);
- if(ret)
- {
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
- "[heimdal_wrapper] heim_ntlm_decode_targetinfo function call failed");
- return AXIS2_FAILURE;
- }
-
- if (ti.domainname && domain && strcmp(ti.domainname, domain) != 0)
- {
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
- "[heimdal_wrapper] heim_ntlm_decode_targetinfo function returned wrong data");
- return AXIS2_FAILURE;
- }
-
- AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[heimdal_wrapper] calculate_ntlm2");
- ret = heim_ntlm_calculate_ntlm2(key.data,
- key.length,
- user,
- domain,
- type2.challange,
- &type2.targetinfo,
- ntlmv2,
- &type3.ntlm);
- if (ret)
- {
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
- "[heimdal_wrapper] heim_ntlm_calculate_ntlm2 function call failed");
- return AXIS2_FAILURE;
- }
-
- if (type2.flags & NTLM_NEG_KEYEX)
- {
- struct ntlm_buf sessionkey;
- AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[heimdal_wrapper] build_ntlm1_master");
- ret = heim_ntlm_build_ntlm1_master(ntlmv2, sizeof(ntlmv2),
- &sessionkey,
- &type3.sessionkey);
- memset(ntlmv2, 0, sizeof(ntlmv2));
- if (ret)
- {
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
- "[heimdal_wrapper] heim_ntlm_build_ntlm1_master function call failed");
- return AXIS2_FAILURE;
- }
-
- free(sessionkey.data);
- }
- }
-
- if(key.data)
- {
- free(key.data);
- }
- }
-
- ret = heim_ntlm_encode_type3(&type3, &data);
- if (ret)
- {
- heim_ntlm_free_type2(&type2);
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
- "[heimdal_wrapper] heim_ntlm_encode_type3 call failed");
- return AXIS2_FAILURE;
- }
-
- *encoded_message = AXIS2_MALLOC(env->allocator, (2 * data.length));
- if(!*encoded_message)
- {
- heim_ntlm_free_type2(&type2);
- free(type3.ntlm.data);
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
- "[heimdal_wrapper] Memory allocation for encoded message failed");
- return AXIS2_FAILURE;
- }
- *encoded_len = axutil_base64_encode_binary(*encoded_message, data.data, data.length);
- heim_ntlm_free_type2(&type2);
- free(type3.ntlm.data);
-
- return AXIS2_SUCCESS;
-}
-
-#endif
diff --git a/src/core/transport/http/sender/ntlm/libntlm/Makefile.am b/src/core/transport/http/sender/ntlm/libntlm/Makefile.am
deleted file mode 100644
index 54307dd60..000000000
--- a/src/core/transport/http/sender/ntlm/libntlm/Makefile.am
+++ /dev/null
@@ -1,29 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-lib_LTLIBRARIES = libaxis2_ntlm.la
-
-
-libaxis2_ntlm_la_SOURCES = ../ntlm.c \
- libntlm_wrapper.c
-
-libaxis2_ntlm_la_LIBADD = @NTLM_LDFLAGS@ \
- $(top_builddir)/util/src/libaxutil.la
-
-#libaxis2_ntlm_la_LDFLAGS = -version-info $(VERSION_NO)
-
-
-libaxis2_ntlm_la_CPPFLAGS = -I$(top_srcdir)/include \
- -I$(top_srcdir)/util/include \
- @NTLM_CFLAGS@
diff --git a/src/core/transport/http/sender/ntlm/libntlm/libntlm_wrapper.c b/src/core/transport/http/sender/ntlm/libntlm/libntlm_wrapper.c
deleted file mode 100644
index 0fa480ea0..000000000
--- a/src/core/transport/http/sender/ntlm/libntlm/libntlm_wrapper.c
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <axis2_ntlm.h>
-#include <axutil_utils_defines.h>
-#include <axutil_utils.h>
-#include <string.h>
-#include <axutil_string.h>
-
-void AXIS2_CALL
-libntlm_wrapper_free(
- axis2_ntlm_t * ntlm,
- const axutil_env_t * env);
-
-axis2_status_t AXIS2_CALL
-libntlm_wrapper_create_type1_message(
- axis2_ntlm_t * ntlm,
- const axutil_env_t * env,
- axis2_char_t **encoded_message,
- int *encoded_len,
- const axis2_char_t *uname,
- const axis2_char_t *passwd,
- const int flags,
- const axis2_char_t *domain);
-
-axis2_status_t AXIS2_CALL
-libntlm_wrapper_create_type3_message(
- axis2_ntlm_t * ntlm,
- const axutil_env_t * env,
- axis2_char_t *header_value,
- axis2_char_t **encoded_message,
- int *encoded_len,
- const axis2_char_t *uname,
- const axis2_char_t *passwd,
- const axis2_char_t *domain,
- const axis2_char_t *workstation);
-
-typedef struct libntlm_wrapper_impl_t
-{
- axis2_ntlm_t ntlm;
-
- /*xmlTextReaderPtr reader;*/
-
-} libntlm_wrapper_impl_t;
-
-#define AXIS2_INTF_TO_IMPL(p) ((libntlm_wrapper_impl_t*)p)
-#define AXIS2_IMPL_TO_INTF(p) &(p->ntlm)
-
-static const axis2_ntlm_ops_t axis2_ntlm_ops_var = {
- libntlm_wrapper_free,
- libntlm_wrapper_create_type1_message,
- libntlm_wrapper_create_type3_message };
-
-AXIS2_EXTERN axis2_ntlm_t *AXIS2_CALL
-axis2_ntlm_create(
- const axutil_env_t *env)
-{
- libntlm_wrapper_impl_t *wrapper_impl = NULL;
- wrapper_impl = (libntlm_wrapper_impl_t *)AXIS2_MALLOC(env->allocator,
- sizeof(libntlm_wrapper_impl_t));
-
- if(!wrapper_impl)
- {
- AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "No memory. Cannot create default ntlm wrapper");
- return NULL;
- }
- memset(wrapper_impl, 0, sizeof(libntlm_wrapper_impl_t));
- /*wrapper_impl->x=NULL;*/
- wrapper_impl->ntlm.ops = &axis2_ntlm_ops_var;
- return &(wrapper_impl->ntlm);
-}
-
-/**
- */
-void AXIS2_CALL
-libntlm_wrapper_free(
- axis2_ntlm_t * ntlm,
- const axutil_env_t * env)
-{
- libntlm_wrapper_impl_t *ntlm_impl = NULL;
- ntlm_impl = AXIS2_INTF_TO_IMPL(ntlm);
-
- AXIS2_FREE(env->allocator, AXIS2_INTF_TO_IMPL(ntlm));
- return;
-}
-
-axis2_status_t AXIS2_CALL
-libntlm_wrapper_create_type1_message(
- axis2_ntlm_t * ntlm,
- const axutil_env_t * env,
- axis2_char_t **encoded_message,
- int *encoded_len,
- const axis2_char_t *user,
- const axis2_char_t *password,
- const int flags,
- const axis2_char_t *domain)
-{
- axis2_status_t status = AXIS2_FAILURE;
- return status;
-}
-
-axis2_status_t AXIS2_CALL
-libntlm_wrapper_create_type3_message(
- axis2_ntlm_t * ntlm,
- const axutil_env_t * env,
- axis2_char_t *header_value,
- axis2_char_t **encoded_message,
- int *encoded_len,
- const axis2_char_t *user,
- const axis2_char_t *password,
- const axis2_char_t *domain,
- const axis2_char_t *workstation)
-{
- axis2_status_t status = AXIS2_FAILURE;
- return status;
-}
-
-
diff --git a/src/core/transport/http/sender/ntlm/ntlm.c b/src/core/transport/http/sender/ntlm/ntlm.c
deleted file mode 100644
index e17c6c91c..000000000
--- a/src/core/transport/http/sender/ntlm/ntlm.c
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifdef AXIS2_NTLM_ENABLED
-
-#include <axis2_ntlm.h>
-
-AXIS2_EXTERN void AXIS2_CALL
-axis2_ntlm_free(
- axis2_ntlm_t * ntlm,
- const axutil_env_t * env)
-{
- (ntlm)->ops->free(ntlm, env);
-}
-
-AXIS2_EXTERN axis2_status_t AXIS2_CALL
-axis2_ntlm_auth_create_type1_message(
- axis2_ntlm_t * ntlm,
- const axutil_env_t * env,
- axis2_char_t **encoded_message,
- int *encoded_len,
- const axis2_char_t *uname,
- const axis2_char_t *passwd,
- const int flags,
- const axis2_char_t *domain)
-{
- return (ntlm)->ops->create_type1_message(ntlm, env, encoded_message, encoded_len, uname,
- passwd, flags, domain);
-}
-
-AXIS2_EXTERN axis2_status_t AXIS2_CALL
-axis2_ntlm_auth_create_type3_message(
- axis2_ntlm_t * ntlm,
- const axutil_env_t * env,
- axis2_char_t *header_value,
- axis2_char_t **encoded_message,
- int *encoded_len,
- const axis2_char_t *uname,
- const axis2_char_t *passwd,
- const axis2_char_t *domain,
- const axis2_char_t *workstation)
-{
- return (ntlm)->ops->create_type3_message(ntlm, env, header_value, encoded_message, encoded_len,
- uname, passwd, domain, workstation);
-}
-
-#endif
\ No newline at end of file
diff --git a/src/core/transport/http/sender/ntlm/test/Makefile.am b/src/core/transport/http/sender/ntlm/test/Makefile.am
deleted file mode 100644
index 24ba910d4..000000000
--- a/src/core/transport/http/sender/ntlm/test/Makefile.am
+++ /dev/null
@@ -1,32 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-TESTS =
-SUBDIRS = mock_server
-noinst_PROGRAMS = test_ntlm mock_client
-check_PROGRAMS = test_ntlm mock_client
-test_ntlm_SOURCES = client.c
-mock_client_SOURCES = mock_client.c
-
-LINK_FLAGS = $(top_builddir)/src/core/transport/http/sender/ntlm/$(NTLM_WRAPPER_DIR)/libaxis2_ntlm.la \
- $(top_builddir)/util/src/libaxutil.la
-
-PREPROCESSOR_FLAGS = -I$(top_srcdir)/include \
- -I$(top_srcdir)/util/include
-
-test_ntlm_LDADD = $(LINK_FLAGS)
-mock_client_LDADD = $(LINK_FLAGS)
-
-test_ntlm_CPPFLAGS = $(PREPROCESSOR_FLAGS)
-mock_client_CPPFLAGS = $(PREPROCESSOR_FLAGS)
diff --git a/src/core/transport/http/sender/ntlm/test/client.c b/src/core/transport/http/sender/ntlm/test/client.c
deleted file mode 100755
index 34cadbcf9..000000000
--- a/src/core/transport/http/sender/ntlm/test/client.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/* tcpclient.c */
-
-#include <sys/socket.h>
-#include <sys/types.h>
-#include <netinet/in.h>
-#include <netdb.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <errno.h>
-#include <axutil_base64.h>
-#include <axutil_string.h>
-#include <axis2_util.h>
-
-#include <stdio.h>
-#include <axis2_ntlm.h>
-
-
-int main()
-{
- axis2_status_t status = AXIS2_FAILURE;
- const axutil_env_t *env = NULL;
- env = axutil_env_create_all("ntlm_test_client.log", AXIS2_LOG_LEVEL_TRACE);
- /*int flags = NTLM_NEG_UNICODE | NTLM_NEG_NTLM | NTLM_TARGET_DOMAIN;*/
-
- {
- axis2_char_t *encoded = NULL;
- int elen = 0;
- int flags = 0;
- axis2_ntlm_t *ntlm = NULL;
- ntlm = axis2_ntlm_create(env);
- status = axis2_ntlm_auth_create_type1_message(ntlm, env, &encoded, &elen, "foo",
- "digestpassword", flags, "mydomain");
- if(AXIS2_SUCCESS != status)
- {
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
- "axis2_ntlm_auth_create_type1_message call failed");
- printf("axis2_ntlm_auth_create_type1_message call failed\n");
- return 1;
- }
- printf("encoded:***%s***\n", encoded);
- printf("elen:***%d***\n", elen);
- }
- {
- int elen = 0;
- axis2_char_t *encoded = NULL;
- axis2_char_t *header_value =
- "TlRMTVNTUAACAAAAHgAeADgAAAAFAoICZAg+4lbcT0AAAAAAAAAAAJgAmABWAAAABgGxHQAAAA9XAEkATgAtADcAMQBNAEUAUABIADQANgBOAFEAMwACAB4AVwBJAE4ALQA3ADEATQBFAFAASAA0ADYATgBRADMAAQAeAFcASQBOAC0ANwAxAE0ARQBQAEgANAA2AE4AUQAzAAQAHgBXAEkATgAtADcAMQBNAEUAUABIADQANgBOAFEAMwADAB4AVwBJAE4ALQA3ADEATQBFAFAASAA0ADYATgBRADMABwAIAHIX52u6HcwBAAAAAA==";
- axis2_ntlm_t *ntlm = NULL;
- ntlm = axis2_ntlm_create(env);
- status = axis2_ntlm_auth_create_type3_message(ntlm, env, header_value, &encoded,
- &elen, "nandika", "nandika", "mydomain", "workstation");
- if(AXIS2_SUCCESS != status)
- {
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
- "axis2_ntlm_auth_create_type3_message call failed");
- printf("axis2_ntlm_auth_create_type3_message call failed\n");
- return 1;
- }
- printf("encoded:***%s***\n", encoded);
- printf("elen:***%d***\n", elen);
- }
-
- return 0;
-}
-
diff --git a/src/core/transport/http/sender/ntlm/test/mock_client.c b/src/core/transport/http/sender/ntlm/test/mock_client.c
deleted file mode 100755
index 9a9f701c7..000000000
--- a/src/core/transport/http/sender/ntlm/test/mock_client.c
+++ /dev/null
@@ -1,196 +0,0 @@
-/* tcpclient.c */
-
-#include <sys/socket.h>
-#include <sys/types.h>
-#include <netinet/in.h>
-#include <netdb.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <errno.h>
-#include <axutil_base64.h>
-#include <axutil_string.h>
-#include <axis2_util.h>
-#include <axis2_ntlm.h>
-
-
-/*axis2_char_t *hostname = "172.16.176.132";*/
-axis2_char_t *hostname = "localhost";
-int port = 8080;
-static char *
-create_type1_header(const axutil_env_t *env, axis2_char_t *encoded)
-{
- char *type1_header = NULL;
- char *header1 = NULL;
-
- type1_header = axutil_strcat(env, "Authorization: NTLM " ,encoded, NULL);
-
- header1 = "HEAD /myservice/Service1.asmx HTTP/1.1\n"\
- "Host: 172.16.176.132:8080\n"\
- "User-Agent: Axis2C/2.0.0\n";
- header1 = axutil_strcat(env, header1, type1_header, "\n\n", NULL);
- AXIS2_FREE(env->allocator, type1_header);
-
- return header1;
-}
-
-static axis2_char_t *
-create_type3_header(const axutil_env_t *env,
- char *encoded)
-{
- char *header3 = NULL;
-
- char *temp_header = strdup("GET /myservice/Service1.asmx?WSDL HTTP/1.1\n"\
- "Host: 172.16.176.132:8080\n"\
- "User-Agent: Axis2C/2.0.0\n"\
- "Authorization: NTLM ");
-
- int len1 = axutil_strlen(encoded);
- int len2 = axutil_strlen(temp_header);
- header3 = AXIS2_MALLOC(env->allocator, (len1 + len2 + 5));
- memset(header3, 0, sizeof(header3));
- strcat(header3, temp_header);
- strcat(header3, encoded);
- strcat(header3, "\n\n");
-
- return header3;
-
-}
-
-int main()
-{
- int sock, bytes_recieved;
- char recv_data[10024];
- struct hostent *host;
- struct sockaddr_in server_addr;
- const axis2_char_t *header = NULL;
- axis2_char_t *header_value = NULL;
- char *type3_header = NULL;
- char *type1_header = NULL;
- const char *user = "nandika",
- *domain = "mydomain",
- *password = "nandika",
- *workstation = "workstation";
- axis2_status_t status = AXIS2_FAILURE;
- const axutil_env_t *env = NULL;
- env = axutil_env_create_all("mock_client.log", AXIS2_LOG_LEVEL_TRACE);
-
- host = gethostbyname(hostname);
-
- if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
- perror("Socket");
- exit(1);
- }
-
- server_addr.sin_family = AF_INET;
- server_addr.sin_port = htons(port);
- server_addr.sin_addr = *((struct in_addr *)host->h_addr);
- bzero(&(server_addr.sin_zero),8);
-
- /* Create a normal message */
- char *init_send = axutil_strdup(env, "HEAD /myservice/Service1.asmx HTTP/1.1\n"\
- "Host: 172.16.176.132:8080\n"\
- "User-Agent: Axis2C/2.0.0\n\n");
-
- if (connect(sock, (struct sockaddr *)&server_addr,
- sizeof(struct sockaddr)) == -1)
- {
- perror("Connect");
- exit(1);
- }
- /* Send a normal message */
- send(sock, init_send, strlen(init_send), 0);
-
- while(1)
- {
- bytes_recieved=recv(sock,recv_data,10024,0);
- recv_data[bytes_recieved] = '\0';
- header = axutil_strstr(recv_data, "WWW-Authenticate: NTLM ");
-
- /* Process the challange */
- if(header)
- {
- int i = 22;
- while(header[i] && isspace((unsigned char) header[i]))
- {
- i++;
- }
- if (header[i] != '\0')
- {
- int len = axutil_strlen(&header[i]);
- if (len == 0)
- {
- printf("invalid Negotiate token\n");
- }
- else
- {
- header_value = axutil_strdup(env, &header[i]);
- }
- }
- if(header_value)
- {
- axis2_char_t *temp = strstr(header_value, "==");
- temp = temp + 3;
- *temp = '\0';
- header_value = axutil_strdup(env, header_value);
- }
- }
- if(!header_value) /* printf("unauth_header:\n%s\n", unauth_header); */
- {
- axis2_char_t *encoded = NULL;
- int elen = 0;
- int flags = 0;
- axis2_ntlm_t *ntlm = NULL;
- ntlm = axis2_ntlm_create(env);
- status = axis2_ntlm_auth_create_type1_message(ntlm, env, &encoded, &elen, user,
- password, flags, domain);
- if(AXIS2_SUCCESS != status)
- {
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
- "axis2_ntlm_auth_create_type1_message call failed");
- printf("axis2_ntlm_auth_create_type1_message call failed\n");
- return 1;
- }
-
- /* Ceate type 1(negotiation) header message from the recieved header */
- type1_header = create_type1_header(env, encoded);
- /* Send netotiation message */
- send(sock, type1_header,strlen(type1_header), 0);
- printf("sent:\n%s\n", type1_header);
- free(type1_header);
- continue;
- }
- if(header_value)
- {
- /*printf("header_value:\n***%s***\n", header_value);*/
- int elen = 0;
- axis2_char_t *encoded = NULL;
- axis2_char_t *header_value = NULL;
- axis2_ntlm_t *ntlm = NULL;
- ntlm = axis2_ntlm_create(env);
- status = axis2_ntlm_auth_create_type3_message(ntlm, env, header_value, &encoded,
- &elen, user, password, domain, workstation);
- if(AXIS2_SUCCESS != status)
- {
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
- "axis2_ntlm_auth_create_type3_message call failed");
- printf("axis2_ntlm_auth_create_type3_message call failed\n");
- return 1;
- }
-
- /* Create Type3 (authentication) header */
- type3_header = create_type3_header(env, encoded);
- break;
- }
- }
- /* Send Type3(authentication) message */
- send(sock, type3_header, strlen(type3_header), 0);
- bytes_recieved=recv(sock,recv_data,10024,0);
- recv_data[bytes_recieved] = '\0';
- printf("\nRecieved data:\n%s \n" , recv_data);
- close(sock);
-
- return 0;
-}
-
diff --git a/src/core/transport/http/sender/ntlm/test/mock_server/Makefile.am b/src/core/transport/http/sender/ntlm/test/mock_server/Makefile.am
deleted file mode 100644
index 00906ea05..000000000
--- a/src/core/transport/http/sender/ntlm/test/mock_server/Makefile.am
+++ /dev/null
@@ -1,24 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-TESTS =
-noinst_PROGRAMS = mock_server
-check_PROGRAMS = mock_server
-SUBDIRS =
-mock_server_SOURCES = mock_server.c
-
-mock_server_LDADD = $(top_builddir)/util/src/libaxutil.la
-
-mock_server_CPPFLAGS = -I$(top_srcdir)/include \
- -I$(top_srcdir)/util/include
diff --git a/src/core/transport/http/sender/ntlm/test/mock_server/mock_server.c b/src/core/transport/http/sender/ntlm/test/mock_server/mock_server.c
deleted file mode 100644
index 3911b0d79..000000000
--- a/src/core/transport/http/sender/ntlm/test/mock_server/mock_server.c
+++ /dev/null
@@ -1,128 +0,0 @@
-/* tcpserver.c */
-
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <errno.h>
-#include <string.h>
-#include <axutil_string.h>
-#include <axis2_util.h>
-
-int main()
-{
- int port = 8080;
- int sock, connected, bytes_recieved , true = 1;
- char recv_data[10024];
- char *send_data = NULL;
- const axutil_env_t *env = NULL;
- int flip = 0;
-
- env = axutil_env_create_all("mock_server.log", AXIS2_LOG_LEVEL_TRACE);
- struct sockaddr_in server_addr,client_addr;
- unsigned int sin_size;
-
- if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
- perror("Socket");
- exit(1);
- }
-
- if (setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,&true,sizeof(int)) == -1) {
- perror("Setsockopt");
- exit(1);
- }
-
- server_addr.sin_family = AF_INET;
- server_addr.sin_port = htons(port);
- server_addr.sin_addr.s_addr = INADDR_ANY;
- bzero(&(server_addr.sin_zero),8);
-
- if (bind(sock, (struct sockaddr *)&server_addr, sizeof(struct sockaddr))
- == -1) {
- perror("Unable to bind");
- exit(1);
- }
-
- if (listen(sock, 5) == -1) {
- perror("Listen");
- exit(1);
- }
-
- printf("\nTCPServer Waiting for client on port %d \n", port);
- fflush(stdout);
-
-
- while(1)
- {
- sin_size = sizeof(struct sockaddr_in);
-
- connected = accept(sock, (struct sockaddr *)&client_addr, &sin_size);
-
- printf("\nGot a connection from (%s , %d) \n",
- inet_ntoa(client_addr.sin_addr),ntohs(client_addr.sin_port));
-
- while (1)
- {
- int mark = 0;
- bytes_recieved = recv(connected,recv_data,10024,0);
- recv_data[bytes_recieved] = '\0';
- if(strstr(recv_data, "GET"))
- {
- mark = 1;
- }
- if( mark == 1 && strstr(recv_data, "Authorization: NTLM "))
- {
- if(flip == 0)
- {
- send_data = "HTTP/1.1 401 Unauthorized\n"\
- "Content-Type: text/html; charset=us-ascii\n"\
- "Server: Microsoft-HTTPAPI/2.0\n"\
- "WWW-Authenticate: NTLM TlRMTVNTUAACAAAADAAMADAAAAABAgEAf39/f39/f38AAAAAAAAAAAAAAAA8AAAARABPAE0AQQBJAE4A\n"\
- "Date: Thu, 31 Mar 2011 17:41:03 GMT\n"\
- "Content-Length: 341\n\n";
- flip = 1;
- }
- else if(flip == 1)
- {
- send_data = "HTTP/1.1 200 OK\n"\
- "Cache-Control: private, max-age=0\n"\
- "Content-Type: text/xml; charset=utf-8\n"\
- "Server: Microsoft-IIS/7.5\n"\
- "X-AspNet-Version: 2.0.50727\n"\
- "Persistent-Auth: true\n"\
- "X-Powered-By: ASP.NET\n"\
- "Date: Thu, 31 Mar 2011 17:41:04 GMT\n"\
- "Content-Length: 2827\n\n";
- flip = 0;
- }
- printf("sent:%s\n", send_data);
- fflush(stdout);
- send(connected, send_data,strlen(send_data), 0);
- }
- else if(mark == 1)
- {
- send_data = "HTTP/1.1 401 Unauthorized\n"\
- "Content-Type: text/html\n"\
- "Server: Microsoft-IIS/7.5\n"\
- "WWW-Authenticate: NTLM\n"\
- "X-Powered-By: ASP.NET\n"\
- "Date: Thu, 31 Mar 2011 17:41:03 GMT\n"\
- "Content-Length: 1293\n\n";
- printf("sent:%s\n", send_data);
- fflush(stdout);
- send(connected, send_data,strlen(send_data), 0);
- }
- else
- {
- break;
- }
- }
- }
-
- close(sock);
- return 0;
-}
-
diff --git a/src/core/transport/http/sender/ntlm/test/mock_server/run.sh b/src/core/transport/http/sender/ntlm/test/mock_server/run.sh
deleted file mode 100755
index c22c5564a..000000000
--- a/src/core/transport/http/sender/ntlm/test/mock_server/run.sh
+++ /dev/null
@@ -1,2 +0,0 @@
-export LD_LIBRARY_PATH=/tmp/heimdal/lib:/axis2c/deploy/lib
-./mock_server
diff --git a/src/core/transport/http/sender/ntlm/test/run.sh b/src/core/transport/http/sender/ntlm/test/run.sh
deleted file mode 100755
index 961dbe5b9..000000000
--- a/src/core/transport/http/sender/ntlm/test/run.sh
+++ /dev/null
@@ -1,2 +0,0 @@
-rm ntlm_test_client.log
-./test_ntlm
diff --git a/src/core/transport/http/server/CGI/Makefile.am b/src/core/transport/http/server/CGI/Makefile.am
deleted file mode 100644
index 6a1e117fa..000000000
--- a/src/core/transport/http/server/CGI/Makefile.am
+++ /dev/null
@@ -1,44 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-prgbindir=$(bindir)
-prgbin_PROGRAMS = axis2.cgi
-SUBDIRS =
-axis2_cgi_SOURCES = axis2_cgi_main.c \
- axis2_cgi_out_transport_info.c \
- axis2_cgi_stream.c
-
-axis2_cgi_LDADD = $(LDFLAGS) \
- $(top_builddir)/src/core/transport/http/util/libaxis2_http_util.la \
- $(top_builddir)/src/core/transport/http/common/libaxis2_http_common.la \
- $(top_builddir)/axiom/src/om/libaxis2_axiom.la \
- $(top_builddir)/util/src/libaxutil.la \
- $(top_builddir)/axiom/src/parser/$(WRAPPER_DIR)/libaxis2_parser.la \
- $(top_builddir)/src/core/description/libaxis2_description.la \
- $(top_builddir)/src/core/deployment/libaxis2_deployment.la \
- $(top_builddir)/src/core/context/libaxis2_context.la \
- $(top_builddir)/src/core/clientapi/libaxis2_clientapi.la \
- $(top_builddir)/src/core/engine/libaxis2_engine.la \
- $(top_builddir)/src/core/transport/http/sender/libaxis2_http_sender.la \
- $(top_builddir)/neethi/src/libneethi.la \
- $(top_builddir)/src/core/transport/http/receiver/libaxis2_http_receiver.la
-
-axis2_cgi_CPPFLAGS = -I$(top_srcdir)/include \
- -I$(top_srcdir)/src/core/description\
- -I$(top_srcdir)/src/core/context \
- -I$(top_srcdir)/src/core/deployment\
- -I$(top_srcdir)/src/core/phaseresolver \
- -I$(top_srcdir)/src/core/engine \
- -I$(top_srcdir)/util/include \
- -I$(top_srcdir)/axiom/include
diff --git a/src/core/transport/http/server/CGI/axis2_cgi_main.c b/src/core/transport/http/server/CGI/axis2_cgi_main.c
deleted file mode 100644
index 24b93518a..000000000
--- a/src/core/transport/http/server/CGI/axis2_cgi_main.c
+++ /dev/null
@@ -1,323 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "axis2_cgi_out_transport_info.h"
-#include "axis2_cgi_stream.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <axutil_error_default.h>
-#include <axutil_log_default.h>
-#include <axutil_thread_pool.h>
-#include <axutil_types.h>
-#include <axutil_version.h>
-#include <axutil_file_handler.h>
-#include <axutil_url.h>
-#include <axutil_string.h>
-#include <axutil_http_chunked_stream.h>
-#include <platforms/axutil_platform_auto_sense.h>
-
-#include <axis2_engine.h>
-#include <axis2_conf_init.h>
-#include <axis2_http_transport.h>
-#include <axis2_http_transport_utils.h>
-
-axis2_char_t *axis2_cgi_default_url_prefix = "/cgi-bin/axis2.cgi/";
-
-/***************************** Function headers *******************************/
-
-void
-axis2_cgi_system_exit(
- axutil_env_t * env,
- int status);
-
-void
-axis2_cgi_set_request_vars(
- axis2_cgi_request_t *cgi_request);
-
-axis2_status_t
-axis2_cgi_write_response(
- const void *buffer,
- unsigned int length);
-
-/***************************** End of function headers ************************/
-
-int
-main(
- int argc,
- char *argv[])
-{
- axutil_allocator_t *allocator = NULL;
- axutil_env_t *env = NULL;
- const axis2_char_t *repo_path;
- axis2_conf_ctx_t *conf_ctx;
- axis2_cgi_request_t *cgi_request = NULL;
- int content_length = 0;
- axis2_char_t *request_url = NULL;
- /* axutil_stream_t *request_body_stream = NULL; */
- axutil_stream_t *out_stream = NULL;
- axis2_transport_in_desc_t *in_desc = NULL;
- axis2_transport_out_desc_t *out_desc = NULL;
- /* axis2_msg_ctx_t *msg_ctx = NULL; */
- /* axis2_bool_t processed = AXIS2_FALSE; */
- axis2_http_transport_in_t request;
- axis2_http_transport_out_t response;
- axutil_array_list_t *mime_parts = NULL; /* AXIS2C-1404: MTOM support */
- /*axis2_http_header_t* http_header = NULL; */
- /*axutil_hash_t *headers = NULL; */
- /* axis2_char_t *axis2_cgi_url_prefix = NULL; */
-
- if(!(repo_path = AXIS2_GETENV("AXIS2C_HOME")))
- {
- fprintf(stderr, "Error: AXIS2C_HOME environment variable not set!");
- axis2_cgi_system_exit(env, -1);
- }
-
- allocator = axutil_allocator_init(NULL);
- env = axutil_env_create(allocator);
-
- if(axutil_file_handler_access(repo_path, AXIS2_R_OK) != AXIS2_SUCCESS)
- {
- fprintf(stderr, "Error reading repository: %s\nPlease check AXIS2C_HOME var", repo_path);
- axis2_cgi_system_exit(env, -1);
- }
-
- /* Set configuration */
-
- conf_ctx = axis2_build_conf_ctx(env, repo_path);
- if(!conf_ctx)
- {
- fprintf(stderr, "Error: Configuration not builded propertly\n");
- axis2_cgi_system_exit(env, -1);
- }
-
- axis2_http_transport_utils_transport_out_init(&response, env);
- axis2_http_transport_utils_transport_in_init(&request, env);
-
- /* Get input info */
-
- cgi_request = AXIS2_MALLOC(allocator, sizeof(axis2_cgi_request_t));
- axis2_cgi_set_request_vars(cgi_request);
-
- request_url = (axis2_char_t *)AXIS2_MALLOC(allocator, (7 + /* "http:" */
- strlen(cgi_request->server_name) + ((strlen(cgi_request->server_port)) ? 1 : 0) + /* ":"*/
- strlen(cgi_request->server_port) + strlen(cgi_request->script_name) + strlen(
- cgi_request->path_info) + ((strlen(cgi_request->path_info)) ? 1 : 0) + /* "?" */
- strlen(cgi_request->query_string)) * sizeof(axis2_char_t));
-
- request_url[0] = '\0';
-
- strcat(request_url, "http://");
- strcat(request_url, cgi_request->server_name);
- if(strlen(cgi_request->server_port))
- strcat(request_url, ":");
- strcat(request_url, cgi_request->server_port);
- strcat(request_url, cgi_request->script_name);
- strcat(request_url, cgi_request->path_info);
- if(strlen(cgi_request->query_string))
- strcat(request_url, "?");
- strcat(request_url, cgi_request->query_string);
-
- if(cgi_request->content_length && strlen(cgi_request->content_length) > 0)
- content_length = axutil_atoi(cgi_request->content_length);
- else
- content_length = -1; /* AXIS2C-1404: Use -1 for unknown/chunked */
-
- /* Set streams */
-
- out_stream = axutil_stream_create_basic(env);
-
- /* Set message contexts */
-
- out_desc = axis2_conf_get_transport_out(axis2_conf_ctx_get_conf(conf_ctx, env), env,
- AXIS2_TRANSPORT_ENUM_HTTP);
- in_desc = axis2_conf_get_transport_in(axis2_conf_ctx_get_conf(conf_ctx, env), env,
- AXIS2_TRANSPORT_ENUM_HTTP);
-
- request.msg_ctx = axis2_msg_ctx_create(env, conf_ctx, in_desc, out_desc);
-
- axis2_msg_ctx_set_server_side(request.msg_ctx, env, AXIS2_TRUE);
- axis2_msg_ctx_set_transport_out_stream(request.msg_ctx, env, out_stream);
- axis2_msg_ctx_set_transport_headers(request.msg_ctx, env, NULL);
-
- /* Set request parameters */
-
- request.soap_action = cgi_request->soap_action;
- request.in_stream = axutil_stream_create_cgi(env, content_length);
- request.remote_ip = cgi_request->remote_addr;
- request.content_length = content_length;
- request.content_type = cgi_request->content_type;
- request.request_uri = request_url;
- request.svr_port = cgi_request->server_port;
- request.accept_header = AXIS2_GETENV("HTTP_ACCEPT");
- request.accept_language_header = AXIS2_GETENV("HTTP_ACCEPT_LANGUAGE");
- request.accept_charset_header = AXIS2_GETENV("HTTP_ACCEPT_CHARSET");
- request.request_url_prefix = (AXIS2_GETENV("AXIS2C_URL_PREFIX")) ? AXIS2_GETENV(
- "AXIS2C_URL_PREFIX") : axis2_cgi_default_url_prefix;
-
- if(axutil_strcasecmp(cgi_request->request_method, "POST") == 0)
- {
- request.request_method = AXIS2_HTTP_METHOD_POST;
- }
- else if(axutil_strcasecmp(cgi_request->request_method, "GET") == 0)
- {
- request.request_method = AXIS2_HTTP_METHOD_GET;
- }
- else if(axutil_strcasecmp(cgi_request->request_method, "HEAD") == 0)
- {
- request.request_method = AXIS2_HTTP_METHOD_HEAD;
- }
- else if(axutil_strcasecmp(cgi_request->request_method, "PUT") == 0)
- {
- request.request_method = AXIS2_HTTP_METHOD_PUT;
- }
- else if(axutil_strcasecmp(cgi_request->request_method, "DELETE") == 0)
- {
- request.request_method = AXIS2_HTTP_METHOD_DELETE;
- }
-
- request.out_transport_info = axis2_cgi_out_transport_info_create(env, cgi_request);
-
- /*Process request */
- AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "CGI: Processing request");
- axis2_http_transport_utils_process_request(env, conf_ctx, &request, &response);
- AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "CGI: Done processing request");
-
- /*Send status */
- fprintf(stdout, "Status: %d %s" AXIS2_CRLF, response.http_status_code, response.http_status_code_name);
-
- if(response.content_type)
- {
- fprintf(stdout, "Content-type: %s" AXIS2_CRLF, response.content_type);
- }
- else if(axis2_cgi_out_transport_get_content(request.out_transport_info)
- && strlen(axis2_cgi_out_transport_get_content(request.out_transport_info)))
- {
- fprintf(stdout, "Content-type: %s" AXIS2_CRLF, axis2_cgi_out_transport_get_content(
- request.out_transport_info));
- }
-
- /* AXIS2C-1404: Handle MTOM responses with chunked transfer encoding */
- if((response.msg_ctx != NULL) &&
- (mime_parts = axis2_msg_ctx_get_mime_parts(response.msg_ctx, env)))
- {
- axutil_stream_t *stdout_stream = axutil_stream_create_file(env, stdout);
- axutil_http_chunked_stream_t *stdout_chunked_stream =
- axutil_http_chunked_stream_create(env, stdout_stream);
- axutil_param_t *callback_name_param = NULL;
- axis2_char_t *mtom_sending_callback_name = NULL;
-
- if((callback_name_param = axis2_msg_ctx_get_parameter(response.msg_ctx,
- env, AXIS2_MTOM_SENDING_CALLBACK)))
- {
- mtom_sending_callback_name =
- (axis2_char_t *)axutil_param_get_value(callback_name_param, env);
- }
-
- /* Write chunked transfer encoding header */
- fprintf(stdout, "Transfer-Encoding: chunked" AXIS2_CRLF AXIS2_CRLF);
-
- if(!axis2_http_transport_utils_send_mtom_message(stdout_chunked_stream, env,
- mime_parts, mtom_sending_callback_name))
- {
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "CGI: Error writing MTOM data");
- fprintf(stderr, "Error writing MTOM data\n");
- }
-
- /* Clean up chunked stream resources */
- if(stdout_chunked_stream)
- {
- axutil_http_chunked_stream_free(stdout_chunked_stream, env);
- }
- if(stdout_stream)
- {
- axutil_stream_free(stdout_stream, env);
- }
- }
- else
- {
- fprintf(stdout, AXIS2_CRLF); /* End of headers for server */
-
- /* Write data body */
- if(!axis2_cgi_write_response(response.response_data, response.response_data_length))
- {
- fprintf(stderr, "Error writing output data\n");
- }
- }
-
- axis2_http_transport_utils_transport_in_uninit(&request, env);
- axis2_http_transport_utils_transport_out_uninit(&response, env);
-
- return 0;
-}
-
-axis2_status_t
-axis2_cgi_write_response(
- const void *buffer,
- unsigned int length)
-{
- if(buffer && length)
- {
- size_t completed = 0;
- size_t written = 0;
-
- while(completed < length)
- {
- written = fwrite(buffer, sizeof(char), length - completed, stdout);
- if(written < 0)
- return AXIS2_FALSE;
- completed += written;
- }
- }
- return AXIS2_TRUE;
-}
-
-void
-axis2_cgi_set_request_vars(
- axis2_cgi_request_t *cgi_request)
-{
- cgi_request->server_name = (AXIS2_GETENV("SERVER_NAME")) ? AXIS2_GETENV("SERVER_NAME") : "";
- cgi_request->script_name = (AXIS2_GETENV("SCRIPT_NAME")) ? AXIS2_GETENV("SCRIPT_NAME") : "";
- cgi_request->path_info = (AXIS2_GETENV("PATH_INFO")) ? AXIS2_GETENV("PATH_INFO") : "";
- cgi_request->server_port = (AXIS2_GETENV("SERVER_PORT")) ? AXIS2_GETENV("SERVER_PORT") : "";
- cgi_request->server_protocol = (AXIS2_GETENV("SERVER_PROTOCOL")) ? AXIS2_GETENV(
- "SERVER_PROTOCOL") : "";
- cgi_request->content_length = (AXIS2_GETENV("CONTENT_LENGTH")) ? AXIS2_GETENV("CONTENT_LENGTH")
- : "";
- cgi_request->content_type = (AXIS2_GETENV("CONTENT_TYPE")) ? AXIS2_GETENV("CONTENT_TYPE") : "";
- cgi_request->request_method = (AXIS2_GETENV("REQUEST_METHOD")) ? AXIS2_GETENV("REQUEST_METHOD")
- : "";
- cgi_request->remote_addr = (AXIS2_GETENV("REMOTE_ADDR")) ? AXIS2_GETENV("REMOTE_ADDR") : "";
- cgi_request->soap_action = (AXIS2_GETENV("HTTP_SOAPACTION")) ? AXIS2_GETENV("HTTP_SOAPACTION")
- : NULL;
- cgi_request->query_string = (AXIS2_GETENV("QUERY_STRING")) ? AXIS2_GETENV("QUERY_STRING") : "";
-}
-
-void
-axis2_cgi_system_exit(
- axutil_env_t * env,
- int status)
-{
- axutil_allocator_t *allocator = NULL;
-
- if(env)
- {
- allocator = env->allocator;
- axutil_env_free(env);
- }
- exit(status);
-}
diff --git a/src/core/transport/http/server/CGI/axis2_cgi_out_transport_info.c b/src/core/transport/http/server/CGI/axis2_cgi_out_transport_info.c
deleted file mode 100644
index 59e68209b..000000000
--- a/src/core/transport/http/server/CGI/axis2_cgi_out_transport_info.c
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "axis2_cgi_out_transport_info.h"
-#include <axutil_string.h>
-#include <axis2_http_transport.h>
-
-/**
- * @brief CIG Out transport info impl structure
- * Axis2 cgi_out_transport_info_impl
- */
-
-typedef struct axis2_cgi_out_transport_info_s
-{
- axis2_http_out_transport_info_t out_transport_info;
- axis2_cgi_request_t *request;
- axis2_char_t *encoding;
-} axis2_cgi_out_transport_info_t;
-
-#define AXIS2_INTF_TO_IMPL(out_transport_info) \
- ((axis2_cgi_out_transport_info_t *)(out_transport_info))
-
-void AXIS2_CALL
-axis2_cgi_out_transport_info_free(
- axis2_http_out_transport_info_t * info,
- const axutil_env_t * env)
-{
- axis2_cgi_out_transport_info_t *info_impl = NULL;
- AXIS2_ENV_CHECK(env, void);
-
- info_impl = AXIS2_INTF_TO_IMPL(info);
-
- info_impl->request = NULL; /* doesn't belong here so no need to free it here */
- if(info_impl->encoding)
- {
- AXIS2_FREE(env->allocator, info_impl->encoding);
- info_impl->encoding = NULL;
- }
-
- AXIS2_FREE(env->allocator, info_impl);
- return;
-}
-
-void AXIS2_CALL
-axis2_cgi_out_transport_info_free_void_arg(
- void *transport_info,
- const axutil_env_t * env)
-{
- axis2_http_out_transport_info_t *transport_info_l = NULL;
-
- AXIS2_ENV_CHECK(env, void);
- transport_info_l = (axis2_http_out_transport_info_t *)transport_info;
- axis2_http_out_transport_info_free(transport_info_l, env);
- return;
-}
-
-axis2_status_t AXIS2_CALL
-axis2_cgi_out_transport_info_set_content_type(
- axis2_http_out_transport_info_t *info,
- const axutil_env_t *env,
- const axis2_char_t *content_type)
-{
- axis2_cgi_out_transport_info_t *info_impl = NULL;
-
- axis2_char_t *temp1 = NULL;
- axis2_char_t *temp2 = NULL;
-
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
- AXIS2_PARAM_CHECK(env->error, content_type, AXIS2_FAILURE);
- info_impl = AXIS2_INTF_TO_IMPL(info);
- if(info_impl->encoding)
- {
- temp1 = axutil_stracat(env, content_type, ";charset=");
- temp2 = axutil_stracat(env, temp1, info_impl->encoding);
- info_impl->request->content_type = axutil_strdup(env, temp2);
- AXIS2_FREE(env->allocator, temp1);
- AXIS2_FREE(env->allocator, temp2);
- }
- else
- {
- info_impl->request->content_type = axutil_strdup(env, content_type);
- }
- return AXIS2_SUCCESS;
-}
-
-axis2_status_t AXIS2_CALL
-axis2_cgi_out_transport_info_set_char_encoding(
- axis2_http_out_transport_info_t * info,
- const axutil_env_t * env,
- const axis2_char_t * encoding)
-{
- axis2_cgi_out_transport_info_t *info_impl = NULL;
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
- AXIS2_PARAM_CHECK(env->error, encoding, AXIS2_FAILURE);
-
- info_impl = AXIS2_INTF_TO_IMPL(info);
-
- if(info_impl->encoding)
- {
- AXIS2_FREE(env->allocator, info_impl->encoding);
- }
- info_impl->encoding = axutil_strdup(env, encoding);
-
- return AXIS2_SUCCESS;
-}
-
-axis2_http_out_transport_info_t *AXIS2_CALL
-axis2_cgi_out_transport_info_create(
- const axutil_env_t * env,
- axis2_cgi_request_t * request)
-{
- axis2_cgi_out_transport_info_t *info = NULL;
- axis2_http_out_transport_info_t *out_transport_info = NULL;
-
- AXIS2_ENV_CHECK(env, NULL);
-
- info = (axis2_cgi_out_transport_info_t *)AXIS2_MALLOC(env->allocator,
- sizeof(axis2_cgi_out_transport_info_t));
-
- if(!info)
- {
- AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
- return NULL;
- }
- info->request = request;
- info->encoding = NULL;
-
- out_transport_info = &(info->out_transport_info);
-
- axis2_http_out_transport_info_set_char_encoding_func(out_transport_info, env,
- axis2_cgi_out_transport_info_set_char_encoding);
- axis2_http_out_transport_info_set_content_type_func(out_transport_info, env,
- axis2_cgi_out_transport_info_set_content_type);
-
- return out_transport_info;
-}
-
-axis2_char_t *
-axis2_cgi_out_transport_get_content(
- axis2_http_out_transport_info_t * info)
-{
- axis2_cgi_out_transport_info_t *info_impl = NULL;
- info_impl = AXIS2_INTF_TO_IMPL(info);
- return info_impl->request->content_type;
-}
-
diff --git a/src/core/transport/http/server/CGI/axis2_cgi_out_transport_info.h b/src/core/transport/http/server/CGI/axis2_cgi_out_transport_info.h
deleted file mode 100644
index bc0f52627..000000000
--- a/src/core/transport/http/server/CGI/axis2_cgi_out_transport_info.h
+++ /dev/null
@@ -1,62 +0,0 @@
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef AXIS2_CGI_OUT_TRANSPORT_INFO_H
-#define AXIS2_CGI_OUT_TRANSPORT_INFO_H
-
-/**
- * @ingroup axis2_core_transport_http
- * @{
- */
-
-/**
- * @file axis2_cgi_out_transport_info.h
- * @brief axis2 CGI Out Transport Info
- */
-
-#include "axis2_cgi_types.h"
-#include <axis2_http_out_transport_info.h>
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
- axis2_http_out_transport_info_t *AXIS2_CALL
-
- axis2_cgi_out_transport_info_create(
- const axutil_env_t * env,
- axis2_cgi_request_t * request);
-
- /**
- * Free http_out_transport_info passed as void pointer. This will be
- * cast into appropriate type and then pass the cast object
- * into the http_out_transport_info structure's free method
- */
- void AXIS2_CALL
- axis2_cgi_out_transport_info_free_void_arg(
- void *transport_info,
- const axutil_env_t * env);
-
- axis2_char_t *axis2_cgi_out_transport_get_content(
- axis2_http_out_transport_info_t * out_transport_info);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* AXIS2_SGI_OUT_TRANSPORT_INFO_H */
diff --git a/src/core/transport/http/server/CGI/axis2_cgi_stream.c b/src/core/transport/http/server/CGI/axis2_cgi_stream.c
deleted file mode 100644
index 345b75032..000000000
--- a/src/core/transport/http/server/CGI/axis2_cgi_stream.c
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <string.h>
-#include <stdlib.h>
-#include "axis2_cgi_stream.h"
-
-/**
- * @brief Stream struct impl
- * Streaming mechanisms for cgi
- */
-
-typedef struct cgi_stream_impl
-{
- axutil_stream_t stream;
- axutil_stream_type_t stream_type;
- unsigned int cur_pos;
- unsigned int content_length;
-} cgi_stream_impl_t;
-
-#define AXIS2_INTF_TO_IMPL(stream) ((cgi_stream_impl_t *)(stream))
-
-axutil_stream_type_t AXIS2_CALL
-cgi_stream_get_type(
- axutil_stream_t * stream,
- const axutil_env_t * env);
-
-int AXIS2_CALL cgi_stream_write(
- axutil_stream_t * stream,
- const axutil_env_t * env,
- const void *buffer,
- size_t count);
-
-int AXIS2_CALL cgi_stream_read(
- axutil_stream_t * stream,
- const axutil_env_t * env,
- void *buffer,
- size_t count);
-
-int AXIS2_CALL cgi_stream_skip(
- axutil_stream_t * stream,
- const axutil_env_t * env,
- int count);
-
-int AXIS2_CALL cgi_stream_get_char(
- axutil_stream_t * stream,
- const axutil_env_t * env);
-
-axutil_stream_t *AXIS2_CALL
-axutil_stream_create_cgi(
- const axutil_env_t * env,
- unsigned int content_length)
-{
- cgi_stream_impl_t *stream_impl = NULL;
- AXIS2_ENV_CHECK(env, NULL);
- AXIS2_PARAM_CHECK(env->error, content_length, NULL);
-
- stream_impl = (cgi_stream_impl_t *)AXIS2_MALLOC(env->allocator, sizeof(cgi_stream_impl_t));
-
- if(!stream_impl)
- {
- return NULL;
- }
- stream_impl->cur_pos = 0;
- stream_impl->content_length = content_length;
- stream_impl->stream_type = AXIS2_STREAM_MANAGED;
-
- axutil_stream_set_read(&(stream_impl->stream), env, cgi_stream_read);
- axutil_stream_set_write(&(stream_impl->stream), env, cgi_stream_write);
- axutil_stream_set_skip(&(stream_impl->stream), env, cgi_stream_skip);
-
- return &(stream_impl->stream);
-}
-int AXIS2_CALL
-cgi_stream_read(
- axutil_stream_t * stream,
- const axutil_env_t * env,
- void *buffer,
- size_t count)
-{
- /*void *temp_buff = NULL;*/
- /*unsigned int data_to_read = 0;*/
- size_t read_bytes = 0;
- /*axis2_bool_t ret_ok = AXIS2_TRUE;*/
-
- cgi_stream_impl_t *stream_impl = NULL;
- /*char *temp = NULL;*/
-
- AXIS2_ENV_CHECK(env, AXIS2_CRITICAL_FAILURE);
- stream_impl = (cgi_stream_impl_t *)stream;
-
- if(count < stream_impl->content_length)
- {
- read_bytes = fread(buffer, sizeof(char), count, stdin);
- }
- else
- {
- read_bytes = fread(buffer, sizeof(char), stream_impl->content_length, stdin);
- }
-
- return (int)read_bytes;
-}
-
-int AXIS2_CALL
-cgi_stream_write(
- axutil_stream_t * stream,
- const axutil_env_t * env,
- const void *buf,
- size_t count)
-{
- /* Cannot write on cgi stdin, explicitly an input stream */
-
- return -1;
-}
-
-int AXIS2_CALL
-cgi_stream_skip(
- axutil_stream_t * stream,
- const axutil_env_t * env,
- int count)
-{
- cgi_stream_impl_t *stream_impl = NULL;
- int skipped = -1;
- AXIS2_ENV_CHECK(env, AXIS2_CRITICAL_FAILURE);
- stream_impl = AXIS2_INTF_TO_IMPL(stream);
-
- if(fseek(stdin, count, SEEK_CUR) == 0)
- skipped = count;
- return skipped;
-}
-
-int AXIS2_CALL
-cgi_stream_get_char(
- axutil_stream_t * stream,
- const axutil_env_t * env)
-{
- int ret = -1;
- AXIS2_ENV_CHECK(env, AXIS2_CRITICAL_FAILURE);
-
- return ret;
-}
-
-axutil_stream_type_t AXIS2_CALL
-cgi_stream_get_type(
- axutil_stream_t * stream,
- const axutil_env_t * env)
-{
- AXIS2_ENV_CHECK(env, AXIS2_CRITICAL_FAILURE);
- return AXIS2_INTF_TO_IMPL(stream)->stream_type;
-}
diff --git a/src/core/transport/http/server/CGI/axis2_cgi_stream.h b/src/core/transport/http/server/CGI/axis2_cgi_stream.h
deleted file mode 100644
index 9a6af346c..000000000
--- a/src/core/transport/http/server/CGI/axis2_cgi_stream.h
+++ /dev/null
@@ -1,44 +0,0 @@
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef CGI_STREAM_H
-#define CGI_STREAM_H
-
-#include <axis2_const.h>
-#include <axis2_defines.h>
-#include <axutil_env.h>
-#include <axutil_stream.h>
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
- /** brief Constructor for creating CGI stream
- * @return axutil_stream (CGI)
- */
- axutil_stream_t *AXIS2_CALL
- axutil_stream_create_cgi(
- const axutil_env_t * env,
- unsigned int content_length);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* CGI_STREAM_H */
diff --git a/src/core/transport/http/server/CGI/axis2_cgi_types.h b/src/core/transport/http/server/CGI/axis2_cgi_types.h
deleted file mode 100644
index af184a163..000000000
--- a/src/core/transport/http/server/CGI/axis2_cgi_types.h
+++ /dev/null
@@ -1,34 +0,0 @@
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <axis2_const.h>
-
-typedef struct axis2_cgi_request
-{
- axis2_char_t *server_name;
- axis2_char_t *server_port;
- axis2_char_t *script_name;
- axis2_char_t *path_info;
- axis2_char_t *server_protocol;
- axis2_char_t *content_length;
- axis2_char_t *content_type;
- axis2_char_t *request_method;
- axis2_char_t *remote_addr;
- axis2_char_t *soap_action;
- axis2_char_t *query_string;
-} axis2_cgi_request_t;
diff --git a/src/core/transport/http/server/Makefile.am b/src/core/transport/http/server/Makefile.am
index 8e1f4468a..cfb9acf4f 100644
--- a/src/core/transport/http/server/Makefile.am
+++ b/src/core/transport/http/server/Makefile.am
@@ -12,9 +12,9 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
-# REVOLUTIONARY HTTP/2 JSON: Only Apache server needed for production HTTP/2 JSON system
-SUBDIRS=@APACHE2BUILD@ ${CGI_DIR}
+# HTTP/2 JSON: Only Apache server needed for production HTTP/2 JSON system
+# CGI transport removed (January 2026) - obsolete, use mod_axis2 instead
+SUBDIRS=@APACHE2BUILD@
-# REVOLUTIONARY: simple_axis2_server eliminated - depends on eliminated HTTP sender library
# HTTP/2 JSON system only needs Apache integration (mod_axis2)
-EXTRA_DIST=IIS CGI
+EXTRA_DIST=IIS
diff --git a/src/core/transport/tcp/Makefile.am b/src/core/transport/tcp/Makefile.am
deleted file mode 100644
index f7c554e30..000000000
--- a/src/core/transport/tcp/Makefile.am
+++ /dev/null
@@ -1,17 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-SUBDIRS = sender receiver server
-EXTRA_DIST=axis2_simple_tcp_svr_conn.h axis2_tcp_svr_thread.h axis2_tcp_transport_sender.h axis2_tcp_server.h axis2_tcp_transport.h axis2_tcp_worker.h
-
diff --git a/src/core/transport/tcp/axis2_simple_tcp_svr_conn.h b/src/core/transport/tcp/axis2_simple_tcp_svr_conn.h
deleted file mode 100644
index ffffcbe86..000000000
--- a/src/core/transport/tcp/axis2_simple_tcp_svr_conn.h
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef AXIS2_SIMPLE_HTTP_SVR_CONN_H
-#define AXIS2_SIMPLE_HTTP_SVR_CONN_H
-
-/**
- * @ingroup axis2_core_transport_tcp
- * @{
- */
-
-/**
- * @file axis2_simple_tcp_svr_conn.h
- * @brief Axis2 simple tcp server connection
- */
-
-#include <axis2_const.h>
-#include <axis2_defines.h>
-#include <axutil_env.h>
-#include <axutil_stream.h>
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
- typedef struct axis2_simple_tcp_svr_conn axis2_simple_tcp_svr_conn_t;
-
- /**
- * @param svr_conn pointer to server connection struct
- * @param env pointer to environment struct
- * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
- */
- AXIS2_EXTERN axis2_status_t AXIS2_CALL
- axis2_simple_tcp_svr_conn_close(
- axis2_simple_tcp_svr_conn_t * svr_conn,
- const axutil_env_t * env);
-
- /**
- * @param svr_conn pointer to server connection struct
- * @param env pointer to environment struct
- */
- AXIS2_EXTERN axis2_bool_t AXIS2_CALL
- axis2_simple_tcp_svr_conn_is_open(
- axis2_simple_tcp_svr_conn_t * svr_conn,
- const axutil_env_t * env);
-
- /**
- * @param svr_conn pointer to server connection struct
- * @param env pointer to environment struct
- */
-
- AXIS2_EXTERN axutil_stream_t *AXIS2_CALL
-
- axis2_simple_tcp_svr_conn_get_stream(
- const axis2_simple_tcp_svr_conn_t * svr_conn,
- const axutil_env_t * env);
-
- /**
- * @param svr_conn pointer to server connection struct
- * @param env pointer to environment struct
- */
- AXIS2_EXTERN axis2_char_t *AXIS2_CALL
-
- axis2_simple_tcp_svr_conn_read_request(
- axis2_simple_tcp_svr_conn_t * svr_conn,
- const axutil_env_t * env);
-
- /**
- * @param svr_conn pointer to server connection struct
- * @param env pointer to environment struct
- * @param timeout timeout
- * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
- */
- AXIS2_EXTERN axis2_status_t AXIS2_CALL
-
- axis2_simple_tcp_svr_conn_set_rcv_timeout(
- axis2_simple_tcp_svr_conn_t * svr_conn,
- const axutil_env_t * env,
- int timeout);
-
- /**
- * @param svr_conn pointer to server connection struct
- * @param env pointer to environment struct
- * @param timeout timeout
- * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
- */
- AXIS2_EXTERN axis2_status_t AXIS2_CALL
-
- axis2_simple_tcp_svr_conn_set_snd_timeout(
- axis2_simple_tcp_svr_conn_t * svr_conn,
- const axutil_env_t * env,
- int timeout);
-
- /**
- * @param svr_conn pointer to server connection struct
- * @param env pointer to environment struct
- */
- AXIS2_EXTERN axis2_char_t *AXIS2_CALL
-
- axis2_simple_tcp_svr_conn_get_svr_ip(
- const axis2_simple_tcp_svr_conn_t * svr_conn,
- const axutil_env_t * env);
-
- /**
- * @param svr_conn pointer to server connection struct
- * @param env pointer to environment struct
- */
- AXIS2_EXTERN axis2_char_t *AXIS2_CALL
-
- axis2_simple_tcp_svr_conn_get_peer_ip(
- const axis2_simple_tcp_svr_conn_t * svr_conn,
- const axutil_env_t * env);
-
- /**
- * @param svr_conn pointer to server connection struct
- * @param env pointer to environment struct
- * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
- */
- AXIS2_EXTERN void AXIS2_CALL
- axis2_simple_tcp_svr_conn_free(
- axis2_simple_tcp_svr_conn_t * svr_conn,
- const axutil_env_t * env);
-
- /**
- * creates axis2_simple_tcp_svr_conn struct
- * @param env pointer to environment struct
- * @param sockfd sockfd
- */
- AXIS2_EXTERN axis2_simple_tcp_svr_conn_t *AXIS2_CALL
-
- axis2_simple_tcp_svr_conn_create(
- const axutil_env_t * env,
- int sockfd);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* AXIS2_SIMPLE_HTTP_SVR_CONN_H */
diff --git a/src/core/transport/tcp/axis2_tcp_server.h b/src/core/transport/tcp/axis2_tcp_server.h
deleted file mode 100644
index e4557a1bd..000000000
--- a/src/core/transport/tcp/axis2_tcp_server.h
+++ /dev/null
@@ -1,60 +0,0 @@
-
-/*
-* Licensed to the Apache Software Foundation (ASF) under one or more
-* contributor license agreements. See the NOTICE file distributed with
-* this work for additional information regarding copyright ownership.
-* The ASF licenses this file to You under the Apache License, Version 2.0
-* (the "License"); you may not use this file except in compliance with
-* the License. You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-#ifndef AXIS2_TCP_SERVER_H
-#define AXIS2_TCP_SERVER_H
-
-/**
- * @defgroup axis2_tcp_server tcp server
- * @ingroup axis2_core_trans_tcp
- * @{
- */
-
-/**
- * @file axis2_tcp_server.h
- * @brief axis2 TCP Server implementation
- */
-
-#include <axis2_const.h>
-#include <axis2_defines.h>
-#include <axutil_env.h>
-#include <axis2_conf_ctx.h>
-#include <axis2_transport_receiver.h>
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
- AXIS2_EXTERN axis2_transport_receiver_t *AXIS2_CALL
- axis2_tcp_server_create(
- const axutil_env_t * env,
- const axis2_char_t * repo,
- const int port);
-
- AXIS2_EXTERN axis2_status_t AXIS2_CALL
- axis2_tcp_server_stop(
- axis2_transport_receiver_t * server,
- const axutil_env_t * env);
-
- /** @} */
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* AXIS2_TCP_SERVER_H */
diff --git a/src/core/transport/tcp/axis2_tcp_svr_thread.h b/src/core/transport/tcp/axis2_tcp_svr_thread.h
deleted file mode 100644
index aa22ea178..000000000
--- a/src/core/transport/tcp/axis2_tcp_svr_thread.h
+++ /dev/null
@@ -1,117 +0,0 @@
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef AXIS2_TCP_SVR_THREAD_H
-#define AXIS2_TCP_SVR_THREAD_H
-
-/**
- * @defgroup axis2_tcp_svr_thread tcp server thread
- * @ingroup axis2_core_trans_tcp
- * @{
- */
-
-/**
- * @file axis2_tcp_svr_thread.h
- * @brief axis2 TCP server listning thread implementation
- */
-
-#include <axis2_const.h>
-#include <axis2_defines.h>
-#include <axutil_env.h>
-#include <axis2_tcp_worker.h>
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
- /** Type name for struct axist_tcp_svr_thread */
- typedef struct axis2_tcp_svr_thread axis2_tcp_svr_thread_t;
-
- /**
- * @param svr_thread pointer to server thread
- * @param env pointer to environment struct
- */
- AXIS2_EXTERN axis2_status_t AXIS2_CALL
- axis2_tcp_svr_thread_run(
- axis2_tcp_svr_thread_t * svr_thread,
- const axutil_env_t * env);
-
- /**
- * @param svr_thread pointer to server thread
- * @param env pointer to environment struct
- */
- AXIS2_EXTERN axis2_status_t AXIS2_CALL
- axis2_tcp_svr_thread_destroy(
- axis2_tcp_svr_thread_t * svr_thread,
- const axutil_env_t * env);
-
- /**
- * @param svr_thread pointer to server thread
- * @param env pointer to environment struct
- */
- AXIS2_EXTERN int AXIS2_CALL
- axis2_tcp_svr_thread_get_local_port(
- const axis2_tcp_svr_thread_t * svr_thread,
- const axutil_env_t * env);
-
- /**
- * @param svr_thread pointer to server thread
- * @param env pointer to environment struct
- */
- AXIS2_EXTERN axis2_bool_t AXIS2_CALL
- axis2_tcp_svr_thread_is_running(
- axis2_tcp_svr_thread_t * svr_thread,
- const axutil_env_t * env);
-
- /**
- * @param svr_thread pointer to server thread
- * @param env pointer to environment struct
- * @param worker pointer to worker
- */
- AXIS2_EXTERN axis2_status_t AXIS2_CALL
- axis2_tcp_svr_thread_set_worker(
- axis2_tcp_svr_thread_t * svr_thread,
- const axutil_env_t * env,
- axis2_tcp_worker_t * worker);
-
- /**
- * @param svr_thread pointer to server thread
- * @param env pointer to environment struct
- */
- AXIS2_EXTERN void AXIS2_CALL
- axis2_tcp_svr_thread_free(
- axis2_tcp_svr_thread_t * svr_thread,
- const axutil_env_t * env);
-
- /**
- * @param env pointer to environment struct
- * @param port
- */
- AXIS2_EXTERN axis2_tcp_svr_thread_t *AXIS2_CALL
-
- axis2_tcp_svr_thread_create(
- const axutil_env_t * env,
- int port);
-
- /** @} */
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* AXIS2_TCP_SVR_THREAD_H */
diff --git a/src/core/transport/tcp/axis2_tcp_transport.h b/src/core/transport/tcp/axis2_tcp_transport.h
deleted file mode 100644
index 9c8c7db2a..000000000
--- a/src/core/transport/tcp/axis2_tcp_transport.h
+++ /dev/null
@@ -1,89 +0,0 @@
-
-/*
-* Copyright 2004,2005 The Apache Software Foundation.
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain count copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-#ifndef AXIS2_TCP_TRANSPORT_H
-#define AXIS2_TCP_TRANSPORT_H
-
-#include <axis2_const.h>
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
- /** @defgroup axis2_core_trans_tcp tcp transport
- * @ingroup axis2_transport
- * Description.
- * @{
- */
-
- /**
- * @defgroup axis2_core_transport_tcp core tcp transport
- * @ingroup axis2_core_trans_tcp
- * @{
- */
-
- /**
- * @brief TCP protocol and message context constants.
- *
- */
-#define AXIS2_TCP_OUT_TRANSPORT_INFO "TCPOutTransportInfo"
-
- /**
- * PROTOCOL_VERSION
- */
-#define AXIS2_TCP_PROTOCOL_VERSION "PROTOCOL"
-
- /**
- * SOCKET
- */
-#define AXIS2_SOCKET "SOCKET"
-
- /**
- * HEADER_HOST
- */
-#define AXIS2_TCP_HOST "Host"
-
- /**
- * SO_TIMEOUT
- */
-#define AXIS2_TCP_SO_TIMEOUT "SO_TIMEOUT"
-
- /**
- * CONNECTION_TIMEOUT
- */
-#define AXIS2_TCP_CONNECTION_TIMEOUT "CONNECTION_TIMEOUT"
-
- /**
- * DEFAULT_SO_TIMEOUT
- */
-#define AXIS2_TCP_DEFAULT_SO_TIMEOUT 60000
-
- /**
- * DEFAULT_CONNECTION_TIMEOUT
- */
-#define AXIS2_TCP_DEFAULT_CONNECTION_TIMEOUT 60000
-
- /**
- * Field TRANSPORT_TCP
- */
-#define AXIS2_TRANSPORT_TCP "tcp"
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* AXIS2_TCP_TRANSPORT_H */
diff --git a/src/core/transport/tcp/axis2_tcp_transport_sender.h b/src/core/transport/tcp/axis2_tcp_transport_sender.h
deleted file mode 100644
index 9d706e59c..000000000
--- a/src/core/transport/tcp/axis2_tcp_transport_sender.h
+++ /dev/null
@@ -1,59 +0,0 @@
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef AXIS2_TCP_TRANSPORT_SENDER_H
-#define AXIS2_TCP_TRANSPORT_SENDER_H
-
-/**
- * @defgroup axis2_tcp_transport_sender tcp transport sender
- * @ingroup axis2_core_trans_tcp
- * @{
- */
-
-/**
- * @file axis2_tcp_transport_sender.h
- * @brief axis2 TCP Transport Sender (Handler) implementation
- */
-
-#include <axis2_const.h>
-#include <axis2_defines.h>
-#include <axutil_env.h>
-#include <axis2_msg_ctx.h>
-#include <axis2_conf_ctx.h>
-#include <axis2_transport_out_desc.h>
-#include <axis2_transport_sender.h>
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
- /**
- * @param env pointer to environment struct
- */
- AXIS2_EXTERN axis2_transport_sender_t *AXIS2_CALL
-
- axis2_tcp_transport_sender_create(
- const axutil_env_t * env);
-
- /** @} */
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* AXIS2_TCP_TRANSPORT_SENDER_H */
diff --git a/src/core/transport/tcp/axis2_tcp_worker.h b/src/core/transport/tcp/axis2_tcp_worker.h
deleted file mode 100644
index 952c6598b..000000000
--- a/src/core/transport/tcp/axis2_tcp_worker.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
-* Licensed to the Apache Software Foundation (ASF) under one or more
-* contributor license agreements. See the NOTICE file distributed with
-* this work for additional information regarding copyright ownership.
-* The ASF licenses this file to You under the Apache License, Version 2.0
-* (the "License"); you may not use this file except in compliance with
-* the License. You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-#ifndef AXIS2_TCP_WORKER_H
-#define AXIS2_TCP_WORKER_H
-
-/**
- * @defgroup axis2_tcp_worker tcp worker
- * @ingroup axis2_core_trans_tcp
- * @{
- */
-
-/**
- * @file axis2_tcp_worker.h
- * @brief axis2 TCP Worker
- */
-
-#include <axis2_const.h>
-#include <axis2_defines.h>
-#include <axutil_env.h>
-#include <axis2_simple_tcp_svr_conn.h>
-#include <axis2_conf_ctx.h>
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
- /** Type name for struct axis2_tcp_worker */
- typedef struct axis2_tcp_worker axis2_tcp_worker_t;
-
- /**
- * @param tcp_worker pointer to tcp worker
- * @param env pointer to environment struct
- * @param svr_conn pointer to svr conn
- * @param simple_request pointer to simple request
- */
- AXIS2_EXTERN axis2_bool_t AXIS2_CALL
- axis2_tcp_worker_process_request(
- axis2_tcp_worker_t * tcp_worker,
- const axutil_env_t * env,
- axis2_simple_tcp_svr_conn_t * svr_conn,
- axis2_char_t * simple_request);
-
- /**
- * @param tcp_worker pointer to tcp worker
- * @param env pointer to environment struct
- * @param port
- * @return AXIS2_SUCCESS on success, else AXIS2_FAILURE
- */
- AXIS2_EXTERN axis2_status_t AXIS2_CALL
- axis2_tcp_worker_set_svr_port(
- axis2_tcp_worker_t * tcp_worker,
- const axutil_env_t * env,
- int port);
-
- /**
- * @param tcp_worker pointer to tcp worker
- * @param env pointer to environment strut
- * @return void
- */
- AXIS2_EXTERN void AXIS2_CALL
- axis2_tcp_worker_free(
- axis2_tcp_worker_t * tcp_worker,
- const axutil_env_t * env);
-
- /**
- * @param env pointer to environment struct
- * @param conf_ctx pointer to configuration context
- */
- AXIS2_EXTERN axis2_tcp_worker_t *AXIS2_CALL
- axis2_tcp_worker_create(
- const axutil_env_t * env,
- axis2_conf_ctx_t * conf_ctx);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* AXIS2_TCP_WORKER_H */
diff --git a/src/core/transport/tcp/receiver/Makefile.am b/src/core/transport/tcp/receiver/Makefile.am
deleted file mode 100644
index 49548dd96..000000000
--- a/src/core/transport/tcp/receiver/Makefile.am
+++ /dev/null
@@ -1,37 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-lib_LTLIBRARIES = libaxis2_tcp_receiver.la
-libaxis2_tcp_receiver_la_LIBADD=$(top_builddir)/util/src/libaxutil.la\
- $(top_builddir)/src/core/transport/http/common/libaxis2_http_common.la
-
-
-libaxis2_tcp_receiver_la_SOURCES = tcp_svr_thread.c \
- tcp_worker.c \
- simple_tcp_svr_conn.c \
- tcp_receiver.c
-
-
-libaxis2_tcp_receiver_la_LDFLAGS = -version-info $(VERSION_NO)
-
-libaxis2_tcp_receiver_la_CPPFLAGS = -I$(top_srcdir)/include \
- -I$(top_srcdir)/src/core/transport\
- -I$(top_srcdir)/src/core/transport/tcp \
- -I$(top_srcdir)/src/core/description \
- -I$(top_srcdir)/src/core/context \
- -I$(top_srcdir)/src/core/phaseresolver \
- -I$(top_srcdir)/src/core/engine \
- -I$(top_srcdir)/src/core/deployment \
- -I$(top_srcdir)/util/include \
- -I$(top_srcdir)/axiom/include
diff --git a/src/core/transport/tcp/receiver/simple_tcp_svr_conn.c b/src/core/transport/tcp/receiver/simple_tcp_svr_conn.c
deleted file mode 100644
index 0a43ec655..000000000
--- a/src/core/transport/tcp/receiver/simple_tcp_svr_conn.c
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <axis2_simple_tcp_svr_conn.h>
-#include <axis2_tcp_transport.h>
-#include <axutil_string.h>
-#include <axutil_network_handler.h>
-#include <platforms/axutil_platform_auto_sense.h>
-
-struct axis2_simple_tcp_svr_conn
-{
- int socket;
- axutil_stream_t *stream;
- axis2_char_t *buffer;
-};
-
-AXIS2_EXTERN axis2_simple_tcp_svr_conn_t *AXIS2_CALL
-axis2_simple_tcp_svr_conn_create(
- const axutil_env_t * env,
- int sockfd)
-{
- axis2_simple_tcp_svr_conn_t *svr_conn = NULL;
- AXIS2_ENV_CHECK(env, NULL);
- svr_conn = (axis2_simple_tcp_svr_conn_t *)AXIS2_MALLOC(env->allocator,
- sizeof(axis2_simple_tcp_svr_conn_t));
-
- if(!svr_conn)
- {
- AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
- return NULL;
- }
- svr_conn->socket = sockfd;
- svr_conn->stream = NULL;
- svr_conn->buffer = NULL;
-
- if(-1 != svr_conn->socket)
- {
- svr_conn->stream = axutil_stream_create_socket(env, svr_conn->socket);
- if(!svr_conn->stream)
- {
- axis2_simple_tcp_svr_conn_free((axis2_simple_tcp_svr_conn_t *)svr_conn, env);
- return NULL;
- }
- }
- return svr_conn;
-}
-
-AXIS2_EXTERN void AXIS2_CALL
-axis2_simple_tcp_svr_conn_free(
- axis2_simple_tcp_svr_conn_t * svr_conn,
- const axutil_env_t * env)
-{
- axis2_simple_tcp_svr_conn_close(svr_conn, env);
-
- AXIS2_FREE(env->allocator, svr_conn);
-
- return;
-}
-
-AXIS2_EXTERN axis2_status_t AXIS2_CALL
-axis2_simple_tcp_svr_conn_close(
- axis2_simple_tcp_svr_conn_t * svr_conn,
- const axutil_env_t * env)
-{
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-
- axutil_stream_free(svr_conn->stream, env);
- if(-1 != svr_conn->socket)
- {
- axutil_network_handler_close_socket(env, svr_conn->socket);
- svr_conn->socket = -1;
- }
- return AXIS2_SUCCESS;
-}
-
-AXIS2_EXTERN axis2_bool_t AXIS2_CALL
-axis2_simple_tcp_svr_conn_is_open(
- axis2_simple_tcp_svr_conn_t * svr_conn,
- const axutil_env_t * env)
-{
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
- if(-1 != svr_conn->socket)
- {
- return AXIS2_TRUE;
- }
- return AXIS2_FALSE;
-}
-
-AXIS2_EXTERN axutil_stream_t *AXIS2_CALL
-axis2_simple_tcp_svr_conn_get_stream(
- const axis2_simple_tcp_svr_conn_t * svr_conn,
- const axutil_env_t * env)
-{
- return svr_conn->stream;
-}
-
-AXIS2_EXTERN axis2_char_t *AXIS2_CALL
-axis2_simple_tcp_svr_conn_read_request(
- axis2_simple_tcp_svr_conn_t * svr_conn,
- const axutil_env_t * env)
-{
- int size = 32000;
- axis2_char_t str_line[32000];
- axis2_char_t tmp_buf[32000];
- int read = -1;
-
- AXIS2_ENV_CHECK(env, NULL);
-
- memset(str_line, 0, size);
- while((read = axutil_stream_peek_socket(svr_conn->stream, env, tmp_buf, size - 1)) > 0)
- {
- tmp_buf[read] = '\0';
- if(read > 0)
- {
- read = axutil_stream_read(svr_conn->stream, env, tmp_buf, size - 1);
- if(read > 0)
- {
- tmp_buf[read] = '\0';
- strcat(str_line, tmp_buf);
- break;
- }
- else
- {
- break;
- }
- }
- }
- if(str_line[0] > 0)
- {
- svr_conn->buffer = str_line;
- }
- return svr_conn->buffer;
-}
-
-AXIS2_EXTERN axis2_status_t AXIS2_CALL
-axis2_simple_tcp_svr_conn_set_rcv_timeout(
- axis2_simple_tcp_svr_conn_t * svr_conn,
- const axutil_env_t * env,
- int timeout)
-{
- return axutil_network_handler_set_sock_option(env, svr_conn->socket, SO_RCVTIMEO, timeout);
-}
-
-AXIS2_EXTERN axis2_status_t AXIS2_CALL
-axis2_simple_tcp_svr_conn_set_snd_timeout(
- axis2_simple_tcp_svr_conn_t * svr_conn,
- const axutil_env_t * env,
- int timeout)
-{
- return axutil_network_handler_set_sock_option(env, svr_conn->socket, SO_SNDTIMEO, timeout);
-}
-
-AXIS2_EXTERN axis2_char_t *AXIS2_CALL
-axis2_simple_tcp_svr_conn_get_svr_ip(
- const axis2_simple_tcp_svr_conn_t * svr_conn,
- const axutil_env_t * env)
-{
- return axutil_network_handler_get_svr_ip(env, svr_conn->socket);
-}
-
-AXIS2_EXTERN axis2_char_t *AXIS2_CALL
-axis2_simple_tcp_svr_conn_get_peer_ip(
- const axis2_simple_tcp_svr_conn_t * svr_conn,
- const axutil_env_t * env)
-{
- return axutil_network_handler_get_peer_ip(env, svr_conn->socket);
-}
diff --git a/src/core/transport/tcp/receiver/tcp_receiver.c b/src/core/transport/tcp/receiver/tcp_receiver.c
deleted file mode 100644
index 04512176c..000000000
--- a/src/core/transport/tcp/receiver/tcp_receiver.c
+++ /dev/null
@@ -1,400 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <axis2_tcp_transport.h>
-#include <axis2_tcp_svr_thread.h>
-#include <axis2_tcp_server.h>
-#include <axis2_transport_in_desc.h>
-#include <axutil_param_container.h>
-#include <axutil_url.h>
-#include <axis2_conf_init.h>
-#include <stdlib.h>
-
-/**
- * @brief TCP Client struct impl
- * Axis2 TCP Client impl
- */
-
-typedef struct axis2_tcp_server_impl
-{
- axis2_transport_receiver_t tcp_server;
- axis2_tcp_svr_thread_t *svr_thread;
- int port;
- axis2_char_t *svr_ip;
- axis2_conf_ctx_t *conf_ctx;
- axis2_conf_ctx_t *conf_ctx_private;
- axis2_conf_t *conf;
- axis2_bool_t is_application_client_side;
-} axis2_tcp_server_impl_t;
-
-#define AXIS2_INTF_TO_IMPL(tcp_server) \
- ((axis2_tcp_server_impl_t *)(tcp_server))
-
-/***************************** Function headers *******************************/
-
-axis2_status_t AXIS2_CALL
-axis2_tcp_server_init(
- axis2_transport_receiver_t * server,
- const axutil_env_t * env,
- axis2_conf_ctx_t * conf_ctx,
- axis2_transport_in_desc_t * in_desc);
-
-axis2_status_t AXIS2_CALL
-axis2_tcp_server_start(
- axis2_transport_receiver_t * server,
- const axutil_env_t * env);
-
-axis2_status_t AXIS2_CALL
-axis2_tcp_server_stop(
- axis2_transport_receiver_t * server,
- const axutil_env_t * env);
-
-axis2_conf_ctx_t *AXIS2_CALL axis2_tcp_server_get_conf_ctx(
- axis2_transport_receiver_t * server,
- const axutil_env_t * env);
-
-axis2_endpoint_ref_t *AXIS2_CALL axis2_tcp_server_get_reply_to_epr(
- axis2_transport_receiver_t * server,
- const axutil_env_t * env,
- const axis2_char_t * svc_name);
-
-
-axis2_endpoint_ref_t *AXIS2_CALL axis2_tcp_server_get_epr_for_service(
- axis2_transport_receiver_t * server,
- const axutil_env_t * env,
- const axis2_char_t * svc_name);
-
-
-axis2_bool_t AXIS2_CALL
-axis2_tcp_server_is_running(
- axis2_transport_receiver_t * server,
- const axutil_env_t * env);
-
-static void AXIS2_CALL
-axis2_tcp_server_set_is_application_client_side(
- axis2_transport_receiver_t * server,
- const axutil_env_t * env,
- axis2_bool_t is_application_client_side);
-
-void AXIS2_CALL axis2_tcp_server_free(
- axis2_transport_receiver_t * server,
- const axutil_env_t * env);
-
-static axis2_char_t* AXIS2_CALL
-axis2_tcp_server_get_server_ip(
-axis2_transport_receiver_t *server,
-const axutil_env_t *env);
-
-static void AXIS2_CALL
-axis2_tcp_server_set_server_ip(
-axis2_transport_receiver_t *transport_receiver,
-const axutil_env_t *env,
- axis2_char_t *serverip);
-
-static const axis2_transport_receiver_ops_t tcp_transport_receiver_ops_var = {
- axis2_tcp_server_init,
- axis2_tcp_server_start,
- axis2_tcp_server_get_reply_to_epr,
- axis2_tcp_server_get_epr_for_service,
- axis2_tcp_server_get_server_ip,
- axis2_tcp_server_set_server_ip,
- axis2_tcp_server_get_conf_ctx,
- axis2_tcp_server_is_running,
- axis2_tcp_server_set_is_application_client_side,
- axis2_tcp_server_stop,
- axis2_tcp_server_free };
-
-AXIS2_EXTERN axis2_transport_receiver_t *AXIS2_CALL
-axis2_tcp_server_create(
- const axutil_env_t * env,
- const axis2_char_t * repo,
- const int port)
-{
- axis2_tcp_server_impl_t *server_impl = NULL;
- AXIS2_ENV_CHECK(env, NULL);
-
- server_impl = (axis2_tcp_server_impl_t *)AXIS2_MALLOC(env->allocator,
- sizeof(axis2_tcp_server_impl_t));
-
- if(!server_impl)
- {
- AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
- return NULL;
- }
-
- server_impl->svr_thread = NULL;
- server_impl->conf_ctx = NULL;
- server_impl->conf_ctx_private = NULL;
- server_impl->port = port;
- server_impl->svr_ip = NULL;
- server_impl->tcp_server.ops = &tcp_transport_receiver_ops_var;
-
- if(repo)
- {
-
- /**
- * We first create a private conf ctx which is owned by this server
- * we only free this private conf context. We should never free the
- * server_impl->conf_ctx because it may own to any other object which
- * may lead to double free
- */
- server_impl->conf_ctx_private = axis2_build_conf_ctx(env, repo);
- if(!server_impl->conf_ctx_private)
- {
- axis2_tcp_server_free((axis2_transport_receiver_t *)server_impl, env);
- return NULL;
- }
- server_impl->conf_ctx = server_impl->conf_ctx_private;
- }
- return &(server_impl->tcp_server);
-}
-
-void AXIS2_CALL
-axis2_tcp_server_free(
- axis2_transport_receiver_t * server,
- const axutil_env_t * env)
-{
- axis2_tcp_server_impl_t *server_impl = NULL;
- AXIS2_ENV_CHECK(env, void);
- server_impl = AXIS2_INTF_TO_IMPL(server);
- if(server_impl->svr_thread)
- {
- axis2_tcp_svr_thread_destroy(server_impl->svr_thread, env);
- axis2_tcp_svr_thread_free(server_impl->svr_thread, env);
- server_impl->svr_thread = NULL;
- }
-
- if(server_impl->conf_ctx_private)
- {
- axis2_conf_ctx_free(server_impl->conf_ctx_private, env);
- server_impl->conf_ctx_private = NULL;
- }
-
- /**
- * Do not free this. It may own to some other object
- */
- server_impl->conf_ctx = NULL;
- AXIS2_FREE(env->allocator, server_impl);
- return;
-}
-
-static void AXIS2_CALL
-axis2_tcp_server_set_is_application_client_side(
- axis2_transport_receiver_t * server,
- const axutil_env_t * env,
- axis2_bool_t is_application_client_side)
-{
- axis2_tcp_server_impl_t *server_impl = NULL;
- server_impl = AXIS2_INTF_TO_IMPL(server);
- server_impl->is_application_client_side = is_application_client_side;
-}
-
-axis2_status_t AXIS2_CALL
-axis2_tcp_server_init(
- axis2_transport_receiver_t * server,
- const axutil_env_t * env,
- axis2_conf_ctx_t * conf_ctx,
- axis2_transport_in_desc_t * in_desc)
-{
- axis2_tcp_server_impl_t *server_impl = NULL;
- axis2_char_t *port_str = NULL;
- axutil_param_t *param = NULL;
-
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
- server_impl = AXIS2_INTF_TO_IMPL(server);
-
- server_impl->conf_ctx = conf_ctx;
- param = (axutil_param_t *)axutil_param_container_get_param(
- axis2_transport_in_desc_param_container(in_desc, env), env, "port");
- if(param)
- {
- port_str = axutil_param_get_value(param, env);
- }
- if(port_str)
- {
- server_impl->port = atoi(port_str);
- }
- return AXIS2_SUCCESS;
-}
-
-axis2_status_t AXIS2_CALL
-axis2_tcp_server_start(
- axis2_transport_receiver_t * server,
- const axutil_env_t * env)
-{
-
- axis2_tcp_server_impl_t *server_impl = NULL;
- axis2_tcp_worker_t *worker = NULL;
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-
- server_impl = AXIS2_INTF_TO_IMPL(server);
- server_impl->svr_thread = axis2_tcp_svr_thread_create(env, server_impl->port);
- if(!server_impl->svr_thread)
- {
- return AXIS2_FAILURE;
- }
- worker = axis2_tcp_worker_create(env, server_impl->conf_ctx);
- axis2_tcp_worker_set_svr_port(worker, env, server_impl->port);
- if(!worker)
- {
- axis2_tcp_svr_thread_free(server_impl->svr_thread, env);
- return AXIS2_FAILURE;
- }
- AXIS2_LOG_INFO(env->log, "Starting TCP server thread");
- axis2_tcp_svr_thread_set_worker(server_impl->svr_thread, env, worker);
- axis2_tcp_svr_thread_run(server_impl->svr_thread, env);
- return AXIS2_SUCCESS;
-}
-
-AXIS2_EXTERN axis2_status_t AXIS2_CALL
-axis2_tcp_server_stop(
- axis2_transport_receiver_t * server,
- const axutil_env_t * env)
-{
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-
- AXIS2_LOG_INFO(env->log, "Terminating TCP server thread");
- if(AXIS2_INTF_TO_IMPL(server)->svr_thread)
- {
- axis2_tcp_svr_thread_destroy(AXIS2_INTF_TO_IMPL(server)->svr_thread, env);
- }
- AXIS2_LOG_INFO(env->log, "Successfully terminated TCP server" " thread");
- return AXIS2_SUCCESS;
-}
-
-axis2_conf_ctx_t *AXIS2_CALL
-axis2_tcp_server_get_conf_ctx(
- axis2_transport_receiver_t * server,
- const axutil_env_t * env)
-{
- AXIS2_ENV_CHECK(env, NULL);
- return AXIS2_INTF_TO_IMPL(server)->conf_ctx;
-}
-
-axis2_endpoint_ref_t *AXIS2_CALL
-axis2_tcp_server_get_reply_to_epr(
- axis2_transport_receiver_t * server,
- const axutil_env_t * env,
- const axis2_char_t * svc_name)
-{
- axis2_endpoint_ref_t *epr = NULL;
- const axis2_char_t *host_address = NULL;
- axis2_char_t *svc_path = NULL;
- axutil_url_t *url = NULL;
- AXIS2_ENV_CHECK(env, NULL);
- AXIS2_PARAM_CHECK(env->error, svc_name, NULL);
-
- host_address = "127.0.0.1"; /* TODO : get from axis2.xml */
- svc_path = axutil_stracat(env, "/axis2/services/", svc_name);
- url = axutil_url_create(env, "tcp", host_address, AXIS2_INTF_TO_IMPL(server)->port, svc_path);
- AXIS2_FREE(env->allocator, svc_path);
- if(!url)
- {
- return NULL;
- }
- epr = axis2_endpoint_ref_create(env, axutil_url_to_external_form(url, env));
- axutil_url_free(url, env);
- return epr;
-}
-
-axis2_endpoint_ref_t *AXIS2_CALL
-axis2_tcp_server_get_epr_for_service(
- axis2_transport_receiver_t * server,
- const axutil_env_t * env,
- const axis2_char_t * svc_name)
-{
- axis2_endpoint_ref_t *epr = NULL;
- const axis2_char_t *host_address = NULL;
- axis2_char_t *svc_path = NULL;
- axutil_url_t *url = NULL;
-
- AXIS2_PARAM_CHECK(env->error, svc_name, NULL);
- host_address = "127.0.0.1"; /* TODO : get from axis2.xml */
- svc_path = axutil_stracat(env, "/axis2/services/", svc_name);
-
- url = axutil_url_create(env, "tcp", host_address, AXIS2_INTF_TO_IMPL(server)->port, svc_path);
- AXIS2_FREE(env->allocator, svc_path);
- if(!url)
- {
- return NULL;
- }
- epr = axis2_endpoint_ref_create(env, axutil_url_to_external_form(url, env));
- axutil_url_free(url, env);
- return epr;
-}
-
-axis2_bool_t AXIS2_CALL
-axis2_tcp_server_is_running(
- axis2_transport_receiver_t * server,
- const axutil_env_t * env)
-{
- axis2_tcp_server_impl_t *server_impl = NULL;
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
- server_impl = AXIS2_INTF_TO_IMPL(server);
- if(!server_impl->svr_thread)
- {
- return AXIS2_FALSE;
- }
- return axis2_tcp_svr_thread_is_running(server_impl->svr_thread, env);
-}
-
-static axis2_char_t* AXIS2_CALL
-axis2_tcp_server_get_server_ip(
-axis2_transport_receiver_t *server,
-const axutil_env_t *env)
-{
- return AXIS2_INTF_TO_IMPL(server)->svr_ip;
-}
-
-static void AXIS2_CALL
-axis2_tcp_server_set_server_ip(
-axis2_transport_receiver_t *server,
-const axutil_env_t *env,
- axis2_char_t *serverip)
-{
- AXIS2_INTF_TO_IMPL(server)->svr_ip = serverip;
-}
-
-
-/**
- * Following block distinguish the exposed part of the dll.
- */
-AXIS2_EXPORT int
-axis2_get_instance(
- struct axis2_transport_receiver **inst,
- const axutil_env_t * env)
-{
- *inst = axis2_tcp_server_create(env, NULL, -1);
- if(!(*inst))
- {
- return AXIS2_FAILURE;
- }
-
- return AXIS2_SUCCESS;
-}
-
-AXIS2_EXPORT int
-axis2_remove_instance(
- axis2_transport_receiver_t * inst,
- const axutil_env_t * env)
-{
- if(inst)
- {
- axis2_transport_receiver_free(inst, env);
- }
- return AXIS2_SUCCESS;
-}
diff --git a/src/core/transport/tcp/receiver/tcp_svr_thread.c b/src/core/transport/tcp/receiver/tcp_svr_thread.c
deleted file mode 100644
index e0c4d4546..000000000
--- a/src/core/transport/tcp/receiver/tcp_svr_thread.c
+++ /dev/null
@@ -1,316 +0,0 @@
-/*
-* Licensed to the Apache Software Foundation (ASF) under one or more
-* contributor license agreements. See the NOTICE file distributed with
-* this work for additional information regarding copyright ownership.
-* The ASF licenses this file to You under the Apache License, Version 2.0
-* (the "License"); you may not use this file except in compliance with
-* the License. You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * tcp://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <platforms/axutil_platform_auto_sense.h>
-#include <axis2_tcp_svr_thread.h>
-#include <axis2_simple_tcp_svr_conn.h>
-#include <axis2_tcp_server.h>
-#include <axis2_tcp_transport.h>
-#include <axutil_string.h>
-#include <axutil_network_handler.h>
-#include <axis2_simple_tcp_svr_conn.h>
-#include <axutil_url.h>
-#include <axutil_error_default.h>
-#include <axiom_xml_reader.h>
-#include <signal.h>
-
-AXIS2_EXPORT int axis2_tcp_socket_read_timeout = AXIS2_TCP_DEFAULT_SO_TIMEOUT;
-
-struct axis2_tcp_svr_thread
-{
- int listen_socket;
- axis2_bool_t stopped;
- axis2_tcp_worker_t *worker;
- int port;
-};
-
-typedef struct axis2_tcp_svr_thd_args
-{
- axutil_env_t *env;
- axis2_socket_t socket;
- axis2_tcp_worker_t *worker;
- axutil_thread_t *thread;
-} axis2_tcp_svr_thd_args_t;
-
-AXIS2_EXTERN const axutil_env_t *AXIS2_CALL init_thread_env(
- const axutil_env_t ** system_env);
-
-void *AXIS2_THREAD_FUNC axis2_svr_thread_worker_func(
- axutil_thread_t * thd,
- void *data);
-
-axis2_tcp_svr_thread_t *AXIS2_CALL
-axis2_tcp_svr_thread_create(
- const axutil_env_t * env,
- int port)
-{
- axis2_tcp_svr_thread_t *svr_thread = NULL;
- AXIS2_ENV_CHECK(env, NULL);
-
- svr_thread = (axis2_tcp_svr_thread_t *)AXIS2_MALLOC(env->allocator,
- sizeof(axis2_tcp_svr_thread_t));
-
- if(!svr_thread)
- {
- AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
- return NULL;
- }
-
- svr_thread->worker = NULL;
- svr_thread->stopped = AXIS2_FALSE;
- svr_thread->port = port;
- svr_thread->listen_socket = (int)axutil_network_handler_create_server_socket(env,
- NULL, svr_thread->port);
- if(-1 == svr_thread->listen_socket)
- {
- axis2_tcp_svr_thread_free((axis2_tcp_svr_thread_t *)svr_thread, env);
- return NULL;
- }
-
- return svr_thread;
-}
-
-void AXIS2_CALL
-axis2_tcp_svr_thread_free(
- axis2_tcp_svr_thread_t * svr_thread,
- const axutil_env_t * env)
-{
- AXIS2_ENV_CHECK(env, void);
-
- if(svr_thread->worker)
- {
- axis2_tcp_worker_free(svr_thread->worker, env);
- svr_thread->worker = NULL;
- }
- if(-1 != svr_thread->listen_socket)
- {
- axutil_network_handler_close_socket(env, svr_thread->listen_socket);
- svr_thread->listen_socket = -1;
- }
- svr_thread->stopped = AXIS2_TRUE;
-
- AXIS2_FREE(env->allocator, svr_thread);
- return;
-}
-
-axis2_status_t AXIS2_CALL
-axis2_tcp_svr_thread_run(
- axis2_tcp_svr_thread_t * svr_thread,
- const axutil_env_t * env)
-{
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-
- while(AXIS2_FALSE == svr_thread->stopped)
- {
- int socket = -1;
- axis2_tcp_svr_thd_args_t *arg_list = NULL;
-#ifdef AXIS2_SVR_MULTI_THREADED
- axutil_thread_t *worker_thread = NULL;
-#endif
-
- socket = (int)axutil_network_handler_svr_socket_accept(env, svr_thread-> listen_socket);
- if(!svr_thread->worker)
- {
- AXIS2_LOG_WARNING(env->log, AXIS2_LOG_SI, "Worker not ready yet."
- " Cannot serve the request");
- axutil_network_handler_close_socket(env, socket);
- /* AXIS2C-1482: Sleep briefly to avoid busy-loop when worker isn't ready */
- AXIS2_USLEEP(10000); /* 10ms */
- continue;
- }
- arg_list = AXIS2_MALLOC(env->allocator, sizeof(axis2_tcp_svr_thd_args_t));
- if(!arg_list)
- {
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
- "Memory allocation error in the svr thread loop");
- continue;
- }
- arg_list->env = (axutil_env_t *)env;
- arg_list->socket = socket;
- arg_list->worker = svr_thread->worker;
-#ifdef AXIS2_SVR_MULTI_THREADED
- worker_thread = axutil_thread_pool_get_thread(env->thread_pool,
- axis2_svr_thread_worker_func,
- (void *) arg_list);
- if (!worker_thread)
- {
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Thread creation failed"
- "server thread loop");
- continue;
- }
- axutil_thread_pool_thread_detach(env->thread_pool, worker_thread);
-#else
- axis2_svr_thread_worker_func(NULL, (void *)arg_list);
-#endif
- }
- return AXIS2_SUCCESS;
-}
-
-axis2_status_t AXIS2_CALL
-axis2_tcp_svr_thread_destroy(
- axis2_tcp_svr_thread_t * svr_thread,
- const axutil_env_t * env)
-{
- AXIS2_ENV_CHECK(env, AXIS2_CRITICAL_FAILURE);
-
- if(AXIS2_TRUE == svr_thread->stopped)
- {
- return AXIS2_SUCCESS;
- }
- svr_thread->stopped = AXIS2_TRUE;
- AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "Terminating TCP server "
- "thread.");
- if(svr_thread->listen_socket)
- {
- axutil_network_handler_close_socket(env, svr_thread->listen_socket);
- svr_thread->listen_socket = -1;
- }
- return AXIS2_SUCCESS;
-}
-
-int AXIS2_CALL
-axis2_tcp_svr_thread_get_local_port(
- const axis2_tcp_svr_thread_t * svr_thread,
- const axutil_env_t * env)
-{
- return svr_thread->port;
-}
-
-axis2_bool_t AXIS2_CALL
-axis2_tcp_svr_thread_is_running(
- axis2_tcp_svr_thread_t * svr_thread,
- const axutil_env_t * env)
-{
- return svr_thread->port;
-}
-
-axis2_status_t AXIS2_CALL
-axis2_tcp_svr_thread_set_worker(
- axis2_tcp_svr_thread_t * svr_thread,
- const axutil_env_t * env,
- axis2_tcp_worker_t * worker)
-{
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
- AXIS2_PARAM_CHECK(env->error, worker, AXIS2_FAILURE);
- svr_thread->worker = worker;
- return AXIS2_SUCCESS;
-}
-
-/**
- * Thread worker function.
- */
-void *AXIS2_THREAD_FUNC
-axis2_svr_thread_worker_func(
- axutil_thread_t * thd,
- void *data)
-{
- struct AXIS2_PLATFORM_TIMEB t1, t2;
- axis2_simple_tcp_svr_conn_t *svr_conn = NULL;
- axis2_char_t *request = NULL;
- int millisecs = 0;
- double secs = 0;
- axis2_tcp_worker_t *tmp = NULL;
- axis2_status_t status = AXIS2_FAILURE;
- axutil_env_t *env = NULL;
- axis2_socket_t socket;
- axutil_env_t *thread_env = NULL;
- axis2_tcp_svr_thd_args_t *arg_list = NULL;
-
-#ifndef WIN32
-#ifdef AXIS2_SVR_MULTI_THREADED
- signal(SIGPIPE, SIG_IGN);
-#endif
-#endif
-
- arg_list = (axis2_tcp_svr_thd_args_t *)data;
- if(!arg_list)
- {
- return NULL;
- }
- AXIS2_PLATFORM_GET_TIME_IN_MILLIS(&t1);
- env = arg_list->env;
- thread_env = axutil_init_thread_env(env);
- socket = arg_list->socket;
- svr_conn = axis2_simple_tcp_svr_conn_create(thread_env, (int)socket);
- axis2_simple_tcp_svr_conn_set_rcv_timeout(svr_conn, thread_env, axis2_tcp_socket_read_timeout);
- request = axis2_simple_tcp_svr_conn_read_request(svr_conn, thread_env);
- AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "tcp request %s", request);
- tmp = arg_list->worker;
- status = axis2_tcp_worker_process_request(tmp, thread_env, svr_conn, request);
- axis2_simple_tcp_svr_conn_free(svr_conn, thread_env);
-
- AXIS2_PLATFORM_GET_TIME_IN_MILLIS(&t2);
- millisecs = t2.millitm - t1.millitm;
- secs = difftime(t2.time, t1.time);
- if(millisecs < 0)
- {
- millisecs += 1000;
- secs--;
- }
- secs += millisecs / 1000.0;
-
- if(status == AXIS2_SUCCESS)
- {
-#if defined(WIN32)
- AXIS2_LOG_INFO(thread_env->log, "Request served successfully");
-#else
- AXIS2_LOG_INFO(thread_env->log, "Request served in %.3f seconds", secs);
-#endif
- }
- else
- {
-#if defined(WIN32)
- AXIS2_LOG_WARNING(thread_env->log, AXIS2_LOG_SI,
- "Error occured in processing request ");
-#else
- AXIS2_LOG_WARNING(thread_env->log, AXIS2_LOG_SI,
- "Error occured in processing request (%.3f seconds)", secs);
-#endif
- }
-
- AXIS2_FREE(thread_env->allocator, arg_list);
-
- if(thread_env)
- {
- /* There is a persistant problem: Uncomment this after fix
- * the issue */
- /* axutil_free_thread_env(thread_env); */
- thread_env = NULL;
- }
-#ifdef AXIS2_SVR_MULTI_THREADED
- axutil_thread_pool_exit_thread(env->thread_pool, thd);
-#endif
-
- return NULL;
-}
diff --git a/src/core/transport/tcp/receiver/tcp_worker.c b/src/core/transport/tcp/receiver/tcp_worker.c
deleted file mode 100644
index a188e7c30..000000000
--- a/src/core/transport/tcp/receiver/tcp_worker.c
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
-* Licensed to the Apache Software Foundation (ASF) under one or more
-* contributor license agreements. See the NOTICE file distributed with
-* this work for additional information regarding copyright ownership.
-* The ASF licenses this file to You under the Apache License, Version 2.0
-* (the "License"); you may not use this file except in compliance with
-* the License. You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * tcp://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <axis2_tcp_worker.h>
-#include <axutil_string.h>
-#include <axis2_tcp_transport.h>
-#include <axis2_conf.h>
-#include <axutil_string.h>
-#include <axutil_stream.h>
-#include <axis2_msg_ctx.h>
-#include <axis2_op_ctx.h>
-#include <axis2_engine.h>
-#include <axutil_uuid_gen.h>
-#include <axutil_url.h>
-#include <axutil_property.h>
-#include <string.h>
-#include <axiom_soap.h>
-#include <axiom.h>
-#include <axis2_simple_tcp_svr_conn.h>
-
-struct axis2_tcp_worker
-{
- axis2_conf_ctx_t *conf_ctx;
- int svr_port;
-};
-
-AXIS2_EXTERN axis2_tcp_worker_t *AXIS2_CALL
-axis2_tcp_worker_create(
- const axutil_env_t * env,
- axis2_conf_ctx_t * conf_ctx)
-{
- axis2_tcp_worker_t *tcp_worker = NULL;
- AXIS2_ENV_CHECK(env, NULL);
- tcp_worker = (axis2_tcp_worker_t *)AXIS2_MALLOC(env->allocator, sizeof(axis2_tcp_worker_t));
-
- if(!tcp_worker)
- {
- AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
- return NULL;
- }
- tcp_worker->conf_ctx = conf_ctx;
- tcp_worker->svr_port = 9090; /* default - must set later */
-
- return tcp_worker;
-}
-
-AXIS2_EXTERN void AXIS2_CALL
-axis2_tcp_worker_free(
- axis2_tcp_worker_t * tcp_worker,
- const axutil_env_t * env)
-{
- AXIS2_ENV_CHECK(env, void);
-
- tcp_worker->conf_ctx = NULL;
-
- AXIS2_FREE(env->allocator, tcp_worker);
-
- return;
-}
-
-AXIS2_EXTERN axis2_bool_t AXIS2_CALL
-axis2_tcp_worker_process_request(
- axis2_tcp_worker_t * tcp_worker,
- const axutil_env_t * env,
- axis2_simple_tcp_svr_conn_t * svr_conn,
- axis2_char_t * simple_request)
-{
- axis2_conf_ctx_t *conf_ctx = NULL;
- axis2_transport_out_desc_t *out_desc = NULL;
- axis2_transport_in_desc_t *in_desc = NULL;
- axis2_msg_ctx_t *msg_ctx = NULL;
- axiom_xml_reader_t *reader = NULL;
- axiom_stax_builder_t *builder = NULL;
- axiom_soap_builder_t *soap_builder = NULL;
- axiom_soap_envelope_t *soap_envelope = NULL;
- axis2_engine_t *engine = NULL;
- axis2_status_t status = AXIS2_FALSE;
- axutil_stream_t *svr_stream = NULL;
- axis2_char_t *buffer = NULL;
- int len = 0;
- int write = -1;
- axutil_stream_t *out_stream = NULL;
-
- AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "start:axis2_tcp_worker_process_request");
-
- out_stream = axutil_stream_create_basic(env);
- reader = axiom_xml_reader_create_for_memory(env, simple_request, axutil_strlen(simple_request),
- NULL, AXIS2_XML_PARSER_TYPE_BUFFER);
- if(!reader)
- {
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Failed to create XML reader");
- return AXIS2_FAILURE;
- }
-
- builder = axiom_stax_builder_create(env, reader);
- if(!builder)
- {
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Failed to create Stax builder");
- return AXIS2_FAILURE;
- }
-
- soap_builder= axiom_soap_builder_create(env, builder, NULL);
- if(!soap_builder)
- {
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Failed to create SOAP builder");
- return AXIS2_FAILURE;
- }
-
- conf_ctx = tcp_worker->conf_ctx;
-
- if(!conf_ctx)
- {
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "conf ctx not available");
- return AXIS2_FAILURE;
- }
-
- out_desc = axis2_conf_get_transport_out(axis2_conf_ctx_get_conf(conf_ctx, env), env,
- AXIS2_TRANSPORT_ENUM_TCP);
- if(!out_desc)
- {
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Transport out not set");
- return AXIS2_FAILURE;
- }
-
- in_desc = axis2_conf_get_transport_in(axis2_conf_ctx_get_conf(conf_ctx, env), env,
- AXIS2_TRANSPORT_ENUM_TCP);
-
- msg_ctx = axis2_msg_ctx_create(env, conf_ctx, in_desc, out_desc);
- axis2_msg_ctx_set_server_side(msg_ctx, env, AXIS2_TRUE);
- axis2_msg_ctx_set_transport_out_stream(msg_ctx, env, out_stream);
-
- soap_envelope = axiom_soap_builder_get_soap_envelope(soap_builder, env);
- axis2_msg_ctx_set_soap_envelope(msg_ctx, env, soap_envelope);
-
- engine = axis2_engine_create(env, conf_ctx);
- status = axis2_engine_receive(engine, env, msg_ctx);
-
- svr_stream = axis2_simple_tcp_svr_conn_get_stream(svr_conn, env);
- buffer = out_stream->buffer;
- len = out_stream->len;
- buffer[len] = 0;
- if(svr_stream && buffer)
- {
- write = axutil_stream_write(svr_stream, env, buffer, len + 1);
- if(write < 0)
- {
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "stream write failed");
- return AXIS2_FAILURE;
- }
- AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "stream wrote:%s", buffer);
- }
- AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "end:axis2_tcp_worker_process_request");
- return AXIS2_SUCCESS;
-}
-
-AXIS2_EXTERN axis2_status_t AXIS2_CALL
-axis2_tcp_worker_set_svr_port(
- axis2_tcp_worker_t * worker,
- const axutil_env_t * env,
- int port)
-{
- worker->svr_port = port;
- return AXIS2_SUCCESS;
-}
diff --git a/src/core/transport/tcp/sender/Makefile.am b/src/core/transport/tcp/sender/Makefile.am
deleted file mode 100644
index 41972b8d6..000000000
--- a/src/core/transport/tcp/sender/Makefile.am
+++ /dev/null
@@ -1,40 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-lib_LTLIBRARIES = libaxis2_tcp_sender.la
-
-libaxis2_tcp_sender_la_SOURCES = tcp_transport_sender.c
-
-libaxis2_tcp_sender_la_LIBADD = $(top_builddir)/src/core/transport/http/common/libaxis2_http_common.la\
- $(top_builddir)/src/core/transport/http/util/libaxis2_http_util.la\
- $(top_builddir)/axiom/src/om/libaxis2_axiom.la\
- $(top_builddir)/util/src/libaxutil.la\
- $(LIBCURL_LIBS)\
- $(SSL_LIBS)
-
-
-libaxis2_tcp_sender_la_LDFLAGS = -version-info $(VERSION_NO)
-
-libaxis2_tcp_sender_la_CPPFLAGS = -I$(top_srcdir)/include \
- -I$(top_srcdir)/src/core/transport\
- -I$(top_srcdir)/src/core/transport/tcp \
- -I$(top_srcdir)/src/core/transport/tcp/sender/libcurl \
- -I$(top_srcdir)/src/core/description \
- -I$(top_srcdir)/src/core/context \
- -I$(top_srcdir)/src/core/phaseresolver \
- -I$(top_srcdir)/src/core/engine \
- -I$(top_srcdir)/src/core/deployment \
- -I$(top_srcdir)/util/include \
- -I$(top_srcdir)/src/core/transport/tcp \
- -I$(top_srcdir)/axiom/include
diff --git a/src/core/transport/tcp/sender/tcp_transport_sender.c b/src/core/transport/tcp/sender/tcp_transport_sender.c
deleted file mode 100644
index 71b0760b5..000000000
--- a/src/core/transport/tcp/sender/tcp_transport_sender.c
+++ /dev/null
@@ -1,493 +0,0 @@
-/*
-* Licensed to the Apache Software Foundation (ASF) under one or more
-* contributor license agreements. See the NOTICE file distributed with
-* this work for additional information regarding copyright ownership.
-* The ASF licenses this file to You under the Apache License, Version 2.0
-* (the "License"); you may not use this file except in compliance with
-* the License. You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * tcp://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <axis2_tcp_transport_sender.h>
-#include <axutil_string.h>
-#include <axis2_endpoint_ref.h>
-#include <axis2_addr.h>
-#include <axiom_xml_writer.h>
-#include <axiom_output.h>
-#include <axis2_tcp_transport.h>
-#include <axiom_soap_body.h>
-#include <axiom_soap.h>
-#include <axutil_generic_obj.h>
-#include <axutil_types.h>
-#include <axutil_url.h>
-#include <axutil_network_handler.h>
-
-#define RES_BUFF 50
-
-/**
- * TCP Transport Sender struct impl
- * Axis2 TCP Transport Sender impl
- */
-
-typedef struct axis2_tcp_transport_sender_impl
-{
- axis2_transport_sender_t transport_sender;
- int connection_timeout;
- int so_timeout;
-} axis2_tcp_transport_sender_impl_t;
-
-#define AXIS2_INTF_TO_IMPL(transport_sender) \
- ((axis2_tcp_transport_sender_impl_t *) \
- (transport_sender))
-
-/***************************** Function headers *******************************/
-axis2_status_t AXIS2_CALL
-axis2_tcp_transport_sender_invoke(
- axis2_transport_sender_t * transport_sender,
- const axutil_env_t * env,
- axis2_msg_ctx_t * msg_ctx);
-
-axis2_status_t AXIS2_CALL
-axis2_tcp_transport_sender_clean_up(
- axis2_transport_sender_t * transport_sender,
- const axutil_env_t * env,
- axis2_msg_ctx_t * msg_ctx);
-
-axis2_status_t AXIS2_CALL
-axis2_tcp_transport_sender_init(
- axis2_transport_sender_t * transport_sender,
- const axutil_env_t * env,
- axis2_conf_ctx_t * conf_ctx,
- axis2_transport_out_desc_t * out_desc);
-
-axis2_status_t AXIS2_CALL
-axis2_tcp_transport_sender_write_message(
- axis2_transport_sender_t * transport_sender,
- const axutil_env_t * env,
- axis2_msg_ctx_t * msg_ctx,
- axis2_endpoint_ref_t * epr,
- axiom_soap_envelope_t * out,
- axiom_output_t * om_output);
-
-void AXIS2_CALL axis2_tcp_transport_sender_free(
- axis2_transport_sender_t * transport_sender,
- const axutil_env_t * env);
-
-static const axis2_transport_sender_ops_t tcp_transport_sender_ops_var = {
- axis2_tcp_transport_sender_init, axis2_tcp_transport_sender_invoke,
- axis2_tcp_transport_sender_clean_up, axis2_tcp_transport_sender_free };
-
-axis2_transport_sender_t *AXIS2_CALL
-axis2_tcp_transport_sender_create(
- const axutil_env_t * env)
-{
- axis2_tcp_transport_sender_impl_t *transport_sender_impl = NULL;
- AXIS2_ENV_CHECK(env, NULL);
-
- transport_sender_impl = (axis2_tcp_transport_sender_impl_t *)AXIS2_MALLOC(env->allocator,
- sizeof(axis2_tcp_transport_sender_impl_t));
-
- if(!transport_sender_impl)
- {
- AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
- return NULL;
- }
- transport_sender_impl->connection_timeout = AXIS2_TCP_DEFAULT_CONNECTION_TIMEOUT;
- transport_sender_impl->so_timeout = AXIS2_TCP_DEFAULT_SO_TIMEOUT;
- transport_sender_impl->transport_sender.ops = &tcp_transport_sender_ops_var;
- return &(transport_sender_impl->transport_sender);
-}
-
-void AXIS2_CALL
-axis2_tcp_transport_sender_free(
- axis2_transport_sender_t * transport_sender,
- const axutil_env_t * env)
-{
- axis2_tcp_transport_sender_impl_t *transport_sender_impl = NULL;
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
- transport_sender_impl = AXIS2_INTF_TO_IMPL(transport_sender);
- AXIS2_FREE(env->allocator, transport_sender_impl);
- return;
-}
-
-axis2_status_t AXIS2_CALL
-axis2_tcp_transport_sender_invoke(
- axis2_transport_sender_t * transport_sender,
- const axutil_env_t * env,
- axis2_msg_ctx_t * msg_ctx)
-{
- axis2_op_t *op = NULL;
- const axis2_char_t *mep_uri = NULL;
- axis2_bool_t is_server = AXIS2_TRUE;
- axiom_soap_envelope_t *soap_envelope = NULL;
- axiom_xml_writer_t *xml_writer = NULL;
- axiom_output_t *om_output = NULL;
- axis2_char_t *buffer = NULL;
- axutil_stream_t *out_stream = NULL;
- int buffer_size = 0;
- axis2_conf_ctx_t *conf_ctx = NULL;
- axis2_conf_t *conf = NULL;
- axis2_transport_out_desc_t *trans_desc = NULL;
- axutil_param_t *write_xml_declaration_param = NULL;
- axutil_hash_t *transport_attrs = NULL;
- axis2_bool_t write_xml_declaration = AXIS2_FALSE;
-
- AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "start:tcp transport sender invoke");
-
- op = axis2_msg_ctx_get_op(msg_ctx, env);
- mep_uri = axis2_op_get_msg_exchange_pattern(op, env);
-
- is_server = axis2_msg_ctx_get_server_side(msg_ctx, env);
-
- soap_envelope = axis2_msg_ctx_get_soap_envelope(msg_ctx, env);
-
- xml_writer = axiom_xml_writer_create_for_memory(env, NULL, AXIS2_TRUE, 0,
- AXIS2_XML_PARSER_TYPE_BUFFER);
- if(!xml_writer)
- {
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[tcp]Failed to create XML writer");
- return AXIS2_FAILURE;
- }
-
- om_output = axiom_output_create(env, xml_writer);
- if(!om_output)
- {
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[tcp]Failed to create OM output");
- axiom_xml_writer_free(xml_writer, env);
- xml_writer = NULL;
- return AXIS2_FAILURE;
- }
-
- conf_ctx = axis2_msg_ctx_get_conf_ctx(msg_ctx, env);
- if(conf_ctx)
- {
- conf = axis2_conf_ctx_get_conf(conf_ctx, env);
- }
- if(conf)
- {
- trans_desc = axis2_conf_get_transport_out(conf, env, AXIS2_TRANSPORT_ENUM_TCP);
- }
- if(trans_desc)
- {
- write_xml_declaration_param = axutil_param_container_get_param(
- axis2_transport_out_desc_param_container(trans_desc, env), env, AXIS2_XML_DECLARATION);
- }
- if(write_xml_declaration_param)
- {
- transport_attrs = axutil_param_get_attributes(write_xml_declaration_param, env);
- if(transport_attrs)
- {
- axutil_generic_obj_t *obj = NULL;
- axiom_attribute_t *write_xml_declaration_attr = NULL;
- axis2_char_t *write_xml_declaration_attr_value = NULL;
-
- obj
- = axutil_hash_get(transport_attrs, AXIS2_ADD_XML_DECLARATION, AXIS2_HASH_KEY_STRING);
- if(obj)
- {
- write_xml_declaration_attr = (axiom_attribute_t *)axutil_generic_obj_get_value(obj,
- env);
- }
- if(write_xml_declaration_attr)
- {
- write_xml_declaration_attr_value = axiom_attribute_get_value(
- write_xml_declaration_attr, env);
- }
- if(write_xml_declaration_attr_value && 0 == axutil_strcasecmp(
- write_xml_declaration_attr_value, AXIS2_VALUE_TRUE))
- {
- write_xml_declaration = AXIS2_TRUE;
- }
- }
- }
-
- if(write_xml_declaration)
- {
- axiom_output_write_xml_version_encoding(om_output, env);
- }
-
- axiom_soap_envelope_serialize(soap_envelope, env, om_output, AXIS2_FALSE);
-
- buffer = (axis2_char_t *)axiom_xml_writer_get_xml(xml_writer, env);
- if(!buffer)
- {
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[tcp]Failed to serialize the SOAP envelope");
- return AXIS2_FAILURE;
- }
- buffer_size = axiom_xml_writer_get_xml_size(xml_writer, env);
- buffer[buffer_size] = 0;
- if(is_server)
- {
- out_stream = axis2_msg_ctx_get_transport_out_stream(msg_ctx, env);
- axutil_stream_write(out_stream, env, buffer, buffer_size);
- }
- else
- {
- axis2_endpoint_ref_t *to = NULL;
- axutil_url_t *to_url = NULL;
- const axis2_char_t *to_str = NULL;
- const axis2_char_t *host = NULL;
- int port = 0;
- int socket = -1;
- axutil_stream_t *stream;
- int write = -1;
- int read = -1;
- axis2_char_t buff[1];
- axis2_char_t *res_buffer = (axis2_char_t *)AXIS2_MALLOC(env->allocator, RES_BUFF);
- int res_size = 0;
- int size = 0;
- axiom_xml_reader_t *reader = NULL;
- axiom_stax_builder_t *builder = NULL;
- axiom_soap_builder_t *soap_builder = NULL;
- axiom_soap_envelope_t *soap_envelope = NULL;
-
- to = axis2_msg_ctx_get_to(msg_ctx, env);
-
- if(!to)
- {
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "To epr not presant");
- return AXIS2_FAILURE;
- }
-
- to_str = axis2_endpoint_ref_get_address(to, env);
- if(!to_str)
- {
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "unable to convert epr to string");
- return AXIS2_FAILURE;
- }
-
- to_url = axutil_url_parse_string(env, to_str);
-
- if(!to_url)
- {
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "unable to parser string to url");
- return AXIS2_FAILURE;
- }
-
- host = axutil_url_get_host(to_url, env);
- if(!host)
- {
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "retrieving host failed");
- return AXIS2_FAILURE;
- }
-
- port = axutil_url_get_port(to_url, env);
- if(!port)
- {
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "retrieving port failed");
- return AXIS2_FAILURE;
- }
- socket = (int)axutil_network_handler_open_socket(env, (char *)host, port);
- if(!socket)
- {
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "socket creation failed");
- return AXIS2_FAILURE;
- }
-
- AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "open socket for host:%s port:%d", host, port);
-
- stream = axutil_stream_create_socket(env, socket);
- if(!stream)
- {
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "stream creation failed");
- return AXIS2_FAILURE;
- }
-
- write = axutil_stream_write(stream, env, buffer, buffer_size);
- if(write < 0)
- {
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "stream write error");
- return AXIS2_FAILURE;
- }
- AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "stream wrote soap msg: %s", buffer);
- write = axutil_stream_write(stream, env, "\r\n\r\n", 4);
- size = RES_BUFF;
- while((read = axutil_stream_read(stream, env, &buff, 1)) > 0)
- {
- if(res_size >= size)
- {
- axis2_char_t *tmp_buff = NULL;
- size <<= 2;
- tmp_buff = AXIS2_MALLOC(env->allocator, size);
- memcpy(tmp_buff, res_buffer, res_size);
- AXIS2_FREE(env->allocator, res_buffer);
- res_buffer = tmp_buff;
- }
- memcpy(res_buffer + res_size, buff, 1);
- res_size++;
- }
-
- axutil_network_handler_close_socket(env, stream->socket);
- axutil_stream_close(stream, env);
- axutil_stream_free(stream, env);
-
- AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "%s", res_buffer);
-
- reader = axiom_xml_reader_create_for_memory(env, res_buffer, (res_size - 1), NULL,
- AXIS2_XML_PARSER_TYPE_BUFFER);
-
- if(!reader)
- {
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Failed to create XML reader");
- return AXIS2_FAILURE;
- }
-
- builder = axiom_stax_builder_create(env, reader);
- if(!builder)
- {
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Failed to create Stax builder");
- return AXIS2_FAILURE;
- }
-
- soap_builder = axiom_soap_builder_create(env, builder, NULL);
- if(!soap_builder)
- {
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Failed to create SOAP builder");
- return AXIS2_FAILURE;
- }
- soap_envelope = axiom_soap_builder_get_soap_envelope(soap_builder, env);
-
- if(!soap_envelope)
- {
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Failed to create SOAP envelope");
- return AXIS2_FAILURE;
- }
-
- axis2_msg_ctx_set_response_soap_envelope(msg_ctx, env, soap_envelope);
-
- }
- AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "end:tcp transport sender invoke");
- return AXIS2_SUCCESS;
-}
-
-axis2_status_t AXIS2_CALL
-axis2_tcp_transport_sender_clean_up(
- axis2_transport_sender_t * transport_sender,
- const axutil_env_t * env,
- axis2_msg_ctx_t * msg_ctx)
-{
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
- AXIS2_PARAM_CHECK(env->error, msg_ctx, AXIS2_FAILURE);
- /*
- * Clean up is not used. If the tcp sender needs
- * to be cleaned up it should be done here.
- */
- return AXIS2_SUCCESS;
-}
-
-axis2_status_t AXIS2_CALL
-axis2_tcp_transport_sender_init(
- axis2_transport_sender_t * transport_sender,
- const axutil_env_t * env,
- axis2_conf_ctx_t * conf_ctx,
- axis2_transport_out_desc_t * out_desc)
-{
- axis2_char_t *temp = NULL;
- axutil_param_t *temp_param = NULL;
- AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
- AXIS2_PARAM_CHECK(env->error, conf_ctx, AXIS2_FAILURE);
- AXIS2_PARAM_CHECK(env->error, out_desc, AXIS2_FAILURE);
-
- temp_param = axutil_param_container_get_param(axis2_transport_out_desc_param_container(
- out_desc, env), env, AXIS2_TCP_SO_TIMEOUT);
- if(temp_param)
- {
- temp = axutil_param_get_value(temp_param, env);
- }
- if(temp)
- {
- AXIS2_INTF_TO_IMPL(transport_sender)->so_timeout = AXIS2_ATOI(temp);
- }
- temp = (axis2_char_t *)axutil_param_container_get_param(
- axis2_transport_out_desc_param_container(out_desc, env), env, AXIS2_TCP_CONNECTION_TIMEOUT);
- if(temp_param)
- {
- temp = axutil_param_get_value(temp_param, env);
- }
- if(temp)
- {
- AXIS2_INTF_TO_IMPL(transport_sender)->connection_timeout = AXIS2_ATOI(temp);
- }
-
- return AXIS2_SUCCESS;
-}
-
-axis2_status_t AXIS2_CALL
-axis2_tcp_transport_sender_write_message(
- axis2_transport_sender_t * transport_sender,
- const axutil_env_t * env,
- axis2_msg_ctx_t * msg_ctx,
- axis2_endpoint_ref_t * epr,
- axiom_soap_envelope_t * out,
- axiom_output_t * om_output)
-{
-
- return AXIS2_TRUE;
-}
-
-/**
- * Following block distinguish the exposed part of the dll.
- */
-
-/* When building for static deployment, give the get and remove methods
- * unique names. This avoids having the linker fail with duplicate symbol
- * errors.
- */
-
-AXIS2_EXPORT int
-#ifndef AXIS2_STATIC_DEPLOY
-axis2_get_instance(
-#else
- axis2_tcp_transport_sender_get_instance(
-#endif
- struct axis2_transport_sender **inst,
- const axutil_env_t * env)
-{
- *inst = axis2_tcp_transport_sender_create(env);
- if(!(*inst))
- {
- return AXIS2_FAILURE;
- }
-
- return AXIS2_SUCCESS;
-}
-
-AXIS2_EXPORT int
-#ifndef AXIS2_STATIC_DEPLOY
-axis2_remove_instance(
-#else
- axis2_tcp_transport_sender_remove_instance(
-#endif
- axis2_transport_sender_t * inst,
- const axutil_env_t * env)
-{
- if(inst)
- {
- AXIS2_TRANSPORT_SENDER_FREE(inst, env);
- }
- return AXIS2_SUCCESS;
-}
diff --git a/src/core/transport/tcp/server/Makefile.am b/src/core/transport/tcp/server/Makefile.am
deleted file mode 100644
index 8a1950d79..000000000
--- a/src/core/transport/tcp/server/Makefile.am
+++ /dev/null
@@ -1,15 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-SUBDIRS=simple_tcp_server
diff --git a/src/core/transport/tcp/server/simple_tcp_server/Makefile.am b/src/core/transport/tcp/server/simple_tcp_server/Makefile.am
deleted file mode 100644
index 4dba4023b..000000000
--- a/src/core/transport/tcp/server/simple_tcp_server/Makefile.am
+++ /dev/null
@@ -1,42 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-prgbindir=$(bindir)
-prgbin_PROGRAMS = axis2_tcp_server
-SUBDIRS =
-axis2_tcp_server_SOURCES = tcp_server_main.c
-
-axis2_tcp_server_LDADD = $(LDFLAGS) \
- $(top_builddir)/src/core/transport/http/common/libaxis2_http_common.la \
- $(top_builddir)/axiom/src/om/libaxis2_axiom.la \
- $(top_builddir)/util/src/libaxutil.la \
- $(top_builddir)/axiom/src/parser/$(WRAPPER_DIR)/libaxis2_parser.la \
- $(top_builddir)/src/core/description/libaxis2_description.la \
- $(top_builddir)/src/core/deployment/libaxis2_deployment.la \
- $(top_builddir)/src/core/context/libaxis2_context.la \
- $(top_builddir)/src/core/clientapi/libaxis2_clientapi.la \
- $(top_builddir)/src/core/engine/libaxis2_engine.la \
- $(top_builddir)/src/core/transport/tcp/sender/libaxis2_tcp_sender.la \
- $(top_builddir)/src/core/transport/tcp/receiver/libaxis2_tcp_receiver.la \
- $(top_builddir)/neethi/src/libneethi.la
-
-axis2_tcp_server_CPPFLAGS = -I$(top_srcdir)/include \
- -I$(top_srcdir)/src/core/description\
- -I$(top_srcdir)/src/core/context \
- -I$(top_srcdir)/src/core/deployment\
- -I$(top_srcdir)/src/core/phaseresolver \
- -I$(top_srcdir)/src/core/engine \
- -I$(top_srcdir)/util/include \
- -I$(top_srcdir)/src/core/transport/tcp/ \
- -I$(top_srcdir)/axiom/include
diff --git a/src/core/transport/tcp/server/simple_tcp_server/tcp_server_main.c b/src/core/transport/tcp/server/simple_tcp_server/tcp_server_main.c
deleted file mode 100644
index f9f0a517d..000000000
--- a/src/core/transport/tcp/server/simple_tcp_server/tcp_server_main.c
+++ /dev/null
@@ -1,283 +0,0 @@
-/*
-* Licensed to the Apache Software Foundation (ASF) under one or more
-* contributor license agreements. See the NOTICE file distributed with
-* this work for additional information regarding copyright ownership.
-* The ASF licenses this file to You under the Apache License, Version 2.0
-* (the "License"); you may not use this file except in compliance with
-* the License. You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * tcp://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <axis2_tcp_server.h>
-#include <axis2_tcp_transport.h>
-#include <platforms/axutil_platform_auto_sense.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <axutil_error_default.h>
-#include <axutil_log_default.h>
-#include <axutil_thread_pool.h>
-#include <signal.h>
-#include <axutil_types.h>
-#include <ctype.h>
-#include <axiom_xml_reader.h>
-
-#ifndef AXIS2_TCP_SERVER_LOG_FILE_NAME
-#define AXIS2_TCP_SERVER_LOG_FILE_NAME "axis2_tcp_server.log"
-#endif
-
-#ifndef AXIS2_TCP_SERVER_PORT
-#define AXIS2_TCP_SERVER_PORT 9091
-#endif
-
-#ifndef AXIS2_TCP_SERVER_REPO_PATH
-#define AXIS2_TCP_SERVER_REPO_PATH "../"
-#endif
-
-axutil_env_t *system_env = NULL;
-axis2_transport_receiver_t *server = NULL;
-int axis2_tcp_socket_read_timeout = 60000;
-
-/***************************** Function headers *******************************/
-axutil_env_t *
-init_syetem_env(
- axutil_allocator_t * allocator,
- const axis2_char_t * log_file);
-
-void
-system_exit(
- axutil_env_t * env,
- int status);
-
-void
-usage(
- axis2_char_t * prog_name);
-
-void
-sig_handler(
- int signal);
-
-/***************************** End of function headers ************************/
-axutil_env_t *
-init_syetem_env(
- axutil_allocator_t * allocator,
- const axis2_char_t * log_file)
-{
- axutil_error_t *error = axutil_error_create(allocator);
- axutil_log_t *log = axutil_log_create(allocator, NULL, log_file);
- axutil_thread_pool_t *thread_pool = axutil_thread_pool_init(allocator);
- /* We need to init the parser in main thread before spawning child
- * threads
- */
- axiom_xml_reader_init();
- return axutil_env_create_with_error_log_thread_pool(allocator, error, log, thread_pool);
-}
-
-void
-system_exit(
- axutil_env_t * env,
- int status)
-{
- axutil_allocator_t *allocator = NULL;
- if(server)
- {
- axis2_transport_receiver_free(server, system_env);
- }
- if(env)
- {
- allocator = env->allocator;
- axutil_env_free(env);
- }
- axiom_xml_reader_cleanup();
- exit(status);
-}
-
-int
-main(
- int argc,
- char *argv[])
-{
- axutil_allocator_t *allocator = NULL;
- axutil_env_t *env = NULL;
- extern char *optarg;
- extern int optopt;
- int c;
- int log_file_size = AXUTIL_LOG_FILE_SIZE;
- axutil_log_levels_t log_level = AXIS2_LOG_LEVEL_DEBUG;
- const axis2_char_t *log_file = AXIS2_TCP_SERVER_LOG_FILE_NAME;
- int port = AXIS2_TCP_SERVER_PORT;
- axis2_char_t *repo_path = AXIS2_GETENV("AXIS2C_HOME");
- if(!repo_path)
- {
- repo_path = AXIS2_TCP_SERVER_REPO_PATH;
- }
-
- while((c = AXIS2_GETOPT(argc, argv, ":p:r:ht:l:s:f:")) != -1)
- {
-
- switch(c)
- {
- case 'p':
- port = AXIS2_ATOI(optarg);
- break;
- case 'r':
- repo_path = optarg;
- break;
- case 't':
- axis2_tcp_socket_read_timeout = AXIS2_ATOI(optarg) * 1000;
- break;
- case 'l':
- log_level = AXIS2_ATOI(optarg);
- if(log_level < AXIS2_LOG_LEVEL_CRITICAL)
- log_level = AXIS2_LOG_LEVEL_CRITICAL;
- if(log_level > AXIS2_LOG_LEVEL_TRACE)
- log_level = AXIS2_LOG_LEVEL_TRACE;
- break;
- case 's':
- log_file_size = 1024 * 1024 * AXIS2_ATOI(optarg);
- break;
- case 'f':
- log_file = optarg;
- break;
- case 'h':
- usage(argv[0]);
- return 0;
- case ':':
- fprintf(stderr, "\nOption -%c requires an operand\n", optopt);
- usage(argv[0]);
- return -1;
- case '?':
- if(isprint(optopt))
- fprintf(stderr, "\nUnknown option `-%c'.\n", optopt);
- usage(argv[0]);
- return -1;
- }
- }
-
- allocator = axutil_allocator_init(NULL);
- if(!allocator)
- {
- system_exit(NULL, -1);
- }
- env = init_syetem_env(allocator, log_file);
- env->log->level = log_level;
- env->log->size = log_file_size;
- axutil_error_init();
- system_env = env;
-
-#ifndef WIN32
- signal(SIGINT, sig_handler);
- signal(SIGPIPE, sig_handler);
-#endif
-
- AXIS2_LOG_INFO(env->log, "Starting Axis2 TCP server....");
- AXIS2_LOG_INFO(env->log, "Server port : %d", port);
- AXIS2_LOG_INFO(env->log, "Repo location : %s", repo_path);
- AXIS2_LOG_INFO(env->log, "Read Timeout : %d ms", axis2_tcp_socket_read_timeout);
-
- server = axis2_tcp_server_create(env, repo_path, port);
- if(!server)
- {
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Server creation failed: Error code:" " %d :: %s",
- env->error->error_number, AXIS2_ERROR_GET_MESSAGE(env->error));
- system_exit(env, -1);
-
- }
- printf("Started Simple Axis2 TCP Server ...\n");
- if(axis2_transport_receiver_start(server, env) == AXIS2_FAILURE)
- {
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Server start failed: Error code:" " %d :: %s",
- env->error->error_number, AXIS2_ERROR_GET_MESSAGE(env->error));
- system_exit(env, -1);
- }
- return 0;
-}
-
-void
-usage(
- axis2_char_t * prog_name)
-{
- fprintf(stdout, "\n Usage : %s", prog_name);
- fprintf(stdout, " [-p PORT]");
- fprintf(stdout, " [-t TIMEOUT]");
- fprintf(stdout, " [-r REPO_PATH]");
- fprintf(stdout, " [-l LOG_LEVEL]");
- fprintf(stdout, " [-f LOG_FILE]\n");
- fprintf(stdout, " [-s LOG_FILE_SIZE]\n");
- fprintf(stdout, " Options :\n");
- fprintf(stdout, "\t-p PORT \t port number to use, default port is %d\n", AXIS2_TCP_SERVER_PORT);
- fprintf(stdout, "\t-r REPO_PATH \t repository path, default is ../\n");
- fprintf(stdout, "\t-t TIMEOUT\t socket read timeout, default is 30 seconds\n");
- fprintf(stdout, "\t-l LOG_LEVEL\t log level, available log levels:"
- "\n\t\t\t 0 - critical 1 - errors 2 - warnings"
- "\n\t\t\t 3 - information 4 - debug 5- user 6 - trace"
- "\n\t\t\t Default log level is 4(debug).\n");
-#ifndef WIN32
- fprintf(stdout, "\t-f LOG_FILE\t log file, default is $AXIS2C_HOME/logs/axis2.log"
- "\n\t\t\t or axis2.log in current folder if AXIS2C_HOME not set\n");
-#else
- fprintf(stdout,
- "\t-f LOG_FILE\t log file, default is %%AXIS2C_HOME%%\\logs\\axis2.log"
- "\n\t\t\t or axis2.log in current folder if AXIS2C_HOME not set\n");
-#endif
- fprintf(stdout,
- "\t-s LOG_FILE_SIZE\t Maximum log file size in mega bytes, default maximum size is 1MB.\n");
- fprintf(stdout, " Help :\n\t-h \t display this help screen.\n\n");
-}
-
-/**
- * Signal handler
- */
-#ifndef WIN32
-
-void
-sig_handler(
- int signal)
-{
- switch(signal)
- {
- case SIGINT:
- {
- AXIS2_LOG_INFO(system_env->log, "Received signal SIGINT. Server "
- "shutting down");
- axis2_tcp_server_stop(server, system_env);
- AXIS2_LOG_INFO(system_env->log, "Shutdown complete ...");
- system_exit(system_env, 0);
- }
- case SIGPIPE:
- {
- AXIS2_LOG_INFO(system_env->log, "Received signal SIGPIPE. Client "
- "request serve aborted");
- return;
- }
- case SIGSEGV:
- {
- fprintf(stderr, "Received deadly signal SIGSEGV. Terminating\n");
- _exit(-1);
- }
- }
-}
-#endif
diff --git a/test/core/transport/http/Makefile.am b/test/core/transport/http/Makefile.am
index 62fb2effb..259302989 100644
--- a/test/core/transport/http/Makefile.am
+++ b/test/core/transport/http/Makefile.am
@@ -151,28 +151,4 @@ endif
endif
endif
-# AXIS2C-1371: libcurl debug logging tests
-# These tests verify that libcurl verbose logging is properly integrated
-if GTEST_AVAILABLE
-if AXIS2_LIBCURL_ENABLED
-check_PROGRAMS += test_libcurl_debug
-noinst_PROGRAMS += test_libcurl_debug
-TESTS += test_libcurl_debug
-
-test_libcurl_debug_SOURCES = test_libcurl_debug.cc
-
-test_libcurl_debug_LDADD = \
- $(LDFLAGS) \
- ../../../../util/src/libaxutil.la \
- $(top_builddir)/$(GTEST)/libgtest.a \
- $(top_builddir)/$(GTEST)/libgtest_main.a \
- -lcurl \
- -lpthread
-
-test_libcurl_debug_CPPFLAGS = \
- -I$(top_builddir)/include \
- -I ../../../../util/include \
- -I $(GTEST_DIR)/include \
- -DAXIS2_LIBCURL_ENABLED
-endif
-endif
+# libcurl debug logging tests removed (January 2026) - libcurl backend removed
diff --git a/test/core/transport/http/test_libcurl_debug.cc b/test/core/transport/http/test_libcurl_debug.cc
deleted file mode 100644
index c8c5e1f26..000000000
--- a/test/core/transport/http/test_libcurl_debug.cc
+++ /dev/null
@@ -1,228 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * Test for AXIS2C-1371: Axis should log libcurl debug information
- *
- * This test verifies that libcurl debug logging is properly enabled when
- * the Axis2/C log level is set to DEBUG.
- */
-
-#include <gtest/gtest.h>
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-
-#ifdef AXIS2_LIBCURL_ENABLED
-#include <curl/curl.h>
-#endif
-
-#include <axutil_env.h>
-#include <axutil_allocator.h>
-#include <axutil_error_default.h>
-#include <axutil_log_default.h>
-
-#define TEST_LOG_FILE "/tmp/test_libcurl_debug.log"
-
-class TestLibcurlDebug : public ::testing::Test
-{
-protected:
- void SetUp() override
- {
- /* Remove old log file if exists */
- unlink(TEST_LOG_FILE);
-
- m_allocator = axutil_allocator_init(NULL);
- ASSERT_NE(m_allocator, nullptr);
-
- m_error = axutil_error_create(m_allocator);
- ASSERT_NE(m_error, nullptr);
-
- m_log = axutil_log_create(m_allocator, NULL, TEST_LOG_FILE);
- ASSERT_NE(m_log, nullptr);
-
- m_env = axutil_env_create_with_error_log(m_allocator, m_error, m_log);
- ASSERT_NE(m_env, nullptr);
- }
-
- void TearDown() override
- {
- if (m_env)
- {
- axutil_env_free(m_env);
- m_env = NULL;
- }
- /* Clean up log file */
- unlink(TEST_LOG_FILE);
- }
-
- /**
- * Helper to read the log file contents
- */
- std::string ReadLogFile()
- {
- std::string content;
- FILE *fp = fopen(TEST_LOG_FILE, "r");
- if (fp)
- {
- char buffer[4096];
- while (fgets(buffer, sizeof(buffer), fp))
- {
- content += buffer;
- }
- fclose(fp);
- }
- return content;
- }
-
- axutil_allocator_t *m_allocator = NULL;
- axutil_env_t *m_env = NULL;
- axutil_error_t *m_error = NULL;
- axutil_log_t *m_log = NULL;
-};
-
-#ifdef AXIS2_LIBCURL_ENABLED
-
-/**
- * Test that CURLOPT_VERBOSE can be set on a curl handle.
- * This is a basic sanity check that libcurl is properly linked.
- */
-TEST_F(TestLibcurlDebug, test_curl_verbose_option_can_be_set)
-{
- CURL *curl = curl_easy_init();
- ASSERT_NE(curl, nullptr);
-
- /* Should be able to set verbose mode */
- CURLcode res = curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
- EXPECT_EQ(res, CURLE_OK);
-
- curl_easy_cleanup(curl);
-}
-
-/**
- * Test that CURLOPT_DEBUGFUNCTION can be set on a curl handle.
- */
-TEST_F(TestLibcurlDebug, test_curl_debug_function_can_be_set)
-{
- CURL *curl = curl_easy_init();
- ASSERT_NE(curl, nullptr);
-
- /* Define a simple debug callback */
- auto debug_callback = [](CURL *handle, curl_infotype type,
- char *data, size_t size, void *userptr) -> int {
- (void)handle;
- (void)type;
- (void)data;
- (void)size;
- (void)userptr;
- return 0;
- };
-
- CURLcode res = curl_easy_setopt(curl, CURLOPT_DEBUGFUNCTION, +debug_callback);
- EXPECT_EQ(res, CURLE_OK);
-
- curl_easy_cleanup(curl);
-}
-
-/**
- * Test that debug logging is enabled when log level is DEBUG.
- * This tests the integration by making a simple request and checking
- * that curl debug output appears in the log.
- */
-TEST_F(TestLibcurlDebug, test_debug_logging_enabled_at_debug_level)
-{
- /* Set log level to DEBUG */
- m_env->log->level = AXIS2_LOG_LEVEL_DEBUG;
- m_env->log->enabled = AXIS2_TRUE;
-
- /* Log a test message to verify logging works */
- AXIS2_LOG_DEBUG(m_env->log, AXIS2_LOG_SI, "Test debug message for libcurl logging");
-
- /* Read log file and verify message was written */
- std::string log_content = ReadLogFile();
- EXPECT_TRUE(log_content.find("Test debug message") != std::string::npos)
- << "Log file should contain our test message. Content: " << log_content;
-}
-
-/**
- * Test that log level check works correctly.
- * Verifies that AXIS2_LOG_LEVEL_DEBUG >= AXIS2_LOG_LEVEL_DEBUG is true
- * and AXIS2_LOG_LEVEL_DEBUG != AXIS2_LOG_LEVEL_USER.
- */
-TEST_F(TestLibcurlDebug, test_log_level_check_for_debug_enabling)
-{
- /* The condition in axis2_libcurl_set_debug_options:
- * if (env->log->level >= AXIS2_LOG_LEVEL_DEBUG && env->log->level != AXIS2_LOG_LEVEL_USER)
- */
-
- /* Debug level should enable verbose logging */
- m_env->log->level = AXIS2_LOG_LEVEL_DEBUG;
- EXPECT_TRUE(m_env->log->level >= AXIS2_LOG_LEVEL_DEBUG);
- EXPECT_TRUE(m_env->log->level != AXIS2_LOG_LEVEL_USER);
-
- /* User level should NOT enable verbose logging */
- m_env->log->level = AXIS2_LOG_LEVEL_USER;
- EXPECT_TRUE(m_env->log->level >= AXIS2_LOG_LEVEL_DEBUG); /* USER > DEBUG in enum */
- EXPECT_FALSE(m_env->log->level != AXIS2_LOG_LEVEL_USER);
-
- /* Info level should NOT enable verbose logging */
- m_env->log->level = AXIS2_LOG_LEVEL_INFO;
- EXPECT_FALSE(m_env->log->level >= AXIS2_LOG_LEVEL_DEBUG);
-
- /* Warning level should NOT enable verbose logging */
- m_env->log->level = AXIS2_LOG_LEVEL_WARNING;
- EXPECT_FALSE(m_env->log->level >= AXIS2_LOG_LEVEL_DEBUG);
-
- /* Error level should NOT enable verbose logging */
- m_env->log->level = AXIS2_LOG_LEVEL_ERROR;
- EXPECT_FALSE(m_env->log->level >= AXIS2_LOG_LEVEL_DEBUG);
-
- /* Critical level should NOT enable verbose logging */
- m_env->log->level = AXIS2_LOG_LEVEL_CRITICAL;
- EXPECT_FALSE(m_env->log->level >= AXIS2_LOG_LEVEL_DEBUG);
-
- /* Trace level should enable verbose logging */
- m_env->log->level = AXIS2_LOG_LEVEL_TRACE;
- EXPECT_TRUE(m_env->log->level >= AXIS2_LOG_LEVEL_DEBUG);
- EXPECT_TRUE(m_env->log->level != AXIS2_LOG_LEVEL_USER);
-}
-
-/**
- * Test curl_infotype enum values for the debug callback switch statement.
- * This ensures all expected info types are handled.
- */
-TEST_F(TestLibcurlDebug, test_curl_infotype_enum_values)
-{
- /* Verify expected curl_infotype values exist */
- EXPECT_EQ(CURLINFO_TEXT, 0);
- EXPECT_EQ(CURLINFO_HEADER_IN, 1);
- EXPECT_EQ(CURLINFO_HEADER_OUT, 2);
- EXPECT_EQ(CURLINFO_DATA_IN, 3);
- EXPECT_EQ(CURLINFO_DATA_OUT, 4);
- EXPECT_EQ(CURLINFO_SSL_DATA_IN, 5);
- EXPECT_EQ(CURLINFO_SSL_DATA_OUT, 6);
-}
-
-#else /* !AXIS2_LIBCURL_ENABLED */
-
-TEST_F(TestLibcurlDebug, test_libcurl_not_enabled)
-{
- /* If libcurl is not enabled, just pass */
- SUCCEED() << "libcurl is not enabled in this build";
-}
-
-#endif /* AXIS2_LIBCURL_ENABLED */
diff --git a/util/gtest/gtest-all.cc b/util/gtest/gtest-all.cc
deleted file mode 100644
index 2a70ed88c..000000000
--- a/util/gtest/gtest-all.cc
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-//
-// Google C++ Testing and Mocking Framework (Google Test)
-//
-// Sometimes it's desirable to build Google Test by compiling a single file.
-// This file serves this purpose.
-
-// This line ensures that gtest.h can be compiled on its own, even
-// when it's fused.
-#include "gtest/gtest.h"
-
-// The following lines pull in the real gtest *.cc files.
-#include "src/gtest-assertion-result.cc"
-#include "src/gtest-death-test.cc"
-#include "src/gtest-filepath.cc"
-#include "src/gtest-matchers.cc"
-#include "src/gtest-port.cc"
-#include "src/gtest-printers.cc"
-#include "src/gtest-test-part.cc"
-#include "src/gtest-typed-test.cc"
-#include "src/gtest.cc"
diff --git a/util/gtest/gtest_main.cc b/util/gtest/gtest_main.cc
deleted file mode 100644
index 8141caf4c..000000000
--- a/util/gtest/gtest_main.cc
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright 2006, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#include <cstdio>
-
-#include "gtest/gtest.h"
-
-#if defined(GTEST_OS_ESP8266) || defined(GTEST_OS_ESP32) || \
- (defined(GTEST_OS_NRF52) && defined(ARDUINO))
-// Arduino-like platforms: program entry points are setup/loop instead of main.
-
-#ifdef GTEST_OS_ESP8266
-extern "C" {
-#endif
-
-void setup() { testing::InitGoogleTest(); }
-
-void loop() { RUN_ALL_TESTS(); }
-
-#ifdef GTEST_OS_ESP8266
-}
-#endif
-
-#elif defined(GTEST_OS_QURT)
-// QuRT: program entry point is main, but argc/argv are unusable.
-
-GTEST_API_ int main() {
- printf("Running main() from %s\n", __FILE__);
- testing::InitGoogleTest();
- return RUN_ALL_TESTS();
-}
-#else
-// Normal platforms: program entry point is main, argc/argv are initialized.
-
-GTEST_API_ int main(int argc, char **argv) {
- printf("Running main() from %s\n", __FILE__);
- testing::InitGoogleTest(&argc, argv);
- return RUN_ALL_TESTS();
-}
-#endif