Return-Path: Delivered-To: apmail-ws-axis-c-dev-archive@www.apache.org Received: (qmail 92150 invoked from network); 20 Aug 2004 13:36:47 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur-2.apache.org with SMTP; 20 Aug 2004 13:36:47 -0000 Received: (qmail 51013 invoked by uid 500); 20 Aug 2004 13:35:44 -0000 Delivered-To: apmail-ws-axis-c-dev-archive@ws.apache.org Received: (qmail 50916 invoked by uid 500); 20 Aug 2004 13:35:43 -0000 Mailing-List: contact axis-c-dev-help@ws.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: list-post: List-Id: "Apache AXIS C Developers List" Reply-To: "Apache AXIS C Developers List" Delivered-To: mailing list axis-c-dev@ws.apache.org Received: (qmail 50801 invoked by uid 99); 20 Aug 2004 13:35:42 -0000 X-ASF-Spam-Status: No, hits=0.2 required=10.0 tests=DNS_FROM_RFC_ABUSE,UPPERCASE_25_50 X-Spam-Check-By: apache.org Received: from [66.218.93.186] (HELO web41301.mail.yahoo.com) (66.218.93.186) by apache.org (qpsmtpd/0.27.1) with SMTP; Fri, 20 Aug 2004 06:35:39 -0700 Message-ID: <20040820133538.57214.qmail@web41301.mail.yahoo.com> Received: from [128.84.45.231] by web41301.mail.yahoo.com via HTTP; Fri, 20 Aug 2004 06:35:38 PDT Date: Fri, 20 Aug 2004 06:35:38 -0700 (PDT) From: Valentine Kouznetsov Subject: various bugs found, see attached patch To: axis-c-dev@ws.apache.org MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="0-1811335244-1093008938=:55599" X-Virus-Checked: Checked X-Spam-Rating: minotaur-2.apache.org 1.6.2 0/1000/N --0-1811335244-1093008938=:55599 Content-Type: text/plain; charset=us-ascii Content-Id: Content-Disposition: inline Dear Axis developers, I found several bugs, design flows in Axis C++ 1.2 code. Instead of reporting a bug I'm sending you a patch which fix the following bugs: 1) The code cannot handle 100 HTTP request Code According to HTTP 1.1 specification you may get 100 code which means that server is still not ready to give OK request and you need to continue 2) Using HARDCODED PATH to "/usr/local/Axis/" is EVIL. I'm a user not a sys-admin on 800 nodes in our cluster and I don't have privilages to write to this location. The fix I applied is to introduce environment variable instead of hardcoded path 3) Using enum (CRITICAL and other) without namespace MAY lead that your code can overlap with code on client legacy application and conflict with it. I changed CRITICAL, etc. to AXIS_CRITICAL. It's not the best way to do (better would be use namespace), but it's unlikely to overlap with our code. 4) Bug in AxisTransport.cpp where you reject to read rest of the buffer if it's bigger you buffer size (which is 1024). For long soap messages (which I doubt you tested) the XMLParser can handle to parse them in chunks. But AxisTransport.cpp was unable to deliver correctly parts of long soap message. To fix this I applied AXIS_TRANSPORT_STATUS AxisTransport::getBytes(char* pcBuffer, int* pSize) { - if (0 <= m_iBytesLeft) + if (0 >= m_iBytesLeft) 5) It's worthwhile to mentioned that you're using in a wrong way string class. Instead of using strlen (m_PayLoad.c_str ()); it's better (and faster) to use m_PayLoad.size() since m_PayLoad is a string. I found quite a lot of places where you mismatch C and C++. I appreciate your effort of developing such nice package and hope you will consider my comments seriously and apply the patch I provide. The patch was done against axis-c-src-1-2-linux code and can be applied as patch -p0 < axis.patch (You need to stay in directory where axis-c-src-1-2-linux resides). If you need further assistance don't hesitate to contact me. Sincerely, Valentin. _______________________________ Do you Yahoo!? Win 1 of 4,000 free domain names from Yahoo! Enter now. http://promotions.yahoo.com/goldrush --0-1811335244-1093008938=:55599 Content-Type: text/x-diff; name="axis.patch" Content-Description: axis.patch Content-Disposition: inline; filename="axis.patch" diff -Naur axis-c-src-1-2-linux/src/common/AxisConfig.cpp axis-c-src-1-2-linux-vk/src/common/AxisConfig.cpp --- axis-c-src-1-2-linux/src/common/AxisConfig.cpp 2004-07-09 07:22:04.000000000 +0000 +++ axis-c-src-1-2-linux-vk/src/common/AxisConfig.cpp 2004-08-18 16:35:50.246450056 +0000 @@ -25,7 +25,8 @@ #include #include "AxisUtils.h" #include -#include +//#include +#include #include AxisConfig::AxisConfig () @@ -58,8 +59,22 @@ m_pcValueArray[AXCONF_NODENAME] = "server name"; m_pcValueArray[AXCONF_LISTENPORT] = "listen port"; #else - m_pcValueArray[AXCONF_XMLPARSER] = "/usr/local/Axis/libs/libaxis_xmlparser.so"; - m_pcValueArray[AXCONF_TRANSPORTHTTP] = "/usr/local/Axis/libs/libaxis_transport.so"; + char* axis_xmlparser = getenv("AXIS_XMLPARSER"); + if(!axis_xmlparser) { + std::cerr<<"No AXIS_XMLPARSER environment variable found"<m_Handler = lt_dlopen (pHandlerInfo->m_sLib.c_str ()); if (!pHandlerInfo->m_Handler) { - AXISTRACE1("SERVER_ENGINE_LIBRARY_LOADING_FAILED", CRITICAL); + AXISTRACE1("SERVER_ENGINE_LIBRARY_LOADING_FAILED", AXIS_CRITICAL); THROW_AXIS_ENGINE_EXCEPTION(SERVER_ENGINE_LIBRARY_LOADING_FAILED); } #elif defined(WIN32) @@ -97,7 +97,7 @@ dlopen (pHandlerInfo->m_sLib.c_str (), pHandlerInfo->m_nLoadOptions); if (!pHandlerInfo->m_Handler) { - AXISTRACE1("DLOPEN FAILED", CRITICAL); + AXISTRACE1("DLOPEN FAILED", AXIS_CRITICAL); THROW_AXIS_ENGINE_EXCEPTION(SERVER_ENGINE_LIBRARY_LOADING_FAILED); //printf ("DLOPEN FAILED: %s\n", dlerror ()); //exit (1); @@ -132,7 +132,7 @@ { delete pHandlerInfo; unlock (); - AXISTRACE1("SERVER_CONFIG_LIBRARY_PATH_EMPTY", CRITICAL); + AXISTRACE1("SERVER_CONFIG_LIBRARY_PATH_EMPTY", AXIS_CRITICAL); THROW_AXIS_CONFIG_EXCEPTION(SERVER_CONFIG_LIBRARY_PATH_EMPTY); //return SERVER_CONFIG_LIBRARYPATHEMPTY; } @@ -167,7 +167,7 @@ unloadLib (pHandlerInfo); delete pHandlerInfo; unlock (); - AXISTRACE1 ("Library loading failed", CRITICAL); + AXISTRACE1 ("Library loading failed", AXIS_CRITICAL); THROW_AXIS_ENGINE_EXCEPTION(SERVER_ENGINE_LIBRARY_LOADING_FAILED); //return SERVER_ENGINE_LIBRARYLOADINGFAILED; } @@ -179,7 +179,7 @@ else { unlock (); - AXISTRACE1 ("Library loading failed", CRITICAL); + AXISTRACE1 ("Library loading failed", AXIS_CRITICAL); THROW_AXIS_ENGINE_EXCEPTION(SERVER_ENGINE_LIBRARY_LOADING_FAILED); //return SERVER_ENGINE_LIBRARYLOADINGFAILED; } @@ -205,14 +205,14 @@ pBH->_functions->fini (pBH->_object); pHandlerInfo->m_Delete (pBH); unlock (); - AXISTRACE1("SERVER_ENGINE_HANDLER_INIT_FAILED", CRITICAL); + AXISTRACE1("SERVER_ENGINE_HANDLER_INIT_FAILED", AXIS_CRITICAL); THROW_AXIS_ENGINE_EXCEPTION(SERVER_ENGINE_HANDLER_INIT_FAILED); //return SERVER_ENGINE_HANDLERINITFAILED; } } else if (0 == pBH->_object) { - AXISTRACE1("SERVER_ENGINE_HANDLER_CREATION_FAILED", CRITICAL); + AXISTRACE1("SERVER_ENGINE_HANDLER_CREATION_FAILED", AXIS_CRITICAL); THROW_AXIS_ENGINE_EXCEPTION(SERVER_ENGINE_HANDLER_CREATION_FAILED); //return SERVER_ENGINE_HANDLERCREATIONFAILED; } @@ -231,7 +231,7 @@ ((HandlerBase*) pBH->_object)->fini (); pHandlerInfo->m_Delete (pBH); unlock (); - AXISTRACE1("SERVER_ENGINE_HANDLER_INIT_FAILED", CRITICAL); + AXISTRACE1("SERVER_ENGINE_HANDLER_INIT_FAILED", AXIS_CRITICAL); THROW_AXIS_ENGINE_EXCEPTION(SERVER_ENGINE_HANDLER_INIT_FAILED); //return SERVER_ENGINE_HANDLERINITFAILED; } @@ -240,7 +240,7 @@ else { unlock (); - AXISTRACE1("SERVER_ENGINE_HANDLER_CREATION_FAILED", CRITICAL); + AXISTRACE1("SERVER_ENGINE_HANDLER_CREATION_FAILED", AXIS_CRITICAL); THROW_AXIS_ENGINE_EXCEPTION(SERVER_ENGINE_HANDLER_CREATION_FAILED); //return SERVER_ENGINE_HANDLERCREATIONFAILED; } diff -Naur axis-c-src-1-2-linux/src/engine/SOAPTransportFactory.cpp axis-c-src-1-2-linux-vk/src/engine/SOAPTransportFactory.cpp --- axis-c-src-1-2-linux/src/engine/SOAPTransportFactory.cpp 2004-07-09 07:22:04.000000000 +0000 +++ axis-c-src-1-2-linux-vk/src/engine/SOAPTransportFactory.cpp 2004-08-18 16:35:50.269446560 +0000 @@ -65,7 +65,7 @@ if (!m_Create || !m_Delete) { unloadLib(); - AXISTRACE1("SERVER_ENGINE_LOADING_TRANSPORT_FAILED", CRITICAL); + AXISTRACE1("SERVER_ENGINE_LOADING_TRANSPORT_FAILED", AXIS_CRITICAL); THROW_AXIS_ENGINE_EXCEPTION2(SERVER_ENGINE_LOADING_TRANSPORT_FAILED, strdup(m_pcLibraryPath)); //throw AxisEngineException(SERVER_ENGINE_LIBRARY_LOADING_FAILED, strdup(m_pcLibraryPath)); } @@ -76,7 +76,7 @@ } else { - AXISTRACE1("SERVER_ENGINE_LOADING_TRANSPORT_FAILED", CRITICAL); + AXISTRACE1("SERVER_ENGINE_LOADING_TRANSPORT_FAILED", AXIS_CRITICAL); THROW_AXIS_ENGINE_EXCEPTION2(SERVER_ENGINE_LOADING_TRANSPORT_FAILED, strdup(m_pcLibraryPath)); //throw AxisEngineException(SERVER_ENGINE_LIBRARY_LOADING_FAILED, strdup(m_pcLibraryPath)); } @@ -109,7 +109,7 @@ m_LibHandler = lt_dlopen(m_pcLibraryPath); if (!m_LibHandler) { - AXISTRACE1("SERVER_ENGINE_LOADING_TRANSPORT_FAILED", CRITICAL); + AXISTRACE1("SERVER_ENGINE_LOADING_TRANSPORT_FAILED", AXIS_CRITICAL); THROW_AXIS_ENGINE_EXCEPTION(SERVER_ENGINE_LOADING_TRANSPORT_FAILED); //printf("DLOPEN FAILED in loading transport library: %s\n", lt_dlerror ()); } @@ -119,7 +119,8 @@ m_LibHandler = dlopen(m_pcLibraryPath, RTLD_LAZY); if (!m_LibHandler) { - AXISTRACE1("SERVER_ENGINE_LOADING_TRANSPORT_FAILED", CRITICAL); + AXISTRACE1("SERVER_ENGINE_LOADING_TRANSPORT_FAILED", AXIS_CRITICAL); + printf("DLOPEN FAILED in loading transport library: %s\n", dlerror()); THROW_AXIS_ENGINE_EXCEPTION(SERVER_ENGINE_LOADING_TRANSPORT_FAILED); //printf("DLOPEN FAILED in loading transport library: %s\n", dlerror()); } diff -Naur axis-c-src-1-2-linux/src/engine/SerializerPool.cpp axis-c-src-1-2-linux-vk/src/engine/SerializerPool.cpp --- axis-c-src-1-2-linux/src/engine/SerializerPool.cpp 2004-07-09 07:22:04.000000000 +0000 +++ axis-c-src-1-2-linux-vk/src/engine/SerializerPool.cpp 2004-08-18 16:35:50.262447624 +0000 @@ -60,7 +60,7 @@ delete *ppSZ; *ppSZ = NULL; unlock (); - AXISTRACE1 ("Serializer pool could not be initialized", CRITICAL); + AXISTRACE1 ("Serializer pool could not be initialized", AXIS_CRITICAL); return AXIS_FAIL; } unlock (); diff -Naur axis-c-src-1-2-linux/src/engine/XMLParserFactory.cpp axis-c-src-1-2-linux-vk/src/engine/XMLParserFactory.cpp --- axis-c-src-1-2-linux/src/engine/XMLParserFactory.cpp 2004-07-09 07:22:04.000000000 +0000 +++ axis-c-src-1-2-linux-vk/src/engine/XMLParserFactory.cpp 2004-08-18 16:35:50.272446104 +0000 @@ -66,7 +66,7 @@ if (!m_Create || !m_Delete) { unloadLib(); - AXISTRACE1("SERVER_ENGINE_LOADING_PARSER_FAILED" , CRITICAL); + AXISTRACE1("SERVER_ENGINE_LOADING_PARSER_FAILED" , AXIS_CRITICAL); THROW_AXIS_ENGINE_EXCEPTION2(SERVER_ENGINE_LOADING_PARSER_FAILED, strdup(m_pcLibraryPath)); //throw AxisEngineException(SERVER_ENGINE_LIBRARY_LOADING_FAILED, strdup(m_pcLibraryPath)); } @@ -77,7 +77,7 @@ } else { - AXISTRACE1("SERVER_ENGINE_LOADING_PARSER_FAILED" , CRITICAL); + AXISTRACE1("SERVER_ENGINE_LOADING_PARSER_FAILED" , AXIS_CRITICAL); THROW_AXIS_ENGINE_EXCEPTION2(SERVER_ENGINE_LOADING_PARSER_FAILED, strdup(m_pcLibraryPath)); //throw AxisEngineException(SERVER_ENGINE_LIBRARY_LOADING_FAILED, strdup(m_pcLibraryPath)); } @@ -110,7 +110,7 @@ m_LibHandler = lt_dlopen(m_pcLibraryPath); if (!m_LibHandler) { - AXISTRACE1("SERVER_ENGINE_LOADING_PARSER_FAILED" , CRITICAL); + AXISTRACE1("SERVER_ENGINE_LOADING_PARSER_FAILED" , AXIS_CRITICAL); THROW_AXIS_ENGINE_EXCEPTION(SERVER_ENGINE_LOADING_PARSER_FAILED); //printf("DLOPEN FAILED in loading parser library: %s\n", lt_dlerror ()); } @@ -120,7 +120,8 @@ m_LibHandler = dlopen(m_pcLibraryPath, RTLD_LAZY); if (!m_LibHandler) { - AXISTRACE1("SERVER_ENGINE_LOADING_PARSER_FAILED" , CRITICAL); + AXISTRACE1("SERVER_ENGINE_LOADING_PARSER_FAILED" , AXIS_CRITICAL); + printf("DLOPEN FAILED in loading parser library: %s %s\n", dlerror(),m_pcLibraryPath); THROW_AXIS_ENGINE_EXCEPTION(SERVER_ENGINE_LOADING_PARSER_FAILED); //printf("DLOPEN FAILED in loading parser library: %s\n", dlerror()); } diff -Naur axis-c-src-1-2-linux/src/engine/client/ClientAxisEngine.cpp axis-c-src-1-2-linux-vk/src/engine/client/ClientAxisEngine.cpp --- axis-c-src-1-2-linux/src/engine/client/ClientAxisEngine.cpp 2004-07-09 07:22:04.000000000 +0000 +++ axis-c-src-1-2-linux-vk/src/engine/client/ClientAxisEngine.cpp 2004-08-18 16:35:50.250449448 +0000 @@ -14,7 +14,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - #include "ClientAxisEngine.h" #include "../../wsdd/WSDDDeployment.h" #include "../HandlerPool.h" @@ -49,7 +48,7 @@ AXISC_TRY if (!pSoap) { - AXISTRACE1 ("Transport is null", CRITICAL); + AXISTRACE1 ("Transport is null", AXIS_CRITICAL); return AXIS_FAIL; } m_pSoap = pSoap; diff -Naur axis-c-src-1-2-linux/src/engine/server/ServerAxisEngine.cpp axis-c-src-1-2-linux-vk/src/engine/server/ServerAxisEngine.cpp --- axis-c-src-1-2-linux/src/engine/server/ServerAxisEngine.cpp 2004-07-09 07:22:04.000000000 +0000 +++ axis-c-src-1-2-linux-vk/src/engine/server/ServerAxisEngine.cpp 2004-08-18 16:35:50.265447168 +0000 @@ -48,7 +48,7 @@ AXISC_TRY if (!pStream) { - AXISTRACE1 ("transport is not set properly", CRITICAL); + AXISTRACE1 ("transport is not set properly", AXIS_CRITICAL); THROW_AXIS_CONFIG_EXCEPTION(SERVER_CONFIG_TRANSPORT_CONF_FAILED); } string sSessionId = pStream->getSessionId(); @@ -68,7 +68,7 @@ nSoapVersion = (nSoapVersion == VERSION_LAST) ? SOAP_VER_1_2 : nSoapVersion; m_pSZ->setSoapVersion ((SOAP_VERSION) nSoapVersion); - AXISTRACE1 ("CLIENT_SOAP_SOAP_CONTENT_ERROR", CRITICAL); + AXISTRACE1 ("CLIENT_SOAP_SOAP_CONTENT_ERROR", AXIS_CRITICAL); THROW_AXIS_SOAP_EXCEPTION(CLIENT_SOAP_SOAP_CONTENT_ERROR); //m_pSZ->setSoapFault (SoapFault::getSoapFault (CLIENT_SOAP_SOAPCONTENTERROR)); break; // do .. while(0) @@ -77,7 +77,7 @@ const char* cService = pStream->getTransportProperty(SERVICE_URI); if (!cService) { - AXISTRACE1 ("CLIENT_SOAP_SOAP_CONTENT_ERROR", CRITICAL); + AXISTRACE1 ("CLIENT_SOAP_SOAP_CONTENT_ERROR", AXIS_CRITICAL); THROW_AXIS_SOAP_EXCEPTION(CLIENT_SOAP_SOAP_CONTENT_ERROR); //m_pSZ->setSoapFault (SoapFault::getSoapFault (CLIENT_SOAP_SOAPCONTENTERROR)); break; // do .. while(0) @@ -90,7 +90,7 @@ nSoapVersion = (nSoapVersion == VERSION_LAST) ? SOAP_VER_1_2 : nSoapVersion; m_pSZ->setSoapVersion ((SOAP_VERSION) nSoapVersion); - AXISTRACE1("CLIENT_SOAP_SOAP_ACTION_EMTPY", CRITICAL); + AXISTRACE1("CLIENT_SOAP_SOAP_ACTION_EMTPY", AXIS_CRITICAL); THROW_AXIS_SOAP_EXCEPTION(CLIENT_SOAP_SOAP_ACTION_EMTPY); //m_pSZ->setSoapFault (SoapFault::getSoapFault (CLIENT_SOAP_SOAPACTIONEMTPY)); break; // do .. while(0) @@ -109,7 +109,7 @@ nSoapVersion = (nSoapVersion == VERSION_LAST) ? SOAP_VER_1_2 : nSoapVersion; m_pSZ->setSoapVersion ((SOAP_VERSION) nSoapVersion); - AXISTRACE1("CLIENT_WSDD_SERVICE_NOT_FOUND", CRITICAL); + AXISTRACE1("CLIENT_WSDD_SERVICE_NOT_FOUND", AXIS_CRITICAL); THROW_AXIS_WSDD_EXCEPTION(CLIENT_WSDD_SERVICE_NOT_FOUND); //m_pSZ->setSoapFault (SoapFault::getSoapFault (CLIENT_WSDD_SERVICENOTFOUND)); break; // do .. while(0) @@ -146,7 +146,7 @@ nSoapVersion = m_pDZ->getVersion (); if (m_pDZ->getStatus () != AXIS_SUCCESS) { - AXISTRACE1("CLIENT_SOAP_MESSAGE_INCOMPLETE", CRITICAL); + AXISTRACE1("CLIENT_SOAP_MESSAGE_INCOMPLETE", AXIS_CRITICAL); THROW_AXIS_SOAP_EXCEPTION(CLIENT_SOAP_MESSAGE_INCOMPLETE); //m_pSZ->setSoapFault (SoapFault::getSoapFault(CLIENT_SOAP_MESSAGEINCOMPLETE)); break; // do .. while(0) @@ -155,7 +155,7 @@ if (nSoapVersion == VERSION_LAST) /* version not supported */ { m_pSZ->setSoapVersion (SOAP_VER_1_2); - AXISTRACE1("SOAP_VERSION_MISMATCH", CRITICAL); + AXISTRACE1("SOAP_VERSION_MISMATCH", AXIS_CRITICAL); THROW_AXIS_SOAP_EXCEPTION(SOAP_VERSION_MISMATCH); //m_pSZ->setSoapFault (SoapFault::getSoapFault (SOAP_VERSIONMISMATCH)); break; // do .. while(0) @@ -164,7 +164,7 @@ /* Set Soap version in the Serializer and the envelope */ if (AXIS_SUCCESS != m_pSZ->setSoapVersion ((SOAP_VERSION) nSoapVersion)) { - AXISTRACE1 ("CLIENT_SOAP_SOAP_CONTENT_ERROR", CRITICAL); + AXISTRACE1 ("CLIENT_SOAP_SOAP_CONTENT_ERROR", AXIS_CRITICAL); THROW_AXIS_SOAP_EXCEPTION(CLIENT_SOAP_SOAP_CONTENT_ERROR); //m_pSZ->setSoapFault (SoapFault::getSoapFault (CLIENT_SOAP_SOAPCONTENTERROR)); break; // do .. while(0) @@ -176,7 +176,7 @@ AxisString sOperation = pStream->getTransportProperty(OPERATION_NAME); if (sOperation.empty ()) { - AXISTRACE1("CLIENT_SOAP_NO_SOAP_METHOD", CRITICAL); + AXISTRACE1("CLIENT_SOAP_NO_SOAP_METHOD", AXIS_CRITICAL); THROW_AXIS_SOAP_EXCEPTION(CLIENT_SOAP_NO_SOAP_METHOD); //m_pSZ->setSoapFault (SoapFault::getSoapFault (CLIENT_SOAP_NOSOAPMETHOD)); break; // do .. while(0) @@ -196,7 +196,7 @@ sSessionId, m_pService)) { /* error : couldnot load web service */ - AXISTRACE1("SERVER_ENGINE_COULD_NOT_LOAD_SRV", CRITICAL); + AXISTRACE1("SERVER_ENGINE_COULD_NOT_LOAD_SRV", AXIS_CRITICAL); THROW_AXIS_ENGINE_EXCEPTION(SERVER_ENGINE_COULD_NOT_LOAD_SRV); //m_pSZ-> // setSoapFault(SoapFault::getSoapFault(SERVER_ENGINE_COULDNOTLOADSRV)); @@ -221,7 +221,7 @@ if (m_pSZ->getStyle () != nBindingStyle) { - AXISTRACE1 ("CLIENT_SOAP_SOAP_CONTENT_ERROR", CRITICAL); + AXISTRACE1 ("CLIENT_SOAP_SOAP_CONTENT_ERROR", AXIS_CRITICAL); THROW_AXIS_SOAP_EXCEPTION(CLIENT_SOAP_SOAP_CONTENT_ERROR); //m_pSZ-> // setSoapFault(SoapFault::getSoapFault(CLIENT_SOAP_SOAPCONTENTERROR)); @@ -230,7 +230,7 @@ } else { - AXISTRACE1("CLIENT_WSDD_METHOD_NOT_ALLOWED", CRITICAL); + AXISTRACE1("CLIENT_WSDD_METHOD_NOT_ALLOWED", AXIS_CRITICAL); THROW_AXIS_WSDD_EXCEPTION(CLIENT_WSDD_METHOD_NOT_ALLOWED); //m_pSZ->setSoapFault (SoapFault::getSoapFault (CLIENT_WSDD_METHODNOTALLOWED)); // Method is not an exposed allowed method @@ -241,7 +241,7 @@ if (AXIS_SUCCESS != (Status = initializeHandlers (sSessionId, pStream->getProtocol()))) { - AXISTRACE1("SERVER_ENGINE_COULD_NOT_LOAD_HDL", CRITICAL); + AXISTRACE1("SERVER_ENGINE_COULD_NOT_LOAD_HDL", AXIS_CRITICAL); THROW_AXIS_ENGINE_EXCEPTION(SERVER_ENGINE_COULD_NOT_LOAD_HDL); //m_pSZ->setSoapFault (SoapFault::getSoapFault (SERVER_ENGINE_COULDNOTLOADHDL)); break; // do .. while(0) @@ -250,7 +250,7 @@ if (AXIS_SUCCESS != (Status = g_pHandlerPool->getRequestFlowHandlerChain (&m_pSReqFChain, sSessionId, m_pService))) { - AXISTRACE1("SERVER_ENGINE_COULD_NOT_LOAD_HDL", CRITICAL); + AXISTRACE1("SERVER_ENGINE_COULD_NOT_LOAD_HDL", AXIS_CRITICAL); THROW_AXIS_ENGINE_EXCEPTION(SERVER_ENGINE_COULD_NOT_LOAD_HDL); //m_pSZ->setSoapFault (SoapFault::getSoapFault (SERVER_ENGINE_COULDNOTLOADHDL)); break; // do .. while(0) @@ -260,7 +260,7 @@ g_pHandlerPool->getResponseFlowHandlerChain (&m_pSResFChain, sSessionId, m_pService))) { - AXISTRACE1("SERVER_ENGINE_COULD_NOT_LOAD_HDL", CRITICAL); + AXISTRACE1("SERVER_ENGINE_COULD_NOT_LOAD_HDL", AXIS_CRITICAL); THROW_AXIS_ENGINE_EXCEPTION(SERVER_ENGINE_COULD_NOT_LOAD_HDL); //m_pSZ->setSoapFault (SoapFault::getSoapFault (SERVER_ENGINE_COULDNOTLOADHDL)); break; // do .. while(0) @@ -275,7 +275,7 @@ */ if (AXIS_SUCCESS != m_pDZ->getHeader ()) { - AXISTRACE1 ("CLIENT_SOAP_SOAP_CONTENT_ERROR", CRITICAL); + AXISTRACE1 ("CLIENT_SOAP_SOAP_CONTENT_ERROR", AXIS_CRITICAL); THROW_AXIS_SOAP_EXCEPTION(CLIENT_SOAP_SOAP_CONTENT_ERROR); //m_pSZ->setSoapFault (SoapFault::getSoapFault (CLIENT_SOAP_SOAPCONTENTERROR)); break; // do .. while(0) @@ -289,7 +289,7 @@ if (AXIS_SUCCESS != m_pDZ->flushInputStream ()) { - AXISTRACE1 ("CLIENT_SOAP_SOAP_CONTENT_ERROR", CRITICAL); + AXISTRACE1 ("CLIENT_SOAP_SOAP_CONTENT_ERROR", AXIS_CRITICAL); } /* * Get any header blocks unprocessed (left) in the Deserializer and add them @@ -327,7 +327,7 @@ #ifdef ENABLE_AXIS_EXCEPTION int iExceptionCode = e.getExceptionCode(); char* pcTempStr = (char*) e.what(); - AXISTRACE2("Exception:", pcTempStr, CRITICAL); + AXISTRACE2("Exception:", pcTempStr, AXIS_CRITICAL); if(AXISC_SERVICE_THROWN_EXCEPTION == iExceptionCode) { /*Writes the SoapMessage in which soap body contains only Fault*/ @@ -368,7 +368,7 @@ { if (AXIS_SUCCESS != (Status = m_pTReqFChain->invoke (pMsg))) { - AXISTRACE1("SERVER_ENGINE_HANDLER_FAILED", CRITICAL); + AXISTRACE1("SERVER_ENGINE_HANDLER_FAILED", AXIS_CRITICAL); THROW_AXIS_ENGINE_EXCEPTION(SERVER_ENGINE_HANDLER_FAILED); //m_pSZ->setSoapFault (SoapFault::getSoapFault(SERVER_ENGINE_HANDLERFAILED)); break; // do .. while (0) @@ -381,7 +381,7 @@ { if (AXIS_SUCCESS != (Status = m_pGReqFChain->invoke (pMsg))) { - AXISTRACE1("SERVER_ENGINE_HANDLER_FAILED", CRITICAL); + AXISTRACE1("SERVER_ENGINE_HANDLER_FAILED", AXIS_CRITICAL); THROW_AXIS_ENGINE_EXCEPTION(SERVER_ENGINE_HANDLER_FAILED); //m_pSZ->setSoapFault (SoapFault::getSoapFault(SERVER_ENGINE_HANDLERFAILED)); break; // do .. while (0) @@ -393,7 +393,7 @@ { if (AXIS_SUCCESS != (Status = m_pSReqFChain->invoke (pMsg))) { - AXISTRACE1("SERVER_ENGINE_HANDLER_FAILED", CRITICAL); + AXISTRACE1("SERVER_ENGINE_HANDLER_FAILED", AXIS_CRITICAL); THROW_AXIS_ENGINE_EXCEPTION(SERVER_ENGINE_HANDLER_FAILED); //m_pSZ->setSoapFault (SoapFault::getSoapFault(SERVER_ENGINE_HANDLERFAILED)); break; // do .. while (0) @@ -407,7 +407,7 @@ */ if (m_pDZ->isAnyMustUnderstandHeadersLeft ()) { - AXISTRACE1("SOAP_MUSTUNDERSTAND", CRITICAL); + AXISTRACE1("SOAP_MUSTUNDERSTAND", AXIS_CRITICAL); THROW_AXIS_SOAP_EXCEPTION(SOAP_MUST_UNDERSTAND); //m_pSZ->setSoapFault (SoapFault::getSoapFault (SOAP_MUSTUNDERSTAND)); break; // do .. while (0) @@ -433,7 +433,7 @@ Status = AXIS_FAIL; if (AXIS_SUCCESS != Status) { - AXISTRACE1("SERVER_ENGINE_WEBSERVICEFAILED", CRITICAL); + AXISTRACE1("SERVER_ENGINE_WEBSERVICEFAILED", AXIS_CRITICAL); THROW_AXIS_ENGINE_EXCEPTION(SERVER_ENGINE_WEBSERVICE_FAILED); //m_pSZ-> // setSoapFault(SoapFault::getSoapFault(SERVER_ENGINE_WEBSERVICEFAILED)); diff -Naur axis-c-src-1-2-linux/src/soap/SoapDeSerializer.cpp axis-c-src-1-2-linux-vk/src/soap/SoapDeSerializer.cpp --- axis-c-src-1-2-linux/src/soap/SoapDeSerializer.cpp 2004-07-09 13:34:57.000000000 +0000 +++ axis-c-src-1-2-linux-vk/src/soap/SoapDeSerializer.cpp 2004-08-18 16:35:50.277445344 +0000 @@ -32,6 +32,7 @@ #ifdef WIN32 #pragma warning (disable : 4101) #endif +#include #include #include "SoapEnvelope.h" @@ -118,7 +119,7 @@ } else { - m_nSoapVersion = VERSION_LAST; + m_nSoapVersion = VERSION_LAST; } /* Set Attributes */ @@ -322,7 +323,7 @@ * is not so nice. I'll rectify this asap */ setStyle(DOC_LITERAL); - AXISTRACE1("AXISC_NODE_VALUE_MISMATCH_EXCEPTION", CRITICAL); + AXISTRACE1("AXISC_NODE_VALUE_MISMATCH_EXCEPTION", AXIS_CRITICAL); throw AxisGenException(AXISC_NODE_VALUE_MISMATCH_EXCEPTION); } /* we can check the namespace uri too here. Should we ?*/ @@ -341,7 +342,7 @@ { m_nStatus = AXIS_SUCCESS; m_pNode = NULL; - AXISTRACE1("AXISC_NODE_VALUE_MISMATCH_EXCEPTION", CRITICAL); + AXISTRACE1("AXISC_NODE_VALUE_MISMATCH_EXCEPTION", AXIS_CRITICAL); THROW_AXIS_EXCEPTION(AXISC_NODE_VALUE_MISMATCH_EXCEPTION); } /* we can check the namespace uri too here. Should we ?*/ diff -Naur axis-c-src-1-2-linux/src/transport/axis/AxisTransport.cpp axis-c-src-1-2-linux-vk/src/transport/axis/AxisTransport.cpp --- axis-c-src-1-2-linux/src/transport/axis/AxisTransport.cpp 2004-07-09 13:36:07.000000000 +0000 +++ axis-c-src-1-2-linux-vk/src/transport/axis/AxisTransport.cpp 2004-08-18 16:35:50.281444736 +0000 @@ -35,7 +35,7 @@ * Revision 1.3 2004/06/08 samisa * Added setTimeout */ - +#include #ifdef WIN32 #pragma warning (disable : 4786) #pragma warning (disable : 4101) @@ -209,6 +209,7 @@ AXIS_TRANSPORT_STATUS AxisTransport::sendBytes(const char* pcSendBuffer, const void* pBufferId) { + for (int index=0;index < NO_OF_SERIALIZE_BUFFERS; index++) { if(!m_SendBuffers[index].pcBuffer) @@ -234,7 +235,7 @@ AXIS_TRANSPORT_STATUS AxisTransport::getBytes(char* pcBuffer, int* pSize) { - if (0 <= m_iBytesLeft) + if (0 >= m_iBytesLeft) { try { @@ -259,10 +260,10 @@ } if (m_pcReceived) { - int iToCopy = (*pSize < m_iBytesLeft) ? *pSize : m_iBytesLeft; + int iToCopy = (*pSize < m_iBytesLeft) ? *pSize : m_iBytesLeft; strncpy(pcBuffer, m_pcReceived, iToCopy); - m_iBytesLeft -= iToCopy; - m_pcReceived += iToCopy; + m_iBytesLeft -= iToCopy; + m_pcReceived += iToCopy; *pSize = iToCopy; return TRANSPORT_IN_PROGRESS; } diff -Naur axis-c-src-1-2-linux/src/transport/axis/Channel.cpp axis-c-src-1-2-linux-vk/src/transport/axis/Channel.cpp --- axis-c-src-1-2-linux/src/transport/axis/Channel.cpp 2004-07-09 07:22:04.000000000 +0000 +++ axis-c-src-1-2-linux-vk/src/transport/axis/Channel.cpp 2004-08-18 16:35:50.285444128 +0000 @@ -325,6 +325,7 @@ else Error( "Channel::readNonBlocking: execution break"); + return *this; } diff -Naur axis-c-src-1-2-linux/src/transport/axis/HttpTransport.cpp axis-c-src-1-2-linux-vk/src/transport/axis/HttpTransport.cpp --- axis-c-src-1-2-linux/src/transport/axis/HttpTransport.cpp 2004-07-09 07:22:04.000000000 +0000 +++ axis-c-src-1-2-linux-vk/src/transport/axis/HttpTransport.cpp 2004-08-18 16:35:50.288443672 +0000 @@ -45,7 +45,7 @@ * HTTP Header. */ - +#include #ifdef WIN32 #pragma warning (disable : 4101) #endif @@ -69,6 +69,7 @@ m_IsHttpHeader = 0; m_HttpBindDone = false; m_Secure = secure; + m_mustReadAgainHTTP = false; if (SECURE == secure) { @@ -93,6 +94,7 @@ m_strUrl = strUrl; m_IsHttpHeader = 0; m_HttpBindDone = false; + m_mustReadAgainHTTP = false; if (secure) { @@ -131,6 +133,7 @@ try { m_bStatus = true; + m_mustReadAgainHTTP = false; std::string host = m_Url.GetHostName(); unsigned int port = m_Url.GetPort(); if(m_bUseProxy) @@ -212,22 +215,24 @@ std::string tmpPacket; /* use temporary, need to workout for this */ try { - if (!m_bStatus) - { - /* We have the payload; this is due to Fault request made in */ - /* earlier call to this method */ - *pPayLoad = m_PayLoad.c_str (); - - return *this; - } + if (!m_bStatus) + { + /* We have the payload; this is due to Fault request made in */ + /* earlier call to this method */ + *pPayLoad = m_PayLoad.c_str (); + + return *this; + } /* Http header is processed and validated. We now receive the payload */ /* from the channel */ if (m_IsHttpHeader == 1) { *m_Channel >> m_PayLoad; *pPayLoad = m_PayLoad.c_str (); + return *this; } + do { /* process will step into this only if http validation is not done. * That is, until the stream contain the httpd header. @@ -260,7 +265,7 @@ while (tmpCompletePacket.length ()); #ifdef _DEBUG - std::cout << "\n\n\nGot the message:\r\n\r\n" << tmpPacket << "\n\n"; + std::cout << "\n\n\nGot the message:\n\"\"\"" << tmpPacket << "\"\"\"\n\n"; #endif /* Validate the HTTP packet */ if (m_IsHttpHeader == 1) @@ -269,11 +274,22 @@ */ { /* printf("while,m_IsHttpHeader == 1\n"); */ - *pPayLoad = tmpPacket.c_str (); +// *pPayLoad = tmpPacket.c_str (); + m_PayLoad = tmpPacket; + *pPayLoad = m_PayLoad.c_str(); break; - } - if (m_bStatus) - HTTPValidate (tmpPacket); /* Validate the header */ + } else { + HTTPValidate (tmpPacket); /* Validate the header */ + // HTTP found HTTP 100 code which means we need to try again + if(m_mustReadAgainHTTP) { + m_mustReadAgainHTTP = false; + m_IsHttpHeader=0; + m_sHeader=""; + continue; + } + + } + int j = strlen (tmpPacket.c_str ()); if (j == 0) break; @@ -656,6 +672,9 @@ /* Status code is 2xx; so valid packet. hence go ahead and extract * the payload. */ + if (nHttpStatus == 1) { + m_mustReadAgainHTTP = true; + } if (nHttpStatus == 2) { GetPayLoad (m_sHeader, offset); @@ -758,7 +777,7 @@ (pos + strlen("Content-Type: ") + 5, 3).c_str (); if("xml" != strContentType) { - AXISTRACE1("SERVER_TRANSPORT_PROCESS_EXCEPTION:content type is not xml", INFO); + AXISTRACE1("SERVER_TRANSPORT_PROCESS_EXCEPTION:content type is not xml", AXIS_INFO); char* pcMessage = new char[256 * sizeof(char)]; strcpy(pcMessage, "Content type is not xml"); THROW_AXIS_TRANSPORT_EXCEPTION2(SERVER_TRANSPORT_PROCESS_EXCEPTION, pcMessage); diff -Naur axis-c-src-1-2-linux/src/transport/axis/HttpTransport.hpp axis-c-src-1-2-linux-vk/src/transport/axis/HttpTransport.hpp --- axis-c-src-1-2-linux/src/transport/axis/HttpTransport.hpp 2004-07-09 07:22:04.000000000 +0000 +++ axis-c-src-1-2-linux-vk/src/transport/axis/HttpTransport.hpp 2004-08-18 16:35:50.292443064 +0000 @@ -180,6 +180,10 @@ */ long m_lTimeoutSeconds; + + // Keep track of 100 HTTP code + bool m_mustReadAgainHTTP; + }; #endif diff -Naur axis-c-src-1-2-linux/src/transport/axis/Receiver.cpp axis-c-src-1-2-linux-vk/src/transport/axis/Receiver.cpp --- axis-c-src-1-2-linux/src/transport/axis/Receiver.cpp 2004-07-09 07:22:04.000000000 +0000 +++ axis-c-src-1-2-linux-vk/src/transport/axis/Receiver.cpp 2004-08-18 16:35:50.295442608 +0000 @@ -41,8 +41,8 @@ { isHttpHeader = m_pTrChannel->getIsHttpHeader(); bodyLength = m_pTrChannel->getBodyLength(); - /* printf("bodyLength:%d\n", bodyLength); */ - /* printf("isHttpHeader:%d\n", isHttpHeader); */ +// printf("bodyLength:%d\n", bodyLength); +// printf("isHttpHeader:%d\n", isHttpHeader); if(isHttpHeader == 1 && bodyLength == 0) return NULL; if (0 == m_BytesRead) @@ -66,7 +66,7 @@ //} //catch(...) //{ - // AXISTRACE1("SERVER_TRANSPORT_RECEPTION_EXCEPTION", CRITICAL); + // AXISTRACE1("SERVER_TRANSPORT_RECEPTION_EXCEPTION", AXIS_CRITICAL); // throw AxisTransportException(SERVER_TRANSPORT_RECEPTION_EXCEPTION); //} } @@ -75,8 +75,8 @@ { bodyLength = m_pTrChannel->getBodyLength(); #ifdef _DEBUG - //printf("m_MsgSize:%d\n", m_MsgSize); - //printf("bodyLength:%d\n", bodyLength); +// printf("m_MsgSize:%d\n", m_MsgSize); +// printf("bodyLength:%d\n", bodyLength); #endif bodyLength -= m_MsgSize; m_pTrChannel->setBodyLength(bodyLength); diff -Naur axis-c-src-1-2-linux/src/wsdd/WSDDDocument.cpp axis-c-src-1-2-linux-vk/src/wsdd/WSDDDocument.cpp --- axis-c-src-1-2-linux/src/wsdd/WSDDDocument.cpp 2004-07-09 07:22:04.000000000 +0000 +++ axis-c-src-1-2-linux-vk/src/wsdd/WSDDDocument.cpp 2004-08-18 16:35:50.299442000 +0000 @@ -58,7 +58,7 @@ /* this enables the access to Deployment object while parsing */ if (AXIS_SUCCESS != parseDocument(pcWSDDFileName)) { - AXISTRACE1("Deployment descripter loading failed", CRITICAL); + AXISTRACE1("Deployment descripter loading failed", AXIS_CRITICAL); return AXIS_FAIL; } return AXIS_SUCCESS; diff -Naur axis-c-src-1-2-linux/src/xml/expat/XMLParserExpat.cpp axis-c-src-1-2-linux-vk/src/xml/expat/XMLParserExpat.cpp --- axis-c-src-1-2-linux/src/xml/expat/XMLParserExpat.cpp 2004-07-09 07:22:04.000000000 +0000 +++ axis-c-src-1-2-linux-vk/src/xml/expat/XMLParserExpat.cpp 2004-08-18 16:35:50.303441392 +0000 @@ -231,7 +231,7 @@ m_pLastEvent = NULL; break; } - return &m_Element; + return &m_Element; case START_PREFIX: if (!(m_pLastEvent->m_NameOrValue.empty())) m_NsStack[m_pLastEvent->m_NameOrValue] = @@ -275,10 +275,10 @@ m_pCurrentBuffer = (char*) XML_GetBuffer(m_Parser, EXPAT_BUFFER_SIZE); if (m_pCurrentBuffer) { - iTransportStatus = m_pInputStream->getBytes(m_pCurrentBuffer, &nChars); + iTransportStatus = m_pInputStream->getBytes(m_pCurrentBuffer, &nChars); if (nChars > 0) { - if (XML_STATUS_ERROR == XML_ParseBuffer(m_Parser, nChars, false)) + if (XML_STATUS_ERROR == XML_ParseBuffer(m_Parser, nChars, false)) m_nStatus = AXIS_FAIL; } if (TRANSPORT_FAILED == iTransportStatus) XML_ParseBuffer(m_Parser, 0, true); --0-1811335244-1093008938=:55599--