aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xinclude/items.php26
-rw-r--r--include/zot.php27
2 files changed, 34 insertions, 19 deletions
diff --git a/include/items.php b/include/items.php
index ce4980c6a..d8c551cea 100755
--- a/include/items.php
+++ b/include/items.php
@@ -495,6 +495,32 @@ function post_activity_item($arr) {
return $ret;
}
+
+function validate_item_elements($message,$arr) {
+
+ $result = array('success' => false);
+
+ if(! array_key_exists('created',$arr))
+ $result['message'] = 'missing created, possible author/owner lookup failure';
+
+ if((! $arr['mid']) || (! $arr['parent_mid']))
+ $result['message'] = 'missing message-id or parent message-id';
+
+ if(array_key_exists('flags',$message) && in_array('relay',$message['flags']) && $arr['mid'] === $arr['parent_mid'])
+ $result['message'] = 'relay set on top level post';
+
+ if(! $result['message'])
+ $result['success'] = true;
+
+ return $result;
+
+}
+
+
+
+
+
+
/**
* @brief Generate an Atom feed.
*
diff --git a/include/zot.php b/include/zot.php
index 6d04bc024..a3e9bbf81 100644
--- a/include/zot.php
+++ b/include/zot.php
@@ -1178,8 +1178,10 @@ function zot_import($arr, $sender_url) {
if($i['message']['type'] === 'activity') {
$arr = get_item_elements($i['message']);
- if(! array_key_exists('created',$arr)) {
- logger('Activity rejected: probable failure to lookup author/owner. ' . print_r($i['message'],true));
+ $v = validate_item_elements($i['message'],$arr);
+
+ if(! $v['success']) {
+ logger('Activity rejected: ' . $v['message'] . ' ' . print_r($i['message'],true));
continue;
}
@@ -1538,24 +1540,11 @@ function process_delivery($sender, $arr, $deliveries, $relay, $public = false, $
$tag_delivery = tgroup_check($channel['channel_id'],$arr);
- $perm = (($arr['mid'] == $arr['parent_mid']) ? 'send_stream' : 'post_comments');
-
-// checkin 36b5f6ac - multiple issues, not yet ready for prime time
-// currently this is mostly fixed except for what to do if the post is in a second delivery chain
-// if ($arr['mid'] == $arr['parent_mid']){
-// $perm = 'send_stream';
-// }
-// else{
-// $perm = 'post_comments';
-//
-// $r = q("select owner_xchan from item where item.mid = '%s' and uid = %d limit 1",
-// dbesc($arr['parent_mid']),
-// intval($channel['channel_id'])
-// );
-// if(($r) && $channel['channel_hash'] !== $r[0]['owner_xchan'])
-// $perm = 'send_stream';
-// }
+// $perm = (($arr['mid'] == $arr['parent_mid']) ? 'send_stream' : 'post_comments');
+ $perm = 'send_stream';
+ if(($arr['mid'] !== $arr['parent_mid']) && ($relay))
+ $perm = 'post_comments';
// This is our own post, possibly coming from a channel clone