httpd: get rid of rmt_port and setenv_log
authorDenis Vlasenko <vda.linux@googlemail.com>
Sun, 19 Aug 2007 18:54:22 +0000 (18:54 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Sun, 19 Aug 2007 18:54:22 +0000 (18:54 -0000)
networking/httpd.c

index 23d442f177f892d5150c1d647d4017091c0fba67..560d1f8ee70d9b058dbead9881ff5a22fcc1f96e 100644 (file)
@@ -135,10 +135,10 @@ struct globals {
        int verbose;            /* must be int (used by getopt32) */
        smallint flg_deny_all;
 
-       unsigned rmt_ip;
-// TODO: get rid of rmt_port
-       unsigned rmt_port;      /* for set env REMOTE_PORT */
-       char *rmt_ip_str;       /* for set env REMOTE_ADDR */
+       unsigned rmt_ip;        /* used for IP-based allow/deny rules */
+       time_t last_mod;
+       off_t ContentLength;    /* -1 - unknown */
+       char *rmt_ip_str;       /* for $REMOTE_ADDR and $REMOTE_PORT */
        const char *bind_addr_or_port;
 
        const char *g_query;
@@ -147,8 +147,6 @@ struct globals {
 
        const char *found_mime_type;
        const char *found_moved_temporarily;
-       time_t last_mod;
-       off_t ContentLength;    /* -1 - unknown */
        Htaccess_IP *ip_a_d;    /* config allow/deny lines */
 
        USE_FEATURE_HTTPD_BASIC_AUTH(const char *g_realm;)
@@ -174,7 +172,6 @@ struct globals {
 #define verbose           (G.verbose          )
 #define flg_deny_all      (G.flg_deny_all     )
 #define rmt_ip            (G.rmt_ip           )
-#define rmt_port          (G.rmt_port         )
 #define bind_addr_or_port (G.bind_addr_or_port)
 #define g_query           (G.g_query          )
 #define configFile        (G.configFile       )
@@ -731,12 +728,6 @@ static void setenv1(const char *name, const char *value)
                value = "";
        setenv(name, value, 1);
 }
-static void setenv_long(const char *name, long value)
-{
-       char buf[sizeof(value)*3 + 2];
-       sprintf(buf, "%ld", value);
-       setenv(name, buf, 1);
-}
 #endif
 
 #if ENABLE_FEATURE_HTTPD_BASIC_AUTH
@@ -751,7 +742,7 @@ static void setenv_long(const char *name, long value)
 static void decodeBase64(char *Data)
 {
        const unsigned char *in = (const unsigned char *)Data;
-       // The decoded size will be at most 3/4 the size of the encoded
+       /* The decoded size will be at most 3/4 the size of the encoded */
        unsigned ch = 0;
        int i = 0;
 
@@ -1027,14 +1018,16 @@ static void send_cgi_and_exit(
                        cp = NULL;
                if (cp) *cp = '\0'; /* delete :PORT */
                setenv1("REMOTE_ADDR", p);
-               if (cp) *cp = ':';
-       }
-       setenv1("HTTP_USER_AGENT", user_agent);
+               if (cp) {
+                       *cp = ':';
 #if ENABLE_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV
-       setenv_long("REMOTE_PORT", rmt_port);
+                       setenv1("REMOTE_PORT", cp + 1);
 #endif
+               }
+       }
+       setenv1("HTTP_USER_AGENT", user_agent);
        if (bodyLen)
-               setenv_long("CONTENT_LENGTH", bodyLen);
+               putenv(xasprintf("CONTENT_LENGTH=%d", bodyLen));
        if (cookie)
                setenv1("HTTP_COOKIE", cookie);
        if (content_type)
@@ -1530,8 +1523,6 @@ static void handle_incoming_and_exit(const len_and_sockaddr *fromAddr)
         * (IOW, server process doesn't need to waste 8k) */
        iobuf = xmalloc(MAX_MEMORY_BUF);
 
-       rmt_port = get_nport(&fromAddr->sa);
-       rmt_port = ntohs(rmt_port);
        rmt_ip = 0;
        if (fromAddr->sa.sa_family == AF_INET) {
                rmt_ip = ntohl(fromAddr->sin.sin_addr.s_addr);