On messaging from server to all active clients of one user the sender-address is not correctly written.
This is the broadcast-function (serverside):
private void sendAllSessions(final StringBuilder message, final Entity sender,
final ServerRuntimeContext serverContext, EMailAddress to) {
EntityImpl recipient = new EntityImpl(to.getLocalName().getLocalName(), to.getDomain().getDomainName(), null);
Stanza build = createStanza(message, sender, recipient);
for (SessionContext sessionContext : serverContext.getResourceRegistry().getSessions(recipient)) {
SessionState state = sessionContext.getState();
SessionStateHolder stateHolder = new SessionStateHolder();
stateHolder.setState(state);
Stanza stanza = new MessageStanza(build);
LOG.severe("Send xmpp stanza: " + stanza + " from " + stanza.getFrom());
serverContext.getStanzaProcessor().processStanza(serverContext, sessionContext, stanza, stateHolder);
}
}
private Stanza createStanza(final StringBuilder strb, final Entity sender, final EntityImpl recipient) {
try {
LOG.severe("Create xmpp stanza from " + sender + " (" + sender.getFullQualifiedName() + ") to recipient "
+ recipient + " (" + recipient.getFullQualifiedName() + ")!");
StanzaBuilder sb = StanzaBuilder.createMessageStanza(sender, recipient, MessageStanzaType.HEADLINE, "html",
strb.toString());
Stanza build = sb.build();
return build;
} catch (RuntimeException e) {
StanzaBuilder sb = StanzaBuilder.createMessageStanza(sender, recipient, MessageStanzaType.NORMAL, null,
strb.toString());
Stanza build = sb.build();
return build;
}
}
This is the logging (serverside):
07-Oct-2021 12:43:58.220 SEVERE [http-nio-80-exec-147] xx.DefaultChat.createStanza Create xmpp stanza from [email protected] ([email protected]) to recipient [email protected] ([email protected])!
07-Oct-2021 12:43:58.222 SEVERE [http-nio-80-exec-147] xx.DefaultChat.sendAllSessions Send xmpp stanza: message.body.Thanks, please wait... from [email protected]
07-Oct-2021 12:43:58.229 FINE [NioProcessor-2] org.apache.vysper.mina.StanzaLoggingFilter.messageSent ><message xmlns="jabber:client" to="[email protected]" from="example.com" type="error"><body>Thanks, please wait...</body><error type="modify"><unknown-sender xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"></unknown-sender></error></message>
The xml human readable is (from server to client):
<message xmlns="jabber:client" to="[email protected]"
from="example.com" type="error">
<body>Thanks, please wait...</body>
<error type="modify">
<unknown-sender
xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"></unknown-sender>
</error>
</message>
My question is why is the XML-Stanza pointing out that the sender (from-field) is the domain only?
After some debugging I noticed this lines (in org.apache.vysper.xmpp.protocol.ProtocolWorker):
So I added a line:
Now it works great: