Hi Andy,

Thanks for finding this important bug in the axiom code. I've found the bug
and will correct it shortly. I've gone through your code and there are two
things that I like to point out in your code.

1. You are creating an empty node and passing it to the element_create
method. This leads to a memory leak. Correct code is:

  axiom_node_t *nodeA = NULL;
  axutil_string_t* nodeAString = axutil_string_create
(env,"getParameterValues");
  axiom_element_create_str(env, NULL, nodeAString, ns, &nodeA);

2. You are creating an empty namsespace. This also causes a memory leak. You
should pass NULL instead of this empty namespace.

axiom_element_create_str(env, nodeA, nodeBString, NULL, &nodeB);

Thanks,
Supun..

On Fri, Sep 5, 2008 at 11:30 PM, Dimuthu Gamage <[EMAIL PROTECTED]> wrote:

> Hi,
> Looks like the axiom node created with axutil_string is having problem, I
> too got the same problem with your code, and I tried replacing
> axiom_element_create_str with axiom_element_create and it was working
> correctly.
>
>         axiom_node_t *nodeA = axiom_node_create(env);
>         /*axutil_string_t* nodeAString = axutil_string_create
> (env,"getParameterValues");   */
>         const axis2_char_t *nodeAString = "getParametervalues";
>         axiom_element_create(env, NULL, nodeAString, ns, &nodeA);
>         .....
>
> I think axutil_string or use of axutil_string inside axiom is having a bug.
> Can you please raise an issue on this at
> https://issues.apache.org/jira/browse/AXIS2C
>
> Thanks
> Dimuthu
>
>
>
>
> On Thu, Sep 4, 2008 at 7:13 PM, Andy Karseras <[EMAIL PROTECTED]> wrote:
>
>> The following code illustrates the problem...
>>
>>     void myClient::testMethod()
>>     {
>>         const axis2_char_t *prefix = "cwmp";
>>         const axis2_char_t *uri = "urn:dslforum-org:cwmp-1-0";
>>
>>         axiom_namespace_t *ns = axiom_namespace_create(env, uri, prefix);
>>         axiom_namespace_t *empty_ns = axiom_namespace_create(env, uri,
>> "");
>>
>>         axiom_node_t *nodeA = axiom_node_create(env);
>>         axutil_string_t* nodeAString = axutil_string_create
>> (env,"getParameterValues");
>>         axiom_element_create_str(env, NULL, nodeAString, ns, &nodeA);
>>
>>         axiom_node_t *nodeB = axiom_node_create(env);
>>         axutil_string_t* nodeBString = axutil_string_create
>> (env,"ParameterNames");
>>         axiom_element_create_str(env, nodeA, nodeBString, empty_ns,
>> &nodeB);
>>
>>         axiom_node_t *nameNode = axiom_node_create(env);
>>         axutil_string_t* nameString = axutil_string_create (env, "Name");
>>         axiom_element_create_str(env, nodeB, nameString, empty_ns,
>> &nameNode);
>>
>>         axiom_element_t *ele = (axiom_element_t
>> *)axiom_node_get_data_element( nameNode, env);
>>         axiom_element_set_text( ele, env, "blah", nameNode);
>>
>>         cout << axiom_node_to_string(nodeA,env) << endl;
>>
>>         axiom_node_free_tree(nodeA, env);
>>     }
>>
>> The method is called multiple times with a sleep interval in between and
>> creates the output below.
>> Note the ParameterNames tag for the last two iterations.
>>
>> <cwmp:getParameterValues
>> xmlns:cwmp="urn:dslforum-org:cwmp-1-0"><ParameterNames><Name>blah</Name></ParameterNames></cwmp:getParameterValues>
>> <cwmp:getParameterValues
>> xmlns:cwmp="urn:dslforum-org:cwmp-1-0"><ParameterNames><Name>blah</Name></ParameterNames></cwmp:getParameterValues>
>> <cwmp:getParameterValues
>> xmlns:cwmp="urn:dslforum-org:cwmp-1-0"><ParameterNames><Name/>blah</Name></ParameterNames></cwmp:getParameterValues>
>> <cwmp:getParameterValues xmlns:cwmp="urn:dslforum-org:cwmp-1-0">*
>> <ParameterNames/>*
>> <Name/>blah</Name></ParameterNames></cwmp:getParameterValues>
>> <cwmp:getParameterValues xmlns:cwmp="urn:dslforum-org:cwmp-1-0">*
>> <ParameterNames/>*
>> <Name/>blah</Name></ParameterNames></cwmp:getParameterValues>
>>
>> Is this expected due to my incorrect use of the APIs or is this a bug ?
>>
>> Many thanks.
>>
>>
>>
>>
>>
>> On Thu, Sep 4, 2008 at 7:52 AM, Andy Karseras <[EMAIL PROTECTED]>wrote:
>>
>>> Thanks for your reply.
>>>
>>> It seems that the problem occurs even when I create a new service client
>>> and payload on each time I resend.  Would this be expected ?
>>>
>>>
>>>
>>>
>>> On Wed, Sep 3, 2008 at 9:05 PM, Samisa Abeysinghe <[EMAIL PROTECTED]>wrote:
>>>
>>>> I think this occurs because you are violating the ownership rules with
>>>> OM. Once the payload is passed in, the engine takes over the ownership of
>>>> the node and you are not supposed to do anything with the payload
>>>> afterwards.
>>>>
>>>> Thanks,
>>>> Samisa...
>>>>
>>>> Andy Karseras wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> I raised this problem in July and thought that it had been resolved (by
>>>>> doing proper clean-up), although it is now re-occurring.
>>>>>
>>>>> I am seeing a close tag being created when there shouldn't be.
>>>>>
>>>>> The incorrect message content is as follows...
>>>>>
>>>>> <cwmp:getParameterValues xmlns:cwmp="urn:dslforum-org:cwmp-1-0">
>>>>>    <ParameterNames>
>>>>>        *<Name/>**TempAgent.</Name>
>>>>>    </ParameterNames>
>>>>> </cwmp:getParameterValues>
>>>>>
>>>>>
>>>>> I am sending the same message multiple times to the server and the
>>>>> error occurs on the third iteration (3rd time the message is sent) so am
>>>>> assuming that I am not doing proper clean-up after each message is created
>>>>> and then sent.
>>>>>
>>>>> My questions as follows...
>>>>> a) Has anybody seen this before ?
>>>>>
>>>>> b) Will calling axiom_node_free_tree on nodeA also clean-up nodeB in
>>>>> the following example ?
>>>>>    axiom_node_t *nodeB= axiom_node_get_first_child(nodeA, env);
>>>>>
>>>>> c) Will a node created to be used in axis2_svc_client_add_header, be
>>>>> cleaned-up by axis2_svc_client_free ?
>>>>>
>>>>> d) Is there any other info I can provide to clarify or help explain the
>>>>> problem ?
>>>>>
>>>>> Many thanks.
>>>>>
>>>>>
>>>>> Andy
>>>>>
>>>>> ------------------------------------------------------------------------
>>>>>
>>>>>
>>>>> No virus found in this incoming message.
>>>>> Checked by AVG - http://www.avg.com Version: 8.0.169 / Virus Database:
>>>>> 270.6.15/1649 - Release Date: 9/3/2008 7:15 AM
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Samisa Abeysinghe Director, Engineering; WSO2 Inc.
>>>>
>>>> http://www.wso2.com/ - "The Open Source SOA Company"
>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>
>>>>
>>>
>>
>
>
> --
> Thanks,
> Dimuthu Gamage
>
> http://www.dimuthu.org
> http://www.wso2.org
>



-- 
Software Engineer, WSO2 Inc

Reply via email to