[jdev] Need help
Remy HAREL
remy.harel at GICM.FR
Wed May 26 08:04:12 CDT 2004
Matthias Wimmer wrote:
>Hi Remy!
>
>Remy HAREL schrieb am 2004-05-26 12:26:42:
>
>
>>Ok Mathias, but I don't understand how to use it. In fact, imagine I (
>>i at gabber) have a session opened... the current "sess" in c2s.c,
>>c2s_client_sx_callback. I 'm gonna send a packet to you ( you at gabber ),
>>juste before the sm_packet. the full jid of the session "sess" is mine,
>>i at gabber. If I sent a message to you, I should be able to read somewhere
>>( in nad I suppose ) that this message is for "you at gabber", no ?
>>
>>
>
>Sure you could ... but you realy SHOULD NOT do this. The task of c2s is
>to authenticate you and to forward messages to your own session manager.
>
>All processing of these messages should be done in the session manager
>(sm) then.
>
>
Thanks Matthias, I know the role of the c2s, but since I'm writting a
distributed and high available jabberd2 server version, I have to know
for each jabber user I communicate with the # of the message sent (and
received so... ) to this guy. XML messages from c2s have more datas, to
be interpreted by something else ( like multiple routers ). This in
order to erase the SPOF we have due to a unique router.
>
>
>>How should I call nad_find_attr to do what I want ? I've tried
>>something like :
>>
>>attr_tmp = nad_find_attr(nad,0,-1,"to",NULL); // here value is '-1'
>>recipient = (char*) malloc(sizeof(char) * NAD_AVAL_T(nad, attr_tmp);
>>recipient = (char*)NAD_AVAL(nad, attr_tmp); // crash, due to
>>attr_tmp's value
>>
>>
>
>you have to tell nad_find_attr the handle of the element where you want
>to search for the attribute ... there is nothing like a global search
>for an attribute in a nad (AFAIK). So start with nad_find_elem ... you
>get back a handle for the element which you can use in nad_find_attr.
>
>
Ok, Im' gonna try this....
>Also don't forget the handling of namespaces!
>
>
oops, thanks
>also your assignment won't work ... you only would produce a memory leak
>... you are allocating memory and you throgh away the pointer to it in
>the line afterwards ... your second assignment does not copy the string
>in C but only assigns a pointer. You have to use something like the
>following for the second line:
>sprintf(recipient, "%.*s", NAD_AVAL_L(nad, attr_tmp), NAD_AVAL(nad, attr_tmp));
>
>
of course, you're right, snprintf... I used java so long that somme
reflexes are still here ! ;)
>Another bug you have in your code is that you have to reserve memory for
>the terminating zero byte in the string as well, not only for the pure
>content of it.
>
>
-> yep, thx
>
>
>>due to attr_tmp which value's -1; nad_find_attr didn't find the
>>attribute "to". Moreover, this attribute value isn't "you at gabber" but
>>just "gabber"... so only the domain. I saw this by using tcpdump.
>>
>>
>
>If you are searching for anything in XML you always have to check if you
>got something back ... you can never expect all clients sending correct
>XML streams.
>
>
>
Yes, don't worry, this is just a little part of my code...for exemple.
>Tot kijk
>
Best regards i guess ?? ;)
so best regards matthias, and one more time thx
> Matthias
>
>
--
Remy Harel - remy.harel at gicm.fr
G.I.C.M - Distributed Systems & IT
Linux Registered User #224740
More information about the JDev
mailing list