- All of the core functionality has moved into Net::XMPP.
It provides the connection, messages, iq, and presence.
Net::Jabber now just provides the extensions that the
JEPs define and that are truly Jabber and not XMPP.
- Added initial support for XMPP 1.0 via XML::Stream 1.18.
- Locked version of XML::Stream to 1.18.
- Changed connectiontimeout to just timeout in the Connect
- Hey, here's a good idea. Instead of copying the function
hash out of each namespace why not just use a refrence...
duh... This might make things a little faster and use a
smidge less memory. Just a little thought.
- Fixed a taint problem with an eval and the xmlns read from
- Fixed some -w warnings.
- Updated client test to user newer methods and create the
- Added password to MUCJoin.
- Fixed typo in DefineNamespace.
- Added Tree Transfer (JEP-105)
- Added PubSub (JEP-60)
- Added documentation for most of the below.
- Added in a basic basic support for SOAP (JEP-72). You can
dump in rawxml and get it back out.
- Looking into using contants for the namespaces, but they
don't work in hashes. =(
- Removed jabber:x:sxpm (it was never used).
- Added initial (low level) support for Commands (JEP-50).
- Added initial (low level) support for FNeg (JEP-20),
Disco (JEP-30), Bytestream (JEP-65), SI (JEP-95), and
- Made Client, Component, and Server inherit from Protocol
instead of AUTOLOADing. Why didn't I do this in the
- Added function RosterRequest to let the user handle processing
the roster in their own callback and not return a hash.
- Added function PresenceDBClear that will clear out the
- Added check to see if Process generated an error, and then
was called again (bad thing).
- Moved Process into Client.pm, Component.pm, and Server.pm.
- Locked version of XML::Stream to 1.17.
- Fixed typos in the Protocol help.
- Fixed bug in XPathDefined which caused the main iq callback
function to not work. Show stopper bug.
- Fixed iq:time test.
- Update examples/client scripts to include an xpath based
- Added support for XPath based callbacks.
- Updated x:data to match the call for experience.
- Requires perl 5.6 in an attempt to get Unicode support.
- Added finer callback support for presence and message
based on type.
- Minor tweak to NOT remove an unknown xmlns packet (duh...)
- Fixed bug in JID.
- Updated DefineNamespace to handle most old style, and all
- Locked version of XML::Stream to 1.16.
- Major recore due to XML::Stream::Node and XPath.
- Moved from XML::Stream::Hash to XML::Stream::Node.
- Fixed XDB Reply error.
- Uninitialized value round up.
- Changed to a more sane version scheme.
- Locked version of XML::Stream to 1.15.
- Documented the PresenceSend function a little better.
- Added GetHumanTime function to convert seconds to
a sentence. Useful for various Jabber things (last,
- Added the ability to remove a callback. This is to
try and speed thigs up by being able to unregister the
receive and send callbacks when you don't care about them.
- Added jabber:iq:rpc support based on JEP-0009.
- Fixed bad function call in VersionQuery.
- Added code to handle tracking the user's activity.
- Added <desc/> to the x:data.
- Added RemoveXXXX function to match GetXXXX and SetXXXX.
- Added timeouts to RegisterRequest(), SearchRequest(), and
- Fixed bug in LastQuery().
- Finished support for jabber:x:data (previously jabber:x:form
in the 1.0021 change messages).
- Added Execute function to Component to provide a generic
inner loop for easier component writing.
- Added support for a finer level of callbacks. You can now
create callbacks for all types of <iq/> packets and
namespaces. See Net::Jabber::Protocol for more details.
- Fixed bugs with the Raw XML functionality.
- Added documentation to Net::Jabber for the Raw XML
- Fixed a bug where no flag children were being put into the
XML string. (ie. <remove/> for iq:register). Ooops.
- Ok... found a really stupid module scoping problem. If
Protocol.pm is used before say Dialback.pm, then Protocol
cannot call new from Dialback to make a packet. Moved
use Protocol; to the last thing in import().
- Callback now checks if you have a callback defined for a
packet, or if you were waiting for a packet via
SendAndReceiveWithID. Might make some things faster.
- Fixed mistake in DefineNamespace where it copied too many
things into the hash.
- Fixed bugin accept for Components.
- Added InsertRawXML and ClearRawXML.
- Fixed Reply function in IQ.
- Fixed bug in X.pm.
- Added jabber:iq:pass support. DRAFT
- Added jabber:iq:browse support into Protocol.
- XML::Stream supports SSL. Client docs updated to show the
switches needed to enable that and HTTP.
- Started to work on supporting XDB. But due to lack of
documentation, this release DOES NOT 100% support it. Use
at your own risk.
- Updated docs to reflect changes.
- Added Net::Jabber::Namespaces as a way to help document
how the redesign works. It's probably incomplete so
ask questions and I'll work on it.
- Added check to make sure you specify a schema for the
use Net::Jabber qw ( xxx ); line.
- Fixed bug in Connect where it would not handle the case where
it could not connect properly.
- Fixed bug in Debug.
- Fixed iq:time and iq:version. The redesign broke the automatic
behavior they had before.
- Tweaked ParseTree for changes in XML::Stream.
- Fixed bug in Query.pm where I forgot to copy over a function
- Redesigned modules to try and use less memeory.
- Changed over to the new XML::Stream Hash data format. This
has helped to reduce memory usage by half (initial results)
although it comes at the cost of increased disk usage.
- Moved the GetXMLData, SetXMLData, and BuildXML functions into
XML::Stream where they belong. Should have done that long ago.
- Fixed bug in the Process function caused by the XML::Stream
- Added in jabber:x:form.
- Added in jabber:x:sxpm.
- Removed Transport.pm.
- Removed the transport examples and created Component examples.
- Changed Component.pm to stop using tcpip and stdinout and
use the standard accept and exec.
- Changed Debug to handle LogN instead of just 0, 1, and 2.
- Added RemoveX to Message and Presence.
- Added x:signed and x:encrypted.
- In the GetXMLData function in Jabber.pm I forgot to add a test
for existence of an attribute in the root tag.
- Added support for jabber:x:replypres.
- Added an update function to the SetCallBacks function list.
- In the SetTo and SetFrom functions, if you try to set it to
"" it ignores your request.
- Since those are gone, the Reply functions got a lot simpler,
so I removed the template argument on most of them.
- Removed all references to etherx:to, etherx:from, sto, and
- Removed anonymous connections from AuthSend since they were
taken out of Jabber.
- Changed AuthSend to always pick the highest level of security
as possible. It now queries the server for all possibilities
and picks from the answer.
- PresenceDBParse now returns the current presence based on
- Forgot to add a timeout to the Connect functions in Client.pm
- Modified the object creation functions to handle the below so
that old code doesn't break.
- Changed the way that callbacks are handled. Instead of passing
in an XML::Parser::Tree array that the user had to then convert
into a Net::Jabber::XXXXXX object. Now the callbacks are passed
in the proper Net::Jabber::XXXXXX objects directly.
- Modified the GetTimeStamp function in Jabber.pm to support two
new types: utcdelaytime and localdelaytim so that you can the
tiem value back out to modify before converting to a string.
- Added support for ZeroK Authentication. Both in Query/Auth.pm
and in AuthSend in Protocol.pm.
- Fixed Component.pm to use the new XML::Stream to argument in the
Connect function for writing Components to work with the accept
- Fixed bug in Component.pm where someone on the sever side changed
the namespace that you are supposed to connect with and never told
- Fixed bug in the cases where I would use SendAndReceiveWithID.
I was not checking for undef.
- Added more debugging in Protocol.pm.
- Changed the WaitForID function to be Process() instead of
- Fixed bug in RosterGet where I might get an undefined value and
I wasn't checking for it.
- Fixed bug in PresenceDBQuery in Protocol.pm. A hash value was
being accessed and causing the Presence DB to become tainted.
- Added boiler plate comments for the LGPL.
- Deprecating Transport.pm. It will cease to exist in the near
future in favor of the Component.pm module and Jabber Server
- Fixed support for the new connection profile found in the new
Jabber server. (You cannot use this to connect a Transport
to a server before 1.1.2).
- Fixed bug in JID.pm where changing a JID that did not have a UserID
part, but previously had a value in the Server would goof up.
- Fixed bug in AuthSend where the type='set' attribute was not being
set for the <iq/>.
- Fixed bug where an unkown namespace in an IQ would cause an error.
- Converted the rest of the functions to the AUTOLOAD method.
- PresenceSend in Protocol.pm now returns the presence object that it
- Changed GetJID in JID to not return the @ when the JID dues not have
- Moved Perl requirement to 5.005.
- Moved XML::Stream requirement to 1.06 to support the timestamp and a
- Added timestamp support to Debug.pm.
- Added digest control to AuthSend.
- Fixed bug with EscapeXML and the XML::Parser.
- Converted the Query namespaces to the new AUTOLOAD method.
- Fixed bug in the Search.pm file where it would trounce the
- Fixed bug in the Search namespaces that would cause duplicates to be
placed in the query if multiple calls to MergeItems were made.
- Removed some leftover print statements that would cause confusing output
- In the Message module Reply function, it only does "re: " for normal
- Added <registered/> to the iq:register namespace.
- Added PresenceDBDelete to allow for deleting JIDs from the the DB.
- Fixed a bug where PresenceDBParse would take any presence, regardless of
the type. It should only take available and unavailable.
- Fixed a bug in the GetXMLData function where it would try to check an
attrib but the array entry it was checking did not contain an array.
Added a ref() statement in there to fix that.
- Fixed another bug with the ErrorCode functions where I forgot to change
all of the calls in Protocol to ErrorCode from ErrorType.
- Fixed bug in the error tags.
- Fixed a bug in the AutoUpdate/Release.pm code.
- Added Query/Filter to support the mod_filter in the server.
- Added PresenceDB functions to make managing the multiple resource and
priority thing much easier for a client/transport.
- Initialized some variables to get rid of warnings under perl -w.
- Fixed outgoing XML to be UTF-8 encoded.
- Added support for <truncated/> in iq:search.
- Changed AutoUpdate namespaces to show <ver/> becoming <version/>.
- When SeachRequest and RegisterRequest get errors they now return undef
to show that there was an error.
- Changed versioning scheme to match up Perl and Jabber. 1.005 refers to
Jabber version 1.0 and Net::Jabber verison 005.
- GetQuery and GetX returns undef if there is not valid namespace found.
- Fixed bug in namespace handling. Instead of hardcoding looking for <x/>
and <query/> Net::Jabber now searches for any tag that has an xmlns and
uses that tag as the query or x.
- Added Jabber::X::GC to handle GroupChat X tags.
- Added Debug object to make it easier to log debug information.
- Fixed bug in JID where GetJID did not return the correct JID if there
is an % in the UserID.
- Added Key.pm.
- Fixed bug in RosterRemove where the JID was not being sent and thus the
item not being removed.
- Fixed bug in Message, Presence, and IQ with the GetJID function changing.
- Added Query::AutoUpdate.
- In Query::Version, a call to SetOS will call POSIX::uname and try to get
the OS name from there. (Not sure if this work on Windows and Mac...)
- Added GetAgents function to Protocol.pm to query a server/transport
and get the list of supported agents.
- Fixed bug in Query where the sub lists (items from roster and agents from
agents) were not being pulled back into <query/>.
- Fixed bug in Agent were the GetJID and SetJID were operating on the wrong
- Fixed bug in Agents where the new agent objects were not being created
- Fixed bug in examples/client where it called a function from Query without
getting the query from the iq.
- Added function Reply to IQ and Presence objects as well.
- Added function Reply to Message objects. It takes a string, and based
on that string it sets the proper values for to/from/etherx:to/etherx:from,
thread, type, and id.
- Added better example files in examples/.
- Wrote Transport.pm, it too uses Protocol.pm through delegates.
- Client.pm now uses delegates to pull in the functiosn from Protocol.pm.
- Moved high-level functions out of Client.pm into Protocol.pm.
- Added support for jabber:iq:agent, jabber:iq:agents, and jabber:x:roster.
- Updated example.pl.
- If you have Time::Timezone installed in the Query/Time.pm automagically
uses the timezone functions to figure out your timezone when you call
- If you have Digest::SHA1 installed then Client.pm automagically uses the
SHA-1 digest to encrypt the password for Authorization.
- RosterGet returns a complex data structure that contains the roster from
- <iq/> modules now use the AUTOLOAD and delegates same as the <x/> modules
- Bumped version to 1.0a.
- Changed method of handling timeouts.
- Added code to better handle errors on the Stream. It now actually returns
undef, or "", when the server or connection dies.
- Added code to test a Connect without crashing. Connect returns undef, or
"", if the Connect failed.
- Added IgnoreIDs() and WatchIDs() in Client.pm.
- Added support for delegates in the X/pm module.
- Added X.pm alpha code to handle reading and setting <x/> tags in various
- Added PresenceSend to send a presence tag.
- Added RegisterSend to send a registration packet.
- Fixed SetError and SetErrorType in Message.pm.
- Added SetError and SetErrorType to IQ.pm.
- Added support for "value" and "tree" on the root tag in the GetXMLData
function in Jabber.pm.
- Moved Disconnect functionality into XML::Stream. That's really where we
should have been sending the closing tag...
- Supports Jabber v0.8.1.
- Fixed support for IQ tags. Changed to distributed modules for each
- Created IQ/Auth.pm to give authentication support.
- Created IQ/Roster.pm and IQ/Roster/Item.pm to provide Roster support.
- Created IQ/Register.pm to give registration support. (Still experimental)
- Created Presence.pm to provide support for presence tags.
- Changed internal data structure to XML::Parser::Tree. This made
integration with XML::Stream a snap.
- Created helper functions to access an XML::Parser::Tree easily.
- Changed Client.pm to use XML::Stream instead of doing it manually.
- Added support for the new IQ, and Presence tags from Jabber-0.7.
- Removed support for Status and Roster since those were removed from
Jabber-0.7 in favor of IQ, and Presence.
- Added Set* functions to Message.pm, Status.pm, and Roster.pm.
- Moved Simply, BuildXML, and EscapeXML into Jabber.pm to avoid redundant
- Redesigned internal data structures to better handle <ext> structures
and multiple copies of the same tag.
- Added better documentation in the perldocs for each.
- Changed the perldocs in each file from use Net::Jabber::xxxxx to just
- Removed <ext> support from Status since it isn't designed to handle it.
- Changed the names of the Roster Set* functions. Get()->SetGet(),
Add()->SetAdd(), and Delete()->SetDelete().
- Added support to Message.pm to send to multiple people using the SetTo
- First version.