Custom Server Port and GetLink


#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.


#2

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 :slight_smile:


#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


#4

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?


#5

@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…


#6

Should it be using getCanonicalDomain instead?

Blair


#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 :smile:


#8

Test, please ignore…

cheers,
Justin