Skip to content

Commit 067e575

Browse files
authored
avoid xmlstring builder toString (#1118)
* chore: Update jitsi-xmpp-extensions. * log: Remove System.err logs. * fix: Avoid using XmlStringBuilder.toString.
1 parent ef49650 commit 067e575

File tree

24 files changed

+95
-64
lines changed

24 files changed

+95
-64
lines changed

jicofo-common/src/main/java/org/jitsi/impl/protocol/xmpp/log/PacketDebugger.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import edu.umd.cs.findbugs.annotations.*;
1919
import org.jitsi.utils.logging2.*;
20+
import org.jitsi.xmpp.util.*;
2021
import org.jivesoftware.smack.*;
2122
import org.jivesoftware.smack.debugger.*;
2223
import org.jivesoftware.smack.packet.*;
@@ -66,13 +67,17 @@ public PacketDebugger(XMPPConnection connection, @NonNull String id)
6667
@Override
6768
public void onIncomingStreamElement(TopLevelStreamElement streamElement)
6869
{
69-
logger.debug(() -> "RCV PKT (" + id + "): " + streamElement.toXML());
70+
logger.debug(
71+
() -> "RCV PKT (" + id + "): " + XmlStringBuilderUtil.Companion.toStringOpt(streamElement.toXML())
72+
);
7073
}
7174

7275
@Override
7376
public void onOutgoingStreamElement(TopLevelStreamElement streamElement)
7477
{
75-
logger.debug(() -> "SENT PKT (" + id + "): " + streamElement.toXML());
78+
logger.debug(
79+
() -> "SENT PKT (" + id + "): " + XmlStringBuilderUtil.Companion.toStringOpt(streamElement.toXML())
80+
);
7681
}
7782

7883
// It's fine to do non-atomic as it's only 1 thread doing write operation

jicofo-common/src/main/java/org/jitsi/jicofo/xmpp/BaseBrewery.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.jetbrains.annotations.*;
2121
import org.jitsi.jicofo.xmpp.muc.*;
2222
import org.jitsi.utils.logging2.*;
23+
import org.jitsi.xmpp.util.*;
2324
import org.jivesoftware.smack.*;
2425
import org.jivesoftware.smack.packet.*;
2526
import org.jxmpp.jid.*;
@@ -303,7 +304,7 @@ protected void processInstanceStatusChanged(@NotNull EntityFullJid jid, @NotNull
303304
instance.status = extension;
304305
}
305306

306-
logger.debug("New presence from " + jid + ": " + extension.toXML());
307+
logger.debug(() -> "New presence from " + jid + ": " + XmlStringBuilderUtil.toStringOpt(extension));
307308
onInstanceStatusChanged(jid, extension);
308309
}
309310

jicofo-common/src/main/kotlin/org/jitsi/jicofo/xmpp/Util.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
package org.jitsi.jicofo.xmpp
1919

2020
import org.jitsi.utils.logging2.LoggerImpl
21+
import org.jitsi.xmpp.util.XmlStringBuilderUtil.Companion.toStringOpt
2122
import org.jivesoftware.smack.AbstractXMPPConnection
2223
import org.jivesoftware.smack.SmackException
2324
import org.jivesoftware.smack.XMPPConnection
@@ -61,9 +62,9 @@ fun parseJidFromClientProxyJid(
6162
fun XMPPConnection.tryToSendStanza(stanza: Stanza) = try {
6263
sendStanza(stanza)
6364
} catch (e: SmackException.NotConnectedException) {
64-
logger.error("No connection - unable to send packet: " + stanza.toXML(), e)
65+
logger.error("No connection - unable to send packet: ${stanza.toXML().toStringOpt()}", e)
6566
} catch (e: InterruptedException) {
66-
logger.error("Failed to send packet: " + stanza.toXML().toString(), e)
67+
logger.error("Failed to send packet: ${stanza.toXML().toStringOpt()}", e)
6768
}
6869

6970
@Throws(SmackException.NotConnectedException::class)

jicofo-common/src/main/kotlin/org/jitsi/jicofo/xmpp/jingle/JingleSession.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import org.jitsi.xmpp.extensions.jingle.JinglePacketFactory
3636
import org.jitsi.xmpp.extensions.jingle.Reason
3737
import org.jitsi.xmpp.extensions.jingle.RtpDescriptionPacketExtension
3838
import org.jitsi.xmpp.extensions.jitsimeet.JsonMessageExtension
39+
import org.jitsi.xmpp.util.XmlStringBuilderUtil.Companion.toStringOpt
3940
import org.jivesoftware.smack.AbstractXMPPConnection
4041
import org.jivesoftware.smack.SmackException
4142
import org.jivesoftware.smack.packet.ExtensionElement
@@ -143,7 +144,7 @@ class JingleSession(
143144
val response = if (error == null) {
144145
IQ.createResultIQ(iq)
145146
} else {
146-
logger.info("Returning error: request=${iq.toXML()}, error=${error.toXML()} ")
147+
logger.info("Returning error: request=${iq.toStringOpt()}, error=${error.toStringOpt()} ")
147148
IQ.createErrorResponse(iq, error)
148149
}
149150
connection.tryToSendStanza(response)
@@ -207,7 +208,7 @@ class JingleSession(
207208
return if (response?.type == IQ.Type.result) {
208209
true
209210
} else {
210-
logger.error("Unexpected response to transport-replace: ${response?.toXML()}")
211+
logger.error("Unexpected response to transport-replace: ${response?.toStringOpt()}")
211212
false
212213
}
213214
}

jicofo-common/src/main/kotlin/org/jitsi/jicofo/xmpp/muc/ChatRoomImpl.kt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import org.jitsi.utils.event.EventEmitter
3131
import org.jitsi.utils.event.SyncEventEmitter
3232
import org.jitsi.utils.logging2.createLogger
3333
import org.jitsi.utils.observableWhenChanged
34+
import org.jitsi.xmpp.util.XmlStringBuilderUtil.Companion.toStringOpt
3435
import org.jivesoftware.smack.PresenceListener
3536
import org.jivesoftware.smack.SmackException
3637
import org.jivesoftware.smack.XMPPConnection
@@ -309,7 +310,7 @@ class ChatRoomImpl(
309310
try {
310311
val reply = xmppProvider.xmppConnection.sendIqAndGetResponse(admin)
311312
if (reply == null || reply.type != IQ.Type.result) {
312-
logger.warn("Failed to grant ownership: ${reply?.toXML() ?: "timeout"}")
313+
logger.warn("Failed to grant ownership: ${reply?.toString() ?: "timeout"}")
313314
}
314315
} catch (e: SmackException.NotConnectedException) {
315316
logger.warn("Failed to grant ownership: XMPP disconnected")
@@ -505,15 +506,15 @@ class ChatRoomImpl(
505506
*/
506507
override fun processPresence(presence: Presence?) {
507508
if (presence == null || presence.error != null) {
508-
logger.warn("Unable to handle packet: ${presence?.toXML()}")
509+
logger.warn("Unable to handle packet: ${presence?.toXML()?.toStringOpt()}")
509510
return
510511
}
511-
logger.trace { "Presence received ${presence.toXML()}" }
512+
logger.trace { "Presence received ${presence.toXML().toStringOpt()}" }
512513

513514
// Should never happen, but log if something is broken
514515
val myOccupantJid = this.myOccupantJid
515516
if (myOccupantJid == null) {
516-
logger.error("Processing presence when myOccupantJid is not set: ${presence.toXML()}")
517+
logger.error("Processing presence when myOccupantJid is not set: ${presence.toXML().toStringOpt()}")
517518
}
518519
if (myOccupantJid != null && myOccupantJid.equals(presence.from)) {
519520
processOwnPresence(presence)

jicofo-selector/src/main/java/org/jitsi/jicofo/bridge/JvbDoctor.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.jitsi.utils.logging2.*;
2424
import org.jitsi.xmpp.extensions.health.*;
2525

26+
import org.jitsi.xmpp.util.*;
2627
import org.jivesoftware.smack.*;
2728
import org.jivesoftware.smack.packet.*;
2829

@@ -236,13 +237,16 @@ protected void doHealthCheck()
236237
|| StanzaError.Condition.service_unavailable.equals(condition))
237238
{
238239
// Health check failure
239-
logger.warn("Health check failed for: " + bridge + ": " + error.toXML().toString());
240+
logger.warn(
241+
"Health check failed for: " + bridge + ": " + XmlStringBuilderUtil.toStringOpt(error)
242+
);
240243
listener.healthCheckFailed(bridge.getJid());
241244
}
242245
else
243246
{
244247
logger.error(
245-
"Unexpected error returned by the bridge: " + bridge + ", err: " + response.toXML());
248+
"Unexpected error returned by the bridge: " + bridge + ", err: "
249+
+ XmlStringBuilderUtil.toStringOpt(response));
246250
}
247251
}
248252
}

jicofo-selector/src/main/kotlin/org/jitsi/jicofo/bridge/colibri/Colibri2Session.kt

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ import org.jitsi.xmpp.extensions.colibri2.Transport
4343
import org.jitsi.xmpp.extensions.jingle.DtlsFingerprintPacketExtension
4444
import org.jitsi.xmpp.extensions.jingle.ExtmapAllowMixedPacketExtension
4545
import org.jitsi.xmpp.extensions.jingle.IceUdpTransportPacketExtension
46+
import org.jitsi.xmpp.util.XmlStringBuilderUtil.Companion.toStringOpt
4647
import org.jivesoftware.smack.StanzaCollector
4748
import org.jivesoftware.smack.packet.ErrorIQ
4849
import org.jivesoftware.smack.packet.IQ
@@ -110,7 +111,7 @@ class Colibri2Session(
110111
participant.medias.forEach { endpoint.addMedia(it) }
111112
request.addEndpoint(endpoint.build())
112113

113-
logger.trace { "Sending allocation request for ${participant.id}: ${request.build().toXML()}" }
114+
logger.trace { "Sending allocation request for ${participant.id}: ${request.build().toStringOpt()}" }
114115
created = true
115116
return xmppConnection.createStanzaCollectorAndSend(request.build())
116117
}
@@ -259,7 +260,7 @@ class Colibri2Session(
259260
relayId: String
260261
) {
261262
logger.info("Setting relay transport for $relayId")
262-
logger.debug { "Setting relay transport for $relayId: ${transport.toXML()}" }
263+
logger.debug { "Setting relay transport for $relayId: ${transport.toStringOpt()}" }
263264
relays[relayId]?.setTransport(transport)
264265
?: throw IllegalStateException("Relay $relayId doesn't exist (bridge=${this.relayId}")
265266
}
@@ -292,10 +293,10 @@ class Colibri2Session(
292293
* failure.
293294
*/
294295
private fun sendRequest(iq: IQ, name: String) {
295-
logger.debug { "Sending $name request: ${iq.toXML()}" }
296+
logger.debug { "Sending $name request: ${iq.toStringOpt()}" }
296297
xmppConnection.sendIqAndHandleResponseAsync(iq) {
297298
when (it) {
298-
is ConferenceModifiedIQ -> logger.debug { "Received $name response: ${it.toXML()}" }
299+
is ConferenceModifiedIQ -> logger.debug { "Received $name response: ${it.toStringOpt()}" }
299300
null -> logger.info("$name request timed out. Ignoring.")
300301
else -> {
301302
if (it is ErrorIQ) {
@@ -313,14 +314,14 @@ class Colibri2Session(
313314
val reInvite = reason == Colibri2Error.Reason.UNKNOWN_ENDPOINT && endpointId != null
314315
if (reInvite) {
315316
logger.warn(
316-
"Endpoint [$endpointId] is not found, session failed: ${it.toXML()}, " +
317-
"request was: ${iq.toXML()}"
317+
"Endpoint [$endpointId] is not found, session failed: ${it.toStringOpt()}, " +
318+
"request was: ${iq.toStringOpt()}"
318319
)
319320
colibriSessionManager.endpointFailed(endpointId!!)
320321
return@sendIqAndHandleResponseAsync
321322
}
322323
}
323-
logger.error("Received error response for $name, session failed: ${it.toXML()}")
324+
logger.error("Received error response for $name, session failed: ${it.toStringOpt()}")
324325
colibriSessionManager.sessionFailed(this@Colibri2Session)
325326
}
326327
}
@@ -367,22 +368,22 @@ class Colibri2Session(
367368
/** Send a request to allocate a new relay, and submit a task to wait for a response. */
368369
internal fun start(initialParticipants: List<ParticipantInfo>) {
369370
val request = buildCreateRelayRequest(initialParticipants)
370-
logger.trace { "Sending create relay: ${request.toXML()}" }
371+
logger.trace { "Sending create relay: ${request.toStringOpt()}" }
371372

372373
xmppConnection.sendIqAndHandleResponseAsync(request) { response ->
373374
// Wait for a response to the relay allocation request. When a response is received, parse the contained
374375
// transport and forward it to the associated [Relay] for the remote side via [colibriSessionManager]
375-
logger.trace { "Received response: ${response?.toXML()}" }
376+
logger.trace { "Received response: ${response?.toStringOpt()}" }
376377
if (response !is ConferenceModifiedIQ) {
377-
logger.error("Received error: ${response?.toXML() ?: "timeout"}")
378+
logger.error("Received error: ${response?.toStringOpt() ?: "timeout"}")
378379
colibriSessionManager.sessionFailed(this@Colibri2Session)
379380
return@sendIqAndHandleResponseAsync
380381
}
381382

382383
// TODO: We just assume that the response has a single [Colibri2Relay].
383384
val transport = response.relays.firstOrNull()?.transport
384385
?: run {
385-
logger.error("No transport in response: ${response.toXML()}")
386+
logger.error("No transport in response: ${response.toStringOpt()}")
386387
colibriSessionManager.sessionFailed(this@Colibri2Session)
387388
return@sendIqAndHandleResponseAsync
388389
}

jicofo-selector/src/main/kotlin/org/jitsi/jicofo/bridge/colibri/ColibriV2SessionManager.kt

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ import org.jitsi.xmpp.extensions.colibri2.Colibri2Error
4242
import org.jitsi.xmpp.extensions.colibri2.ConferenceModifiedIQ
4343
import org.jitsi.xmpp.extensions.colibri2.InitialLastN
4444
import org.jitsi.xmpp.extensions.jingle.IceUdpTransportPacketExtension
45+
import org.jitsi.xmpp.util.XmlStringBuilderUtil.Companion.toStringOpt
4546
import org.jivesoftware.smack.AbstractXMPPConnection
4647
import org.jivesoftware.smack.StanzaCollector
4748
import org.jivesoftware.smack.packet.ErrorIQ
@@ -359,7 +360,7 @@ class ColibriV2SessionManager(
359360
val response: IQ?
360361
try {
361362
response = stanzaCollector.nextResult()
362-
logger.trace { "Received response: ${response?.toXML()}" }
363+
logger.trace { "Received response: ${response?.toStringOpt()}" }
363364
} finally {
364365
stanzaCollector.cancel()
365366
}
@@ -435,13 +436,13 @@ class ColibriV2SessionManager(
435436
Colibri2Error.ELEMENT,
436437
Colibri2Error.NAMESPACE
437438
)?.reason
438-
logger.info("Received error response: ${response.toXML()}")
439+
logger.info("Received error response: ${response.toStringOpt()}")
439440
when (response.error?.condition) {
440441
bad_request -> {
441442
// Most probably we sent a bad request.
442443
// If we flag the bridge as non-operational we may disrupt other conferences.
443444
// If we trigger a re-invite we may cause the same error repeating.
444-
throw ColibriAllocationFailedException("Bad request: ${response.error?.toXML()?.toString()}", false)
445+
throw ColibriAllocationFailedException("Bad request: ${response.error?.toStringOpt()}", false)
445446
}
446447
item_not_found -> {
447448
if (reason == Colibri2Error.Reason.CONFERENCE_NOT_FOUND) {
@@ -460,7 +461,7 @@ class ColibriV2SessionManager(
460461
if (reason == null) {
461462
// An error NOT coming from the bridge.
462463
throw ColibriAllocationFailedException(
463-
"XMPP error: ${response.error?.toXML()}",
464+
"XMPP error: ${response.error?.toStringOpt()}",
464465
true
465466
)
466467
} else if (reason == Colibri2Error.Reason.CONFERENCE_ALREADY_EXISTS) {
@@ -473,7 +474,7 @@ class ColibriV2SessionManager(
473474
// we can't expire a conference without listing its individual endpoints and we think there
474475
// were none.
475476
// We remove the bridge from the conference (expiring it) and re-invite the participants.
476-
throw ColibriAllocationFailedException("Colibri error: ${response.error?.toXML()}", true)
477+
throw ColibriAllocationFailedException("Colibri error: ${response.error?.toStringOpt()}", true)
477478
}
478479
}
479480
service_unavailable -> {
@@ -489,7 +490,7 @@ class ColibriV2SessionManager(
489490
}
490491
else -> {
491492
session.bridge.isOperational = false
492-
throw ColibriAllocationFailedException("Error: ${response.error?.toXML()}", true)
493+
throw ColibriAllocationFailedException("Error: ${response.error?.toStringOpt()}", true)
493494
}
494495
}
495496
}
@@ -618,7 +619,7 @@ class ColibriV2SessionManager(
618619
relayId: String
619620
) {
620621
logger.info("Received transport from $session for relay $relayId")
621-
logger.debug { "Received transport from $session for relay $relayId: ${transport.toXML()}" }
622+
logger.debug { "Received transport from $session for relay $relayId: ${transport.toStringOpt()}" }
622623
synchronized(syncRoot) {
623624
// It's possible a new session was started for the same bridge.
624625
if (!sessions.containsKey(session.bridge.relayId) || sessions[session.bridge.relayId] != session) {

jicofo/src/main/java/org/jitsi/jicofo/conference/ParticipantInviteRunnable.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import org.jitsi.xmpp.extensions.jingle.JingleUtils;
3434
import org.jitsi.xmpp.extensions.jitsimeet.*;
3535
import org.jitsi.utils.logging2.*;
36+
import org.jitsi.xmpp.util.*;
3637
import org.jivesoftware.smack.*;
3738
import org.jivesoftware.smack.packet.*;
3839
import org.jxmpp.jid.*;
@@ -187,7 +188,9 @@ private void doRun()
187188
}
188189
else
189190
{
190-
logger.warn("Failed to convert ContentPacketExtension to Media: " + content.toXML());
191+
logger.warn(
192+
"Failed to convert ContentPacketExtension to Media: "
193+
+ XmlStringBuilderUtil.toStringOpt(content));
191194
}
192195
});
193196
// This makes the bridge signal its private host candidates. We enable them for backend components, because

jicofo/src/main/java/org/jitsi/jicofo/jibri/JibriSession.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.jitsi.xmpp.extensions.jibri.JibriIq.*;
2626
import org.jetbrains.annotations.*;
2727
import org.jitsi.utils.logging2.*;
28+
import org.jitsi.xmpp.util.*;
2829
import org.jivesoftware.smack.*;
2930
import org.jivesoftware.smack.packet.*;
3031
import org.jxmpp.jid.*;
@@ -351,7 +352,7 @@ synchronized public void stop(Jid initiator)
351352
stopRequest.setAction(JibriIq.Action.STOP);
352353
stopRequest.setSessionId(this.sessionId);
353354

354-
logger.info("Trying to stop: " + stopRequest.toXML());
355+
logger.info("Trying to stop: " + XmlStringBuilderUtil.toStringOpt(stopRequest));
355356

356357
SmackFuture<IQ, Exception> future =
357358
jibriDetector.getXmppConnection().sendIqRequestAsync(stopRequest, 60000);
@@ -366,7 +367,7 @@ synchronized public void stop(Jid initiator)
366367
{
367368
logger.error(
368369
"Unexpected response to stop iq: "
369-
+ (stanza != null ? stanza.toXML() : "null"));
370+
+ (stanza != null ? XmlStringBuilderUtil.toStringOpt(stanza) : "null"));
370371

371372
JibriIq error = new JibriIq();
372373

@@ -428,7 +429,7 @@ private void processJibriIqFromJibri(JibriIq iq)
428429
JibriIq.Status status = iq.getStatus();
429430
if (!JibriIq.Status.UNDEFINED.equals(status))
430431
{
431-
logger.info("Updating status from JIBRI: " + iq.toXML() + " for " + roomName);
432+
logger.info("Updating status from JIBRI: " + XmlStringBuilderUtil.toStringOpt(iq) + " for " + roomName);
432433

433434
handleJibriStatusUpdate(iq.getFrom(), status, iq.getFailureReason(), iq.getShouldRetry());
434435
}
@@ -535,7 +536,7 @@ private void sendJibriStartIq(final Jid jibriJid)
535536
}
536537
if (!(reply instanceof JibriIq))
537538
{
538-
logger.error("Unexpected response to start request: " + reply.toXML());
539+
logger.error("Unexpected response to start request: " + XmlStringBuilderUtil.toStringOpt(reply));
539540

540541
throw new StartException.UnexpectedResponse();
541542
}
@@ -549,8 +550,7 @@ private void sendJibriStartIq(final Jid jibriJid)
549550
if (!isPendingResponse(jibriIq))
550551
{
551552
logger.error(
552-
"Unexpected status received in response to the start IQ: "
553-
+ jibriIq.toXML());
553+
"Unexpected status received in response to the start IQ: " + XmlStringBuilderUtil.toStringOpt(jibriIq));
554554

555555
throw new StartException.UnexpectedResponse();
556556
}

0 commit comments

Comments
 (0)