ID:109373
 
Not a bug
This was a permissions problem on the user's machine.
BYOND Version:N/A (Website Bug)
Operating System:Linux
Web Browser:Firefox 3.6.13
Applies to:Website
Status: Not a bug

This is not a bug. It may be an incorrect use of syntax or a limitation in the software. For further discussion on the matter, please consult the BYOND Developer forums.
Descriptive Problem Summary:

After logging into Terulia Forum Service via secure.byond.com, DMCGI's Login() proc doesn't return the user's key. Instead, it redirects to byond.com once again. This results in an endless loop on terulia.com

Numbered Steps to Reproduce Problem:

login via http://www.terulia.com/?cmd=Login

Code Snippet (if applicable) to Reproduce Problem:
if(findtext(href,"&byondcert"))
U_name = src.Login(current_address)


Expected Results:

src.Login() returns the user's key

Actual Results:

infinite loop as byond redirects

Did the problem NOT occur in any earlier versions? If so, what was the last version that worked? I haven't changed logins in months. I changed to a new server last night. It's using the same version of BYOND as the old one (479). I was just informed about this bug, so it may be related to the server switch, though I'm not sure how/why.

Workarounds: none; remote logins are broken (even if I stop the redirect, Login() still fails)
I've created a minimal demo that can reproduce this bug:

CGI
proc/Login(new_url)
if(usr.ckey != "guest") return usr.key //already logged in
return ..() //handled internally by DreamDaemon
Topic(href,href_list[])
var/U_name = src.Login("http://test.terulia.com")
usr << U_name


This produced the same results on both the new AND the old Terulia Forum Service servers.

Just to make sure this wasn't due to having stripped out the rest of DMCGI, I reduced it to
CGI/Topic(href,href_list[])
var/U_name = src.Login("http://test.terulia.com")
usr << U_name
but included the Dantom.CGI library. This had the same effect as using the minimal version.

I also tried logging into TFS via the old server (using the unchanged version of the forums still on it) and ended up with the same result.

Downgrading the new server to BYOND 478 had no effect. Both the new and old servers are running 479.
Given the timing and the fact that this doesn't appear to be happening on other remote sites, this is most likely related to a configuration on your new machine. We'll take a look.
I plugged the old server back in and ran the same tests with the same results. Trying to login using the old forums on the old server also resulted in a loop. Thanks for looking into it.
Although this turned out to be a problem with permissions (namely, being unable to write to cfg/cgicert.db), we ought to provide better diagnostics in the future. We probably won't though. This is mostly a note for me in case this comes up again.