# Release Notes - Axis2/C Version 2.0.0

Version 2.0.0 is a major release that includes 17 years of accumulated fixes and improvements since version 1.6.0 (2009). This release resolves over 115 issues from the Apache Jira issue tracker.

## Bug Fixes

| Issue | Summary |
|-------|---------|
| [AXIS2C-787](https://issues.apache.org/jira/browse/AXIS2C-787) | axutil_qname_to_string serialize with the prefix |
| [AXIS2C-936](https://issues.apache.org/jira/browse/AXIS2C-936) | On incomplete response message, the client receives response data for the elements up to the error, but no indication of the error |
| [AXIS2C-1001](https://issues.apache.org/jira/browse/AXIS2C-1001) | Axis2/C Stress tests fail |
| [AXIS2C-1005](https://issues.apache.org/jira/browse/AXIS2C-1005) | dual clients report an error in log |
| [AXIS2C-1153](https://issues.apache.org/jira/browse/AXIS2C-1153) | memory leak in code generated by WSDL2C, op not freed in axis2_stub_populate_services_for_myService |
| [AXIS2C-1182](https://issues.apache.org/jira/browse/AXIS2C-1182) | adb_XXXX_add_nodes(_XXXX, env, _Y) FAILURES |
| [AXIS2C-1192](https://issues.apache.org/jira/browse/AXIS2C-1192) | axis2c dual sample clients give a memory corruption in consecutive execution |
| [AXIS2C-1197](https://issues.apache.org/jira/browse/AXIS2C-1197) | CodeGenerationException thrown without info about input files problem |
| [AXIS2C-1204](https://issues.apache.org/jira/browse/AXIS2C-1204) | memory leak for In-Only message with no parameter |
| [AXIS2C-1214](https://issues.apache.org/jira/browse/AXIS2C-1214) | memory leak when server returns an error |
| [AXIS2C-1217](https://issues.apache.org/jira/browse/AXIS2C-1217) | multiple memory leaks on the client side |
| [AXIS2C-1222](https://issues.apache.org/jira/browse/AXIS2C-1222) | Axis2/C AXIOM libxml2 parser frees the IO context before calling the AXIS2_CLOSE_INPUT_CALLBACK |
| [AXIS2C-1224](https://issues.apache.org/jira/browse/AXIS2C-1224) | Error in WSDL2C while generating stubs in C |
| [AXIS2C-1227](https://issues.apache.org/jira/browse/AXIS2C-1227) | engine not freed when server return an error |
| [AXIS2C-1236](https://issues.apache.org/jira/browse/AXIS2C-1236) | Memory issues in Axis2/C service client |
| [AXIS2C-1239](https://issues.apache.org/jira/browse/AXIS2C-1239) | Build failure in freebsd |
| [AXIS2C-1258](https://issues.apache.org/jira/browse/AXIS2C-1258) | memory leaks in when using tls |
| [AXIS2C-1261](https://issues.apache.org/jira/browse/AXIS2C-1261) | When several fire and forget sends are done using svc client it segfaults |
| [AXIS2C-1262](https://issues.apache.org/jira/browse/AXIS2C-1262) | Leaking a axiom_soap_envelope_t in axiom_soap_builder_create error path |
| [AXIS2C-1275](https://issues.apache.org/jira/browse/AXIS2C-1275) | Axiom default namespace serialization and deserialization are not compatible |
| [AXIS2C-1289](https://issues.apache.org/jira/browse/AXIS2C-1289) | Incorrect deserialization when the first child is an empty element |
| [AXIS2C-1294](https://issues.apache.org/jira/browse/AXIS2C-1294) | Same handler inserted in two places |
| [AXIS2C-1312](https://issues.apache.org/jira/browse/AXIS2C-1312) | axis2_http_client_connect_ssl_host() cannot make an https connection through http proxy when the proxy requires authentication |
| [AXIS2C-1338](https://issues.apache.org/jira/browse/AXIS2C-1338) | "make install" overly eager |
| [AXIS2C-1339](https://issues.apache.org/jira/browse/AXIS2C-1339) | Wrong unique class names generation |
| [AXIS2C-1342](https://issues.apache.org/jira/browse/AXIS2C-1342) | When enable "persistOperationContext" parameter in axis2.xml, server crashes |
| [AXIS2C-1353](https://issues.apache.org/jira/browse/AXIS2C-1353) | Externally passed configuration context and service should not be freed within service client |
| [AXIS2C-1355](https://issues.apache.org/jira/browse/AXIS2C-1355) | Changing service client options between messages |
| [AXIS2C-1367](https://issues.apache.org/jira/browse/AXIS2C-1367) | sprintf format I32d not supported by Visual C++ 6.0 |
| [AXIS2C-1373](https://issues.apache.org/jira/browse/AXIS2C-1373) | Name matching fails with choice element |
| [AXIS2C-1374](https://issues.apache.org/jira/browse/AXIS2C-1374) | adb generated code has warnings |
| [AXIS2C-1376](https://issues.apache.org/jira/browse/AXIS2C-1376) | Lots of memory leak in axis2/c library |
| [AXIS2C-1378](https://issues.apache.org/jira/browse/AXIS2C-1378) | operation name is corrupted by the time it reaches dispatcher |
| [AXIS2C-1379](https://issues.apache.org/jira/browse/AXIS2C-1379) | typedef done too late in special cases - CADBBeanTemplateHeader.xsl |
| [AXIS2C-1388](https://issues.apache.org/jira/browse/AXIS2C-1388) | Memory leak AXIS2C |
| [AXIS2C-1390](https://issues.apache.org/jira/browse/AXIS2C-1390) | When creating the build.sh script for C-language the flatten-file option is not properly used |
| [AXIS2C-1401](https://issues.apache.org/jira/browse/AXIS2C-1401) | WSDL2C produces to WSDL2JAVA incompatible ADB-Binding for WSDL file |
| [AXIS2C-1403](https://issues.apache.org/jira/browse/AXIS2C-1403) | Code generation having problem in Windows |
| [AXIS2C-1404](https://issues.apache.org/jira/browse/AXIS2C-1404) | MTOM does not work with CGI installation of Axis |
| [AXIS2C-1408](https://issues.apache.org/jira/browse/AXIS2C-1408) | axis2_dep_engine_load_client exits with the env status to AXIS2FAILURE |
| [AXIS2C-1411](https://issues.apache.org/jira/browse/AXIS2C-1411) | thread_unix and thread_windows inconsistency as for axutil_thread_exit |
| [AXIS2C-1421](https://issues.apache.org/jira/browse/AXIS2C-1421) | adb-bindings for typeless parameter only gives access to the first element if passed an array |
| [AXIS2C-1447](https://issues.apache.org/jira/browse/AXIS2C-1447) | axutil_hash_free() should free using ht->env |
| [AXIS2C-1465](https://issues.apache.org/jira/browse/AXIS2C-1465) | crash in axis2_http_sender_configure_proxy_auth |
| [AXIS2C-1475](https://issues.apache.org/jira/browse/AXIS2C-1475) | Bad interaction between AXIS2_XML_PARSER_TYPE_BUFFER, axiom_soap_body_has_fault and XML escape sequence |
| [AXIS2C-1482](https://issues.apache.org/jira/browse/AXIS2C-1482) | excessive retrying by client if server busy |
| [AXIS2C-1486](https://issues.apache.org/jira/browse/AXIS2C-1486) | ADB generated code generates memory leak |
| [AXIS2C-1490](https://issues.apache.org/jira/browse/AXIS2C-1490) | axiom_soap_builder_construct_node should check that the Header element is in a Soap namespace |
| [AXIS2C-1491](https://issues.apache.org/jira/browse/AXIS2C-1491) | memory leak at axis2_dep_engine_get_svc_dir |
| [AXIS2C-1492](https://issues.apache.org/jira/browse/AXIS2C-1492) | maximum value of xsd:unsignedInt cannot exceed maximum value of signed integer (2147483647) |
| [AXIS2C-1495](https://issues.apache.org/jira/browse/AXIS2C-1495) | An error found while receiving www-form-urlencoded parameter values sent by POST method in REST style |
| [AXIS2C-1499](https://issues.apache.org/jira/browse/AXIS2C-1499) | double-freeing in axis2_http_worker_process_request() |
| [AXIS2C-1506](https://issues.apache.org/jira/browse/AXIS2C-1506) | 3 bugs in C code generation (invalid characters in c tokens, cyclic inclusion and uppercase-lowercase mismatch) |
| [AXIS2C-1507](https://issues.apache.org/jira/browse/AXIS2C-1507) | SOAP Exception fields not available |
| [AXIS2C-1508](https://issues.apache.org/jira/browse/AXIS2C-1508) | function axutil_strtol in util/src/types.c can't convert negative number from string |
| [AXIS2C-1509](https://issues.apache.org/jira/browse/AXIS2C-1509) | The response message from axis2/c has not charSet in the ContentType |
| [AXIS2C-1513](https://issues.apache.org/jira/browse/AXIS2C-1513) | C-language using unwrapped code does not compile |
| [AXIS2C-1515](https://issues.apache.org/jira/browse/AXIS2C-1515) | WSDL2C: generated code in axis2_svc_skel_invoke() should not set error on NULL return value |
| [AXIS2C-1516](https://issues.apache.org/jira/browse/AXIS2C-1516) | code generated from WSDL2C is not compiling |
| [AXIS2C-1519](https://issues.apache.org/jira/browse/AXIS2C-1519) | WSDL2C with xml mapping generates client code with memory leak |
| [AXIS2C-1520](https://issues.apache.org/jira/browse/AXIS2C-1520) | Unknown Error when using diacritic marks in XML request element value |
| [AXIS2C-1527](https://issues.apache.org/jira/browse/AXIS2C-1527) | Local to UTC time calculation wrong |
| [AXIS2C-1529](https://issues.apache.org/jira/browse/AXIS2C-1529) | wsdl2c generates skeleton code with memoryleak inside |
| [AXIS2C-1531](https://issues.apache.org/jira/browse/AXIS2C-1531) | Last POST char truncated |
| [AXIS2C-1532](https://issues.apache.org/jira/browse/AXIS2C-1532) | Last POST parameter is skipped when it has no value |
| [AXIS2C-1533](https://issues.apache.org/jira/browse/AXIS2C-1533) | Redundant redeclarations and undefined macros |
| [AXIS2C-1534](https://issues.apache.org/jira/browse/AXIS2C-1534) | XML writers handle errors differently, add char offset in case of errors |
| [AXIS2C-1535](https://issues.apache.org/jira/browse/AXIS2C-1535) | Getting HTTP Status Code as 0 instead of 408 |
| [AXIS2C-1536](https://issues.apache.org/jira/browse/AXIS2C-1536) | guththila stucked with empty XML comments |
| [AXIS2C-1537](https://issues.apache.org/jira/browse/AXIS2C-1537) | HTTP server crashes during shutdown |
| [AXIS2C-1539](https://issues.apache.org/jira/browse/AXIS2C-1539) | Initialization/finalization of libxml2 in wrong place |
| [AXIS2C-1540](https://issues.apache.org/jira/browse/AXIS2C-1540) | axis2/c does not build on Mac OS X |
| [AXIS2C-1542](https://issues.apache.org/jira/browse/AXIS2C-1542) | Memory leak in axis2c generated code |
| [AXIS2C-1546](https://issues.apache.org/jira/browse/AXIS2C-1546) | Logging of long input/output messages contains garbage data on Windows |
| [AXIS2C-1548](https://issues.apache.org/jira/browse/AXIS2C-1548) | WSDL2C generates improper code |
| [AXIS2C-1550](https://issues.apache.org/jira/browse/AXIS2C-1550) | HTTPS using axis2c.xml or embedded axis2 lib does not work with SSL authentication |
| [AXIS2C-1551](https://issues.apache.org/jira/browse/AXIS2C-1551) | Crash when reusing svc_client with non-blocking call |
| [AXIS2C-1555](https://issues.apache.org/jira/browse/AXIS2C-1555) | Proxy authentication not working when using HTTPS |
| [AXIS2C-1559](https://issues.apache.org/jira/browse/AXIS2C-1559) | axiom_node_to_string() doesn't return elements containing special latin characters |
| [AXIS2C-1564](https://issues.apache.org/jira/browse/AXIS2C-1564) | axutil_uri_parse_string() only parses URLs, not URIs |
| [AXIS2C-1566](https://issues.apache.org/jira/browse/AXIS2C-1566) | Client sends cookie only just after server sends Set-Cookie header |
| [AXIS2C-1567](https://issues.apache.org/jira/browse/AXIS2C-1567) | F_OK not defined with MacOSX builds |
| [AXIS2C-1568](https://issues.apache.org/jira/browse/AXIS2C-1568) | In keep alive mode, client reuses a connection even if the connection has already closed |
| [AXIS2C-1573](https://issues.apache.org/jira/browse/AXIS2C-1573) | Generated code failed to compile when the type names in WSDL has '.' |
| [AXIS2C-1574](https://issues.apache.org/jira/browse/AXIS2C-1574) | Generated code has duplicate property_Type definitions |
| [AXIS2C-1575](https://issues.apache.org/jira/browse/AXIS2C-1575) | Generated code has undefined variables qname_uri and qname_prefix |
| [AXIS2C-1579](https://issues.apache.org/jira/browse/AXIS2C-1579) | Wrong xsi:type in the response |
| [AXIS2C-1580](https://issues.apache.org/jira/browse/AXIS2C-1580) | Generated code crashed when it deserializes 'any' type |
| [AXIS2C-1581](https://issues.apache.org/jira/browse/AXIS2C-1581) | Generated code creates bad action in multi-parts request |
| [AXIS2C-1584](https://issues.apache.org/jira/browse/AXIS2C-1584) | Asynchronous call crashes and memory leaks |
| [AXIS2C-1586](https://issues.apache.org/jira/browse/AXIS2C-1586) | Memory leak in axis2_http_worker_process_request (http_worker.c) |
| [AXIS2C-1590](https://issues.apache.org/jira/browse/AXIS2C-1590) | axiom_attribute reference counting broken |
| [AXIS2C-1591](https://issues.apache.org/jira/browse/AXIS2C-1591) | axiom_element_add_attribute and duplicate names |
| [AXIS2C-1593](https://issues.apache.org/jira/browse/AXIS2C-1593) | Strange handling of xsi:type in requests |
| [AXIS2C-1595](https://issues.apache.org/jira/browse/AXIS2C-1595) | Memory leak in http_worker.c: array_list allocated by axutil_tokenize() |
| [AXIS2C-1596](https://issues.apache.org/jira/browse/AXIS2C-1596) | Memory leaks in http_transport_utils.c |
| [AXIS2C-1605](https://issues.apache.org/jira/browse/AXIS2C-1605) | sockets are being left in CLOSE_WAIT state by client when using SSL |
| [AXIS2C-1608](https://issues.apache.org/jira/browse/AXIS2C-1608) | Segmentation fault when HTTP request includes multiple cookies in a cookie HTTP-header |
| [AXIS2C-1609](https://issues.apache.org/jira/browse/AXIS2C-1609) | memory leak in axutil_hash_first() / axutil_hash_next() in generated xml deserializer code |
| [AXIS2C-1613](https://issues.apache.org/jira/browse/AXIS2C-1613) | No error is set during deserialization when an unexpected NULL value is return |
| [AXIS2C-1614](https://issues.apache.org/jira/browse/AXIS2C-1614) | Stop deserialization process when a required attribute is missing |
| [AXIS2C-1616](https://issues.apache.org/jira/browse/AXIS2C-1616) | Conflict with data type names |
| [AXIS2C-1617](https://issues.apache.org/jira/browse/AXIS2C-1617) | Fixes for memory leaks in generated code |
| [AXIS2C-1618](https://issues.apache.org/jira/browse/AXIS2C-1618) | Error by reading SSL-stream |
| [AXIS2C-1622](https://issues.apache.org/jira/browse/AXIS2C-1622) | echo_rest sample seg fault with libcurl |
| [AXIS2C-1626](https://issues.apache.org/jira/browse/AXIS2C-1626) | query string not passed when http get rest without soap |
| [AXIS2C-1632](https://issues.apache.org/jira/browse/AXIS2C-1632) | Patch to fix Stability issues and memory leaks on hash keys |
| [AXIS2C-1635](https://issues.apache.org/jira/browse/AXIS2C-1635) | Fix for various memleaks & corruptions |
| [AXIS2C-1651](https://issues.apache.org/jira/browse/AXIS2C-1651) | Static-WSDL retrieval does strange string operation |
| [AXIS2C-1659](https://issues.apache.org/jira/browse/AXIS2C-1659) | Segmentation fault in axutil_hash_find_entry |
| [AXIS2C-1662](https://issues.apache.org/jira/browse/AXIS2C-1662) | mod_log may corrupt the node list (on a chunked fault) |
| [AXIS2C-1664](https://issues.apache.org/jira/browse/AXIS2C-1664) | Memory leak when replacing value of item in hash table |
| [AXIS2C-1669](https://issues.apache.org/jira/browse/AXIS2C-1669) | Misc patches for mem leak, REST Call, SSL, XPATH |
| [AXIS2C-1670](https://issues.apache.org/jira/browse/AXIS2C-1670) | Contents of every file in current directory read during axis2_stub_create_with_endpoint_ref_and_client_home() |
| [AXIS2C-1672](https://issues.apache.org/jira/browse/AXIS2C-1672) | Build error on MacOSX |
| [AXIS2C-1685](https://issues.apache.org/jira/browse/AXIS2C-1685) | Unable to serialize/deserialize object, wrong element type or null node |
| [AXIS2C-1696](https://issues.apache.org/jira/browse/AXIS2C-1696) | Document GTest-related build requirements |
| [AXIS2C-1699](https://issues.apache.org/jira/browse/AXIS2C-1699) | Wrong C code generation for sequence types |
| [AXIS2C-1700](https://issues.apache.org/jira/browse/AXIS2C-1700) | Enable SSL/TLS peer name validation by default |
| [AXIS2C-1701](https://issues.apache.org/jira/browse/AXIS2C-1701) | Memory leak on duplicate XML namespace declaration |
| [AXIS2C-1702](https://issues.apache.org/jira/browse/AXIS2C-1702) | Memory leak in http transport |

## New Features

| Issue | Summary |
|-------|---------|
| [AXIS2C-677](https://issues.apache.org/jira/browse/AXIS2C-677) | Clone method required for axiom_node |
| [AXIS2C-1181](https://issues.apache.org/jira/browse/AXIS2C-1181) | Unable to support MTOM for code generation with adb |
| [AXIS2C-1383](https://issues.apache.org/jira/browse/AXIS2C-1383) | Ability to select the interface(s) that the axis2_http_server listens at for http requests |
| [AXIS2C-1484](https://issues.apache.org/jira/browse/AXIS2C-1484) | Allow servers to bind to custom address only instead of INADDR_ANY |

## Improvements

| Issue | Summary |
|-------|---------|
| [AXIS2C-1187](https://issues.apache.org/jira/browse/AXIS2C-1187) | HTTP Authentication related code should be moved to a separate method |
| [AXIS2C-1328](https://issues.apache.org/jira/browse/AXIS2C-1328) | Implementing new transport to optimize Axis2/C when used in a multi-threading client environment |
| [AXIS2C-1330](https://issues.apache.org/jira/browse/AXIS2C-1330) | Prevent name clashes when using multiple services that happen to have identical named items |
| [AXIS2C-1371](https://issues.apache.org/jira/browse/AXIS2C-1371) | Axis should log libcurl debug information |
| [AXIS2C-1480](https://issues.apache.org/jira/browse/AXIS2C-1480) | Improve performance of reading HTTP headers |
| [AXIS2C-1494](https://issues.apache.org/jira/browse/AXIS2C-1494) | Response received from the server is partially erased when non-ascii characters present in xml tags |
| [AXIS2C-1565](https://issues.apache.org/jira/browse/AXIS2C-1565) | CPU utilization is 100% for SOAP queries for synchronous calls |
| [AXIS2C-1612](https://issues.apache.org/jira/browse/AXIS2C-1612) | Custom HTTP HEADER USER AGENT |
| [AXIS2C-1636](https://issues.apache.org/jira/browse/AXIS2C-1636) | Enhanced REST support for Axis2/C |
| [AXIS2C-1645](https://issues.apache.org/jira/browse/AXIS2C-1645) | JSON support for Axis2/C |
| [AXIS2C-1666](https://issues.apache.org/jira/browse/AXIS2C-1666) | base64 ignore some whitespaces |
| [AXIS2C-1706](https://issues.apache.org/jira/browse/AXIS2C-1706) | SNI support |

## Tasks

| Issue | Summary |
|-------|---------|
| [AXIS2C-934](https://issues.apache.org/jira/browse/AXIS2C-934) | Organize Test Cases |
| [AXIS2C-1419](https://issues.apache.org/jira/browse/AXIS2C-1419) | Fixing memory leak |
| [AXIS2C-1679](https://issues.apache.org/jira/browse/AXIS2C-1679) | Support Multipart soap in code generation tool |
| [AXIS2C-1707](https://issues.apache.org/jira/browse/AXIS2C-1707) | Add HTTP/2 transport support for JSON requests |
| [AXIS2C-1708](https://issues.apache.org/jira/browse/AXIS2C-1708) | Modern security hardening |

## Removed Features

The following features have been removed in version 2.0.0 as part of security hardening ([AXIS2C-1708](https://issues.apache.org/jira/browse/AXIS2C-1708)) and deprecation cleanup:

- **NTLM Authentication** (`--enable-heimdal`, `--enable-libntlm`): Removed due to critical security vulnerabilities including pass-the-hash attacks, NTLM relay attacks, and weak cryptography. Microsoft is deprecating NTLM in Windows systems. Use Kerberos, OAuth 2.0, or mutual TLS instead.

- **TCP Transport** (`--enable-tcp`): Obsolete transport that lacks HTTP semantics (no Content-Length, chunked encoding, headers, status codes). Incompatible with TLS (requires HTTP for ALPN negotiation) and web infrastructure (proxies, load balancers, firewalls expect HTTP). Use HTTP/2 instead, which provides multiplexing benefits with full HTTP semantics.

- **CGI Transport** (`--enable-cgi`): Obsolete deployment model with security concerns and performance overhead of process-per-request. Use mod_axis2 with Apache httpd instead.

- **libcurl HTTP Backend** (`--enable-libcurl`): Redundant with native HTTP client implementation. MTOM was broken with libcurl ([AXIS2C-1270](https://issues.apache.org/jira/browse/AXIS2C-1270)). HTTP/2 support uses nghttp2 instead.

- **AMQP Transport** (`--with-qpid`): Unmaintained since 2010. Apache Qpid C++ is in maintenance mode. Modern messaging systems use REST APIs, gRPC, or native AMQP 1.0 clients. ([AXIS2C-1641](https://issues.apache.org/jira/browse/AXIS2C-1641))

- **IIS/ISAPI Integration**: Unmaintained since 2009. Windows users should use WSL2 with Apache httpd instead.

## Upgrade Notes

### Breaking Changes

1. **SSL/TLS Peer Validation**: SSL/TLS peer name validation is now enabled by default ([AXIS2C-1700](https://issues.apache.org/jira/browse/AXIS2C-1700)). Applications that previously connected to servers with invalid certificates will now fail. To restore the old behavior (not recommended), disable peer verification in your SSL configuration.

2. **NTLM Authentication Removed**: Applications using NTLM authentication must migrate to Kerberos (for Windows/AD environments), OAuth 2.0/OpenID Connect (for modern applications), or mutual TLS (for service-to-service communication).

3. **TCP Transport Removed**: Applications using raw TCP transport (`AXIS2_TRANSPORT_TCP`) must migrate to HTTP/1.1 or HTTP/2 transport. HTTP/2 provides similar multiplexing benefits with full HTTP semantics and TLS support.

4. **CGI Deployment Removed**: Applications deployed via CGI must migrate to mod_axis2 with Apache httpd or the standalone axis2_http_server.

5. **libcurl Backend Removed**: Applications that explicitly enabled libcurl (`--enable-libcurl`) will now use the native HTTP client. This should be transparent for most use cases.

6. **AMQP Transport Removed**: Applications using AMQP transport must migrate to alternative messaging solutions or REST-based APIs.

7. **IIS Support Removed**: Applications using IIS integration must migrate to Apache httpd (running natively or via WSL2 on Windows).

### New Dependencies

- **json-c** (optional): Required for JSON support. Install via `apt install libjson-c-dev` on Debian/Ubuntu.
- **nghttp2** (optional): Required for HTTP/2 support. Install via `apt install libnghttp2-dev` on Debian/Ubuntu.
