1
0
Fork 0
mirror of https://github.com/vanitasvitae/Smack.git synced 2024-11-05 19:55:59 +01:00
Commit graph

2523 commits

Author SHA1 Message Date
Florian Schmaus
e0bc1ccaf2 Fix memory leak in RosterEntry
Roster's INSTANCE map has a weak reference to XMPPConnection, which has
a field of RosterEntry(ies), and RosterEntry has a strong reference to
XMPPConnection resulting in a cycle which is preventing XMPPConnection
from getting gc'ed.

SMACK-659.
2015-04-27 07:27:40 +02:00
Florian Schmaus
f579fb2c77 Throw exception if smack-java7 is loaded on Android 2015-04-25 22:53:46 +02:00
Florian Schmaus
475fed8c51 Fix DeliveryReceiptsManager.autoAddDeliveryReceiptRequests
Must use interceptors instead of sending listeners, as those are
invoked *after* the stanza has been put on the wire. Also use the
correct filter, which excludes ack messages.

Fixes SMACK-656.
2015-04-23 21:31:09 +02:00
Florian Schmaus
062e9ee415 Fix javadoc of pubsub.Item 2015-04-12 18:13:19 +02:00
Florian Schmaus
9a69f992c4 Deprecate SynchronizationPoint.reportFailure()
assert and document that an exception must be set when calling
reportFailure(E).
2015-04-07 08:52:48 +02:00
Florian Schmaus
dabbb40de6 Fix isSmResumptionPossible() returning wrong values
The cases where reversed. Change the condition for better readability.

Also fix int and long handling in the computation of
maxResumptionMillies.

Fixes SMACK-654.
2015-04-07 08:51:03 +02:00
Florian Schmaus
3b6891b0d0 Fix integer overflow if no max resumption time
is specified by client and server.

Fixes SMACK-653.
2015-04-07 08:51:03 +02:00
Florian Schmaus
cca34fd872 First check condition, then remaining wait in SynchronizationPoint
as otherwhise SynchronizationPoint may report NoResponseException when
there was in fact a success or failure reported in case there are
multiple threads waiting for the condition.
2015-04-07 08:51:03 +02:00
Florian Schmaus
83aa6838d9 Use signalAll in SynchronizationPoint
to prevent a thread from not being notified about a change of the state
of the SynchronizationPoint.

If two threads are waiting for a change, which could happen e.g. because
of a connectivity change and one thread does instantShutdown() while the
other handles connectionClosedOnError(), then only one thread, usually
the one handling connectionClosedOnError(), would be notified and
resumed.

Fixes SMACK-652.
2015-04-07 08:51:03 +02:00
Florian Schmaus
57fa631480 Add javadoc to SynchronizationPoint 2015-04-07 08:50:52 +02:00
Florian Schmaus
5597b1ffc0 Handle preceding whitespace in DIGEST-MD5
implementation from smack-sasl-provided.

Fixes SMACK-649.
2015-03-31 10:25:40 +02:00
Florian Schmaus
54cbd9a50a Smack 4.1.1-SNAPSHOT 2015-03-29 12:26:36 +02:00
Florian Schmaus
4bb8aea281 Smack 4.1.0 2015-03-29 12:05:59 +02:00
Florian Schmaus
dbaee174ca Smack 4.1.0-rc6-SNAPSHOT 2015-03-24 17:15:53 +01:00
Florian Schmaus
869c01b91f Smack 4.1.0-rc5 2015-03-24 17:15:53 +01:00
Florian Schmaus
9ac3633612 javadoc: s/packet/stanza/ 2015-03-24 17:15:50 +01:00
Florian Schmaus
164b7c6690 Set localNodeVer after currentCapsVersion is set 2015-03-24 12:05:56 +01:00
Florian Schmaus
49c2c35609 Synchronize SDM methods that change the state
Other Managers, e.g. EntityCapsManager, may be notified if e.g. a
feature is added or removed. While they are notified, the state of SDM
must be consistent, therefore synchronize SDM methods that modify the
state.
2015-03-24 11:59:35 +01:00
Florian Schmaus
130a8216d1 EntityCapsManager must not use CapsVersionAndHash.toString()
as it would return Object.toString(). Instead the entity version string
was required. Use getLocalNodeVer() instead.
2015-03-24 11:59:31 +01:00
Florian Schmaus
451eb4c826 Add missing break statements 2015-03-23 09:52:01 +01:00
Florian Schmaus
5e86db4f80 Substitute 'packet' with 'stanza(/packet)' in javadoc 2015-03-21 09:36:28 +01:00
Florian Schmaus
0ca4e8b72a Add EntityCapsManager to startup classes 2015-03-18 22:05:26 +01:00
lucastucchi
a7616f2a03 Add the possibility to choose reconnection policy
Until now the reconnection used a fixed policy using random
increasing delay as the number of attempts grows. Even if
that policy is still the default one, it is now possible to
select a fixed delay policy that always waits a fixed amount
of time before trying to reconnect
2015-03-18 21:16:32 +01:00
Florian Schmaus
8c0218f560 Smack 4.1.0-rc5-SNAPSHOT 2015-03-18 08:33:10 +01:00
Florian Schmaus
fe102d780e Smack 4.1.0-rc4 2015-03-18 08:23:40 +01:00
Anno van Vliet
3828102651 Move EnhancedDebugger's images to the correct location 2015-03-16 19:59:39 +01:00
Florian Schmaus
79e59028ac Bump gradle-clirr-plugin to 0.2.0 2015-03-12 13:38:15 +01:00
Florian Schmaus
f6ba363843 Always include role in MUCItem if it's set
As not including "role='none'" when kicking a user will result in an
XMPPErrorException. Also there appears to be nothing in XEP-45 which
says "if role is not set, then it defaults to 'none'".
2015-03-11 12:36:15 +01:00
Florian Schmaus
e85c1881d7 Add TypedCloneable 2015-03-10 22:50:48 +01:00
Florian Schmaus
429af3b642 Add VersionManager to startupClasses 2015-03-10 13:51:04 +01:00
Florian Schmaus
d389b4db20 Fix NPE in EntityCapsManager
persistentCache may be null.
2015-03-10 13:22:48 +01:00
Florian Schmaus
92c76d1023 Only reset smSessionId if the stream is no longer resumeable 2015-03-10 13:17:18 +01:00
Florian Schmaus
16cafd0094 Smack 4.1.0-rc4-SNAPSHOT 2015-03-07 21:22:54 +01:00
Florian Schmaus
35e32e0ad2 Smack 4.1.0-rc3 2015-03-07 21:12:42 +01:00
Florian Schmaus
a95d25544c Improve EmbeddedPacketExtension javadoc
parsePacketExtension is deprecated, use parseExtensionElement instead.
2015-03-07 21:12:42 +01:00
Florian Schmaus
745d67a676 Update markdown-gradle-plugin to 1.0.0
and rename documentation links from .html to .md, since
markdown-gradle-plugin will now automatically transfer the links .md to
.html.

Now users can broswe the documentation in their markdown form (e.g. via
github) and via html.

Also add a symlink from README.md to index.md in documentation/.
2015-03-07 21:08:53 +01:00
Florian Schmaus
48aae12ba3 Remove XMPPException from MultiUserChat.sendMessage
as it's not actually thrown.
2015-03-07 20:52:44 +01:00
Florian Schmaus
2db5ebb4b7 Fix BytestreamsProvider: Mode is optional
and defaults to TCP.
2015-03-07 20:51:23 +01:00
Florian Schmaus
9c5b7d263e Include conditionText in XMPPError.toXML() 2015-03-06 09:10:49 +01:00
Florian Schmaus
ed4fa3390f Add XMPPConnection.sendStanza(Stanza)
and deprecate sendPacket().
2015-03-04 21:46:44 +01:00
Florian Schmaus
183af99ffb DeliveryReceipt helper methods take Message as argument
Since it makes only sense for messages to have delivery receipts.
2015-03-04 21:46:40 +01:00
Florian Schmaus
b813e3aa9e Return delivery receipts with the same type as the request
Message delivery receipts now use the same message type as the
corresponding message with the delivery receipt request.
2015-03-04 15:26:20 +01:00
Florian Schmaus
18d9be0099 Add CapsExtensionProviderTest 2015-03-04 13:08:35 +01:00
Florian Schmaus
85a9b07230 Fix MUC participantStatusListeners
Thanks to Anno van Vliet for reporting the issue and proposing the fix.
2015-03-03 17:11:42 +01:00
Florian Schmaus
0279677883 Add support for clirr to the build system 2015-03-03 15:07:33 +01:00
Florian Schmaus
50cf7f42f3 DataListener is no longer a StanzaListener
it's just an IqRequestHandler. So remove the previous code related to it
being a stanza listener.
2015-03-02 16:17:52 +01:00
Anno van Vliet
63fabf78ed Fixed Data IQ packet receiving
Data packets where not received by the InBandByteStream due to a missing
IQRequestHandler

Conflicts:
	smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/ibb/DataListener.java
	smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/ibb/InBandBytestreamManager.java
	smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/ibb/InBandBytestreamSession.java
2015-03-02 16:17:52 +01:00
Florian Schmaus
96bb37f924 Fix counting bug Stream Management implementation
Previously Smack would put messages in the unacknowledgedStanzas queue
after it received the 'enabled' element, when it should do so right
after sending the 'enable' stream element.

Imagine a session where '-->' denotes "received from server" and '<--'
"sent to server"

<-- enable
--> iq roster push set
--> presence some presence
<-- iq roster push result
--> enabled

then Smack would not add the iq roster push result stanza to the
unacknowledgedStanzas queue.

This fixes the issue by initializing the unacknowledgedStanzas queue
when the writer thread encounters a 'Enable' stream element.

The additional 'instanceof' invocation in the writer thread should not
be a big performance issue, since the existing "instanceof Stanza" check
should be the common case and the "instanceof Enable" is an exclusive
alternative to this case.
2015-03-02 16:17:47 +01:00
Florian Schmaus
dde0cfd7f6 Fix incoming file transfers
With bb8dcc9874 the concept if IQ request
handlers was introduced in Smack. This doesn't allow packet/stanza
collectors/listeners to filter for incoming IQ requests. Unfortunately
the file transfer code relied on this being able, so it broke with the
change.

There were two places where the file transfer code was listening for
incoming IQ requests:
- InitationListener(s)
- Negotiator(s)

With this change, we let the InitiationListener signal the existence of
an incoming initation request, send by an IQ of type 'set', using the
newly created EventManager utility.

The negotiator waits for those events to arrive and proceedes as it would
have done when the packet collector was used.
2015-03-02 15:56:26 +01:00
Florian Schmaus
21c0be5e2a Fixed AbstractXMPPConnection.cachedExecutorService
the combination with concurrencyLevel and LinkedBlockingQueue never
worked as intented. The idea was that the cachedExecutorService would
spawn new threads until maximumPoolSize (=concurrencyLevel) is reached,
and then start queing the Runnables.

But this was not the case, since ThreadPoolExecutor does not take into
consideration if the worker threads is busy, i.e. executing a Runnable,
or idle, i.e. waiting for a Runnable.

This means that if a busy Worker would execute a Runnable, which would
block, because it's waiting for an event (e.g. an incoming IQ
request), then the handling of those incoming IQ request would be
queued by ThreadPoolExecutor, because no fewer threads then corePoolSize
are running and the task can be queued (since the LinkedBlockingQueue is
unbounded).
2015-03-02 15:50:13 +01:00