summaryrefslogtreecommitdiff
path: root/scripts/xmppdaemon.php
AgeCommit message (Collapse)Author
2010-03-18Runtime check for known bad PHP versions with 64-bit stream_select() bug in ↵Brion Vibber
xmppdaemon.php.
2010-03-10Detect when queuedaemon/xmppdaemon parent processes die and kill the child ↵Brion Vibber
processes. Keeps stray daemon subprocesses from floating around when we kill the parents via a signal! Accomplished by opening a bidirectional pipe in the parent process; the children close out the writer end and keep the reader in their open sockets list. When the parent dies, the children see that the socket's been closed out and can perform an orderly shutdown.
2010-02-16Stomp queue restructuring for mass scalability:Brion Vibber
- Multiplexing queues into groups and for multiple sites. - Sharing vs breakout configurable per site and per queue via $config['queue']['breakout'] - Detect how many times a message is redelivered, discard if it's killed too many daemons - count configurable with $config['queue']['max_retries'] - can dump the items to files in $config['queue']['dead_letter_dir'] Queue daemon memory & resource leak fixes: - avoid unnecessary reconnections to memcached server (switch persistent connections back in on second initialization, assuming it's child process) - monkey-patch for leaky .ini loads in DB_DataObject::databaseStructure() - was leaking 200k per active switch - applied leak fixes to Status_network as well, using intermediate base Safe_DataObject for both it and Memcache_DataObject Misc queue fixes: - correct handling of child processes exiting due to signal termination instead of regular exit - shutdown instead of infinite respawn loop if we're already past the soft memory limit at startup - Added --all option for xmppdaemon... still opens one xmpp connection per site that has xmpp active Cache updates: - add Cache::increment() method with native support for memcached atomic increment
2010-01-26Control channel for queue daemons to request graceful shutdown, restart, or ↵Brion Vibber
update to listen to a newly added or reconfigured site. queuectl.php --update -s<site> queuectl.php --stop queuectl.php --restart Default control channel is /topic/statusnet-control. For external utilities to send a site update ping direct to the queue server, connect via Stomp and send a message formatted thus: update:<nickname> (Nickname here, *not* server hostname! The rest of the queues will be updated to use nicknames later.) Note that all currently-connected queue daemons will get these notifications, including both queuedaemon.php and xmppdaemon.php. (XMPP will ignore site update requests for sites that it's not handling.) Limitations: * only implemented for stomp queue manager so far * --update may not yet handle a changed server name properly * --restart won't reload PHP code files that were already loaded at startup. Still need to stop and restart the daemons from 'outside' when updating code base.
2010-01-21XMPP queued output & initial retooling of DB queue manager to support ↵Brion Vibber
non-Notice objects. Queue handlers for XMPP individual & firehose output now send their XML stanzas to another output queue instead of connecting directly to the chat server. This lets us have as many general processing threads as we need, while all actual XMPP input and output go through a single daemon with a single connection open. This avoids problems with multiple connected resources: * multiple windows shown in some chat clients (psi, gajim, kopete) * extra load on server * incoming message delivery forwarding issues Database changes: * queue_item drops 'notice_id' in favor of a 'frame' blob. This is based on Craig Andrews' work branch to generalize queues to take any object, but conservatively leaving out the serialization for now. Table updater (preserves any existing queued items) in db/rc3to09.sql Code changes to watch out for: * Queue handlers should now define a handle() method instead of handle_notice() * QueueDaemon and XmppDaemon now share common i/o (IoMaster) and respawning thread management (RespawningDaemon) infrastructure. * The polling XmppConfirmManager has been dropped, as the message is queued directly when saving IM settings. * Enable $config['queue']['debug_memory'] to output current memory usage at each run through the event loop to watch for memory leaks To do: * Adapt XMPP i/o to component connection mode for multi-site support. * XMPP input can also be broken out to a queue, which would allow the actual notice save etc to be handled by general queue threads. * Make sure there are no problems with simply pushing serialized Notice objects to queues. * Find a way to improve interactive performance of the database-backed queue handler; polling is pretty painful to XMPP. * Possibly redo the way QueueHandlers are injected into a QueueManager. The grouping used to split out the XMPP output queue is a bit awkward.
2010-01-21drop debug line from xmppdaemon.php, we're done debugging thatBrion Vibber
2010-01-19Extra debug instrumentation for xmppdaemonBrion Vibber
2010-01-10Lots of tiny message changes.Siebrand Mazeland
* Mostly punctuation updates so that the same message is used consistently in all of StatusNet. * Some cases of "Title Case" removed, because that does not appear to be used consistently.
2009-12-15remove dead code for handling direct messages, now done with commandsEvan Prodromou
2009-11-12Minor typo correction in log message. Seems trivial, unless you are trying ↵Ciaran Gultnieks
to search the log for it.
2009-09-29remove string-checks from code using Notice::saveNew()Evan Prodromou
2009-08-27Merge branch '0.8.x' into 0.9.xEvan Prodromou
Conflicts: EVENTS.txt actions/finishremotesubscribe.php actions/postnotice.php actions/public.php actions/remotesubscribe.php actions/showstream.php actions/updateprofile.php actions/userauthorization.php classes/laconica.ini lib/common.php lib/oauthstore.php lib/omb.php
2009-08-25a distributed -> the distributedEvan Prodromou
2009-08-25change Laconica and Control Yourself to StatusNet in PHP filesEvan Prodromou
2009-08-21correctly check for max notice length in xmppdaemonEvan Prodromou
2009-07-21Set the global $_cur current user so that preferences are loaded.Craig Andrews
Thanks singpolyma http://laconi.ca/trac/ticket/1573
2009-07-09send a ping from the xmppdaemonEvan Prodromou
2009-07-03clean up payload memoryEvan Prodromou
2009-06-28change name of constructor for xmppdaemonEvan Prodromou
2009-06-28add a lot more logging to xmppdaemonEvan Prodromou
2009-06-28if not in daemon mode, xmppdaemon sends log to stdoutEvan Prodromou
2009-06-28got my background/foreground logic backwardsEvan Prodromou
2009-06-28xmppdaemon.php can stay in foregroundEvan Prodromou
2009-06-24all daemons take an id parameterEvan Prodromou
2009-06-22xmppdaemon.php uses commandline.incEvan Prodromou
2009-06-22Merge branch '0.8.x' into cmdlineEvan Prodromou
2009-06-20Update copyright dates in files modified in 2009Evan Prodromou
2009-06-20change Controlez-Vous to Control YourselfEvan Prodromou
2009-06-20change scripts to take server and path from commandlineEvan Prodromou
2009-04-20Merge branch '0.7.x' of git://gitorious.org/laconica/bAvatar-clone without ↵Adrian Lang
the unintended deletion.
2009-04-18shortening links in notices from XMPPTobias Diekershoff
This patch enables shortening of links, that where send from XMPP. The problem was, that in util.php common_current_user() is not finding the user account from which is posted, so the service to shorten is not known, so no shortening at all... This patch cleans up the xmppdaemon a little bit and hard codes ur1.ca as shortening service _if_ the user is not set. Ugly but working.
2009-04-16Abort the xmpp-related daemons immediately if xmpp is disabled in the ↵CiaranG
config, otherwise they chew up *lots* of CPU doing nothing
2009-02-17another system messageEvan Prodromou
2008-12-23move opening brace of class declaration to next lineEvan Prodromou
Another gigantor PEAR coding standards patch. Here, I've moved the opening curly bracket on a class statement to the following line. darcs-hash:20081223194923-84dde-77a93de314caadbcb5b70bf346a4648be77a864e.gz
2008-12-23change function headers to K&R styleEvan Prodromou
Another huge change, for PEAR code standards compliance. Function headers have to be in K&R style (opening brace on its own line), instead of having the opening brace on the same line as the function and parameters. So, a little perl magic found all the function definitions and move the opening brace to the next line (properly indented... usually). darcs-hash:20081223193323-84dde-a28e36ecc66672c783c2842d12fc11043c13ab28.gz
2008-12-23replace NULL with nullEvan Prodromou
Another global search-and-replace update. Here, I've replaced the PHP keyword 'NULL' with its lowercase version. This is another PEAR code standards change. darcs-hash:20081223192129-84dde-4a0182e0ec16a01ad88745ad3e08f7cb501aee0b.gz
2008-12-23replace all tabs with four spacesEvan Prodromou
The PEAR coding standards decree: no tabs, but indent by four spaces. I've done a global search-and-replace on all tabs, replacing them by four spaces. This is a huge change, but it will go a long way to getting us towards phpcs-compliance. And that means better code readability, and that means more participation. darcs-hash:20081223191907-84dde-21e8efe210e6d5d54e935a22d0cee5c7bbfc007d.gz
2008-12-13trim the body of an incoming messageEvan Prodromou
darcs-hash:20081214002239-84dde-9d4d15f37b48ed1830c0423e7e34cb11c7cf9c2d.gz
2008-12-11xmppdaemon uses 'xml' rather than 'raw' accessorEvan Prodromou
darcs-hash:20081211183250-5ed1f-73f542de534be2931508841a2c85162e2fe15160.gz
2008-11-28shorten urls for posts > 140 chars only, from anywhere. Only show long urls ↵millette
in title attributes for links we shortened ourselves. darcs-hash:20081128210114-099f7-4e4cde0a983c2ac6d41efb59b46cb7dbf45dc7a6.gz
2008-12-04new auto-reply regexp (thanks @lilyhill!)Evan Prodromou
darcs-hash:20081204174754-5ed1f-dcce210332c55a544c35d535c3f3008aa8c165d3.gz
2008-10-04add channels and use command interpreter in different channelsEvan Prodromou
darcs-hash:20081004163213-5ed1f-684ecb464e843b1bbe456c348e56b40a39a83ecd.gz
2008-10-02XMPP Direct Messaging / Last noticenick
Direct messaging now works under XMPP, the command syntax is 'd $nick $message'. Also, a command to fetch a users last notice is in there ('last $nick'). Notification of the recipient of a message is not yet supported. darcs-hash:20081003011145-29929-9fce5057066d0d223a0d01c1708df072d91b0e63.gz
2008-09-26Fix error in xmpp helpCiaranG
darcs-hash:20080926214627-f6e2c-f0aa98fe5e76c4aaa3bbaeb400fe85704a31a8c9.gz
2008-09-22merge CiaranG's changes for subs0.6.00.6Evan Prodromou
darcs-hash:20080922225031-84dde-c6967f46ae642f8943b0de77d9a82892ecadb4ce.gz
2008-09-16integrate local changes with Zach'sEvan Prodromou
darcs-hash:20080916210813-84dde-c2cadb63b09f59ac6c76dc1205a56687de9483ce.gz
2008-06-26fork daemonEvan Prodromou
darcs-hash:20080626224011-84dde-c6bbfcde6d0802ef3a2346524e0f883e6767c949.gz
2008-08-30remove custom xmppdaemon error handlerEvan Prodromou
darcs-hash:20080830162128-84dde-430fae5f1a0be77db2860c4e6e1c68b961b0944d.gz
2008-08-16XMPP daemon updates including help, sub and subsub commands, plus ↵CiaranG
subscribe/unsubcribe logic broken out into standalone module for sharing darcs-hash:20080816083422-f6e2c-fb8b4e0581719bd8c3f433e661ec9742e1b84cbc.gz
2008-08-14Bounce oversized XMPP messages back to user (Ticket #112)CiaranG
darcs-hash:20080814083856-f6e2c-0e56895260fb96dedaa6a663db7e906fee2f7b05.gz