Add host_port mk_pointer to request struct
authorEduardo Silva <edsiper@gmail.com>
Sat, 24 Jul 2010 00:58:12 +0000 (20:58 -0400)
committerEduardo Silva <edsiper@gmail.com>
Sat, 24 Jul 2010 00:58:12 +0000 (20:58 -0400)
Palm Plugin: add HOST_PORT header in palm request

plugins/palm/cgi.h
plugins/palm/palm.c
src/include/request.h
src/request.c

index 98e8577..0745a52 100644 (file)
 #define MK_CGI_POST_VARS "POST_VARS"
 
 mk_pointer mk_cgi_document_root;
+
+/* CONTENT_ */
 mk_pointer mk_cgi_content_length;
 mk_pointer mk_cgi_content_type;
+
+/* SERVER_ */
 mk_pointer mk_cgi_server_addr;
 mk_pointer mk_cgi_server_port;
 mk_pointer mk_cgi_server_name;
 mk_pointer mk_cgi_server_protocol;
 mk_pointer mk_cgi_server_software;
 mk_pointer mk_cgi_server_signature;
+
+/* HTTP_ */
 mk_pointer mk_cgi_http_user_agent;
 mk_pointer mk_cgi_http_accept;
 mk_pointer mk_cgi_http_accept_charset;
@@ -70,6 +76,7 @@ mk_pointer mk_cgi_http_accept_language;
 mk_pointer mk_cgi_http_host;
 mk_pointer mk_cgi_http_cookie;
 mk_pointer mk_cgi_http_referer;
+
 mk_pointer mk_cgi_cgi_version;
 mk_pointer mk_cgi_gateway_interface;
 mk_pointer mk_cgi_remote_addr;
index cbfb293..50e9a02 100644 (file)
@@ -168,6 +168,7 @@ struct mk_iov *mk_palm_create_env(struct client_request *cr,
                           MK_IOV_NOT_FREE_BUF);
 
     //        mk_palm_iov_add_header(iov, mk_cgi_server_addr, mk_api->config->server_addr);
+    mk_palm_iov_add_header(iov, mk_cgi_server_port, mk_api->config->port);
     mk_palm_iov_add_header(iov, mk_cgi_server_name, sr->host);
     mk_palm_iov_add_header(iov, mk_cgi_server_protocol, mk_monkey_protocol);
     mk_palm_iov_add_header(iov, mk_cgi_server_software,
@@ -192,16 +193,20 @@ struct mk_iov *mk_palm_create_env(struct client_request *cr,
         mk_palm_iov_add_header(iov, mk_cgi_http_accept_language,
                                sr->accept_language);
 
-    if (sr->host.data)
-        mk_palm_iov_add_header(iov, mk_cgi_http_host, sr->host);
-
+    if (sr->host.data) {
+        if (sr->port != mk_api->config->standard_port) {
+            mk_palm_iov_add_header(iov, mk_cgi_http_host, sr->host_port);
+        }
+        else {
+            mk_palm_iov_add_header(iov, mk_cgi_http_host, sr->host);
+        }
+    }
     if (sr->cookies.data)
         mk_palm_iov_add_header(iov, mk_cgi_http_cookie, sr->cookies);
 
     if (sr->referer.data)
         mk_palm_iov_add_header(iov, mk_cgi_http_referer, sr->referer);
 
-    mk_palm_iov_add_header(iov, mk_cgi_server_port, mk_api->config->port);
     mk_palm_iov_add_header(iov, mk_cgi_gateway_interface, mk_cgi_version);
     //mk_palm_iov_add_header(iov, mk_cgi_remote_addr, cr->ip);
     mk_palm_iov_add_header(iov, mk_cgi_request_uri, sr->uri);
index 1aaec8f..e133ae9 100644 (file)
@@ -167,6 +167,7 @@ struct request
     mk_pointer connection;
     mk_pointer cookies;
     mk_pointer host;
+    mk_pointer host_port;
     mk_pointer if_modified_since;
     mk_pointer last_modified_since;
     mk_pointer range;
index 2ef544c..8d965af 100644 (file)
@@ -483,9 +483,13 @@ int mk_request_header_process(struct request *sr)
 
     if (host.data) {
         if ((pos_sep = mk_string_char_search(host.data, ':', host.len)) >= 0) {
+            /* just the host */
             sr->host.data = host.data;
             sr->host.len = pos_sep;
 
+            /* including the port */
+            sr->host_port = host;
+
             port = mk_string_copy_substr(host.data, pos_sep + 1, host.len);
             sr->port = atoi(port);
             mk_mem_free(port);