From 4d289574cadc5373e15117001d9016c4a59c90da Mon Sep 17 00:00:00 2001 From: friendica Date: Wed, 21 Nov 2012 15:41:14 -0800 Subject: [PATCH] ensure that auto_redir does not loop --- include/redir.php | 12 ++++++++++-- mod/dfrn_poll.php | 4 ++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/include/redir.php b/include/redir.php index 3fbbf4c130..ba7d02993f 100644 --- a/include/redir.php +++ b/include/redir.php @@ -2,6 +2,11 @@ function auto_redir(&$a, $contact_nick) { + // prevent looping + + if(intval($_REQUEST,'redir')) + return; + if((! $contact_nick) || ($contact_nick === $a->user['nickname'])) return; @@ -20,12 +25,15 @@ function auto_redir(&$a, $contact_nick) { if($domain_st === false) return; $baseurl = substr($baseurl, $domain_st + 3); + $nurl = normalise_link($baseurl); + $r = q("SELECT id FROM contact WHERE uid = ( SELECT uid FROM user WHERE nickname = '%s' LIMIT 1 ) - AND nick = '%s' AND self = 0 AND url LIKE '%%%s%%' AND blocked = 0 AND pending = 0 LIMIT 1", + AND nick = '%s' AND self = 0 AND ( url LIKE '%%%s%%' or nurl LIKE '%%%s%%' ) AND blocked = 0 AND pending = 0 LIMIT 1", dbesc($contact_nick), dbesc($a->user['nickname']), - dbesc($baseurl) + dbesc($baseurl), + dbesc($nurl) ); if((!$r) || (! count($r)) || $r[0]['id'] == remote_user()) diff --git a/mod/dfrn_poll.php b/mod/dfrn_poll.php index 8abe42abbb..1d3bbd4420 100644 --- a/mod/dfrn_poll.php +++ b/mod/dfrn_poll.php @@ -493,7 +493,7 @@ function dfrn_poll_content(&$a) { switch($destination_url) { case 'profile': - $dest = $a->get_baseurl() . '/profile/' . $profile . '?tab=profile'; + $dest = $a->get_baseurl() . '/profile/' . $profile . '?f=&tab=profile'; break; case 'photos': $dest = $a->get_baseurl() . '/photos/' . $profile; @@ -503,7 +503,7 @@ function dfrn_poll_content(&$a) { $dest = $a->get_baseurl() . '/profile/' . $profile; break; default: - $dest = $destination_url; + $dest = $destination_url . '?f=&redir=1'; break; }