aboutsummaryrefslogtreecommitdiffstats
path: root/Zotlabs/Module/Sse.php
diff options
context:
space:
mode:
authorMario <mario@mariovavti.com>2019-11-15 20:29:58 +0000
committerMario <mario@mariovavti.com>2019-11-15 20:29:58 +0000
commit965c51c2d45a98db10543c5108ac486e4fc6459e (patch)
treee0563eb6b283be784b21b8f605b62c84d9899dbc /Zotlabs/Module/Sse.php
parent5a6b14f8787927ee6ea99c622d02875811d3a74a (diff)
downloadvolse-hubzilla-965c51c2d45a98db10543c5108ac486e4fc6459e.tar.gz
volse-hubzilla-965c51c2d45a98db10543c5108ac486e4fc6459e.tar.bz2
volse-hubzilla-965c51c2d45a98db10543c5108ac486e4fc6459e.zip
sse: implement notifications for anonymous visitors (info, notice and pubs) and fix a potential memory leak
Diffstat (limited to 'Zotlabs/Module/Sse.php')
-rw-r--r--Zotlabs/Module/Sse.php31
1 files changed, 25 insertions, 6 deletions
diff --git a/Zotlabs/Module/Sse.php b/Zotlabs/Module/Sse.php
index 556fe2853..b227a396d 100644
--- a/Zotlabs/Module/Sse.php
+++ b/Zotlabs/Module/Sse.php
@@ -11,22 +11,41 @@ class Sse extends Controller {
public static $uid;
public static $ob_hash;
+ public static $sse_id;
public static $vnotify;
function init() {
+ if((observer_prohibited(true))) {
+ killme();
+ }
+
+ if(! intval(get_config('system','open_pubstream',1))) {
+ if(! get_observer_hash()) {
+ killme();
+ }
+ }
+
// this is important!
session_write_close();
- $sys = get_sys_channel();
-
self::$uid = local_channel();
self::$ob_hash = get_observer_hash();
- self::$vnotify = get_pconfig(self::$uid, 'system', 'vnotify');
+ self::$sse_id = false;
- if(! self::$ob_hash)
- return;
+ if(! self::$ob_hash) {
+ if(session_id()) {
+ self::$sse_id = true;
+ self::$ob_hash = 'sse_id.' . session_id();
+ }
+ else {
+ return;
+ }
+ }
+ self::$vnotify = get_pconfig(self::$uid, 'system', 'vnotify');
+
+ $sys = get_sys_channel();
$sleep_seconds = 3;
header("Content-Type: text/event-stream");
@@ -40,7 +59,7 @@ class Sse extends Controller {
* Update chat presence indication (if applicable)
*/
- if(self::$ob_hash) {
+ if(! self::$sse_id) {
$r = q("select cp_id, cp_room from chatpresence where cp_xchan = '%s' and cp_client = '%s' and cp_room = 0 limit 1",
dbesc(self::$ob_hash),
dbesc($_SERVER['REMOTE_ADDR'])