mrfelna
November 30, 2016, 11:57am
1
I was wondering if anyone else uses FarCry with a non standard port? If so, have you noticed the following behaviour:
If I use the code below for localhost:8008, link becomes http://localhost:8008:8008
<cfset link = application.fapi.getLink(alias="home", includeDomain="true") >
This may be a setup specific thing and only occurs for non standard ports. I am using Lucee 4.5 with IIS 7.5.
I often run it in Lucee express on port 8888, but I can’t say I have used/tested the includeDomain
option.
It seems like some code might be using cgi.http_host
plus the cgi.server_port
when perhaps it should used cgi.http_host
only (or cgi.server_name
and cgi.server_port
)? I’ll check when I get a chance
mrfelna
December 5, 2016, 11:44pm
3
Might not be as easy as that. As far as I am aware, there can be differences with server variables between IIS, Apache, etc.
The following may be sufficient:
Change
<cfif not listfindnocase("80,443",CGI.SERVER_PORT)>
<cfset arguments.Domain = "#arguments.domain#:#CGI.SERVER_PORT#" />
</cfif>
To
<cfif not listfindnocase("80,443",CGI.SERVER_PORT) and reFind(":\d+/?$", arguments.Domain) eq 0 >
<cfset arguments.Domain = "#arguments.domain#:#CGI.SERVER_PORT#" />
</cfif>
Ie. if there’s already a port in the domain, don’t override it. Also means user provided domains can contain different custom ports
The logic definitely seems wrong to me, because this already includes the port (hence, so should any user provided value if it’s required);
<cfargument name="Domain" default="#cgi.http_host#">
Which means the code that follows shouldn’t be trying to append the port when it’s already expected to be there?
So perhaps the “fix” is to delete these 3 lines of code:
<cfif not listfindnocase("80,443",CGI.SERVER_PORT)>
<cfset arguments.Domain = "#arguments.domain#:#CGI.SERVER_PORT#" />
</cfif>
Does that work for you?
@mrfelna I saw that you replied by email but it looks like the forum isn’t picking up email replies at the moment, I’m just trying to resolve it…
blair
December 5, 2016, 10:36pm
6
Should it be using getCanonicalDomain instead?
Blair
mrfelna
December 6, 2016, 12:00am
7
Yes - that makes sense. Embarrassingly simple.
Are you sure HTTP_HOST will always be:
a) defined
b) have a custom port appended
Just a thought. I think too much has already gone into a bug no one else
will care about