b61d135abcd656964b1c9fedb938d0f47a44357f
galt
  Wed Apr 17 16:06:06 2013 -0700
adding support for HTTPS by not hardwiring the protocol and port in the URL but detecting when https is in use
diff --git src/lib/cheapcgi.c src/lib/cheapcgi.c
index f91eaf7..b82a932 100644
--- src/lib/cheapcgi.c
+++ src/lib/cheapcgi.c
@@ -78,40 +78,54 @@
    actual URL construction */
 {
 return getenv("SERVER_NAME");
 }
 
 char *cgiServerPort()
 /* Return port number of server, default 80 if not found */
 {
 char *port = getenv("SERVER_PORT");
 if (port)
     return port;
 else
     return "80";
 }
 
+boolean cgiServerHttpsIsOn()
+/* Return true if HTTPS is on */
+{
+char *httpsIsOn = getenv("HTTPS");
+if (httpsIsOn)
+    return sameString(httpsIsOn, "on");
+else
+    return FALSE;
+}
+
 char *cgiServerNamePort()
 /* Return name of server with port if different than 80 */
 {
 char *port = cgiServerPort();
-char *namePort = cgiServerName();
+char *name = cgiServerName();
 struct dyString *result = newDyString(256);
-if (namePort)
+char *defaultPort = "80";
+if (cgiServerHttpsIsOn())
+    defaultPort = "443";
+
+if (name)
     {
-    dyStringPrintf(result,"%s",namePort);
-    if (differentString(port, "80"))
+    dyStringPrintf(result,"%s",name);
+    if (differentString(port, defaultPort))
 	dyStringPrintf(result,":%s",port);
     return dyStringCannibalize(&result);
     }
 else
     return NULL;
 }
 
 char *cgiRemoteAddr()
 /* Return IP address of client (or "unknown"). */
 {
 static char *dunno = "unknown";
 char *remoteAddr = getenv("REMOTE_ADDR");
 if (remoteAddr == NULL)
     remoteAddr = dunno;
 return remoteAddr;