0
votes

I must send a custom IQ from eva@pc377/Smack using my own namespace http://www.test.com/test to a specific user bob@pc377/Smack. When I use OpenFire everything works fine, but Ejabberd does not forward this IQ to the user. In the log file I see, that the IQ is received by the server, internally dispatched to the Session Manager, but not forwarded to the user. If I send a Message, it is forwarded correctly. I am using a Java-based Smack-Client.

Does Ejabberd require a specific configuration for forwarding custom IQs?

    =INFO REPORT==== 2013-09-11 13:55:36 ===
    D(<0.658.0>:ejabberd_receiver:320) : Received XML on stream = 
    "<iq id=\"0j8w6-8\" to=\"bob@pc377/Smack\" type=\"set\">
        <ts:register-request xmlns:ts=\"http://www.test.com/test\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">
           <ts:node-id>550e8400-e29b-11d4-a716-446655440000</ts:node-id>
           <ts:properties>
              <ts:path>.</ts:path>
              <ts:delivery-mode>1</ts:delivery-mode>
           </ts:properties>
       </ts:register-request>
    </iq>"


    =INFO REPORT==== 2013-09-11 13:55:36 ===
    D(<0.659.0>:ejabberd_router:313) : route
from {jid,"eva","pc377","Smack","eva","pc377","Smack"}
to {jid,"bob","pc377","Smack","bob","pc377","Smack"}
packet {xmlelement,"iq",
               [{"id","0j8w6-8"},
                {"to","bob@pc377/Smack"},
                {"type","set"}],
               [{xmlelement,"ts:register-request",
                    [{"xmlns:ts","http://www.test.com/test"},
                     {"xmlns:xs","http://www.w3.org/2001/XMLSchema"},
                     {"xmlns:xsi",
                      "http://www.w3.org/2001/XMLSchema-instance"}],
                    [{xmlelement,"ts:node-id",[],
                         [{xmlcdata,
                              <<"550e8400-e29b-11d4-a716-446655440000">>}]},
                     {xmlelement,"ts:properties",[],
                         [{xmlelement,"ts:path",[],[{xmlcdata,<<".">>}]},
                          {xmlelement,"ts:delivery-mode",[],
                              [{xmlcdata,<<"1">>}]}]}]}]}


    =INFO REPORT==== 2013-09-11 13:55:36 ===
    D(<0.659.0>:ejabberd_local:300) : local route
from {jid,"eva","pc377","Smack","eva","pc377","Smack"}
to {jid,"bob","pc377","Smack","bob","pc377","Smack"}
packet {xmlelement,"iq",
                       [{"id","0j8w6-8"},{"to",[...]},{[...],...}],
                       [{xmlelement,[...],...}]}


    =INFO REPORT==== 2013-09-11 13:55:36 ===
    D(<0.659.0>:ejabberd_sm:411) : session manager
from {jid,"eva","pc377","Smack","eva","pc377","Smack"}
to {jid,"bob","pc377","Smack","bob","pc377","Smack"}
packet {xmlelement,"iq",
                       [{"id","0j8w6-8"},{"to",[...]},{[...],...}],
                       [{xmlelement,[...],...}]}


    =INFO REPORT==== 2013-09-11 13:55:36 ===
    D(<0.659.0>:ejabberd_sm:510) : sending to process <0.656.0>
1

1 Answers

0
votes

Try it with simpler XML:

<iq id="0j8w6-8" to="bob@pc377/Smack" type="set">
    <register-request xmlns="http://www.test.com/test">
       <node-id>550e8400-e29b-11d4-a716-446655440000</node-id>
       <properties>
          <path>.</path>
          <delivery-mode>1</delivery-mode>
       </properties>
   </register-request>
</iq>

If that doesn't work, try renaming register-request and delivery-mode to remove the dash. Neither of these changes should be required, but either would help the ejabberd team find a bug.