andi            Fri Mar  2 07:25:52 2001 EDT

  Modified files:              
    /php4/sapi/nsapi    nsapi.c 
  Log:
  - Commit NSAPI patches.
  
  
Index: php4/sapi/nsapi/nsapi.c
diff -u php4/sapi/nsapi/nsapi.c:1.16 php4/sapi/nsapi/nsapi.c:1.17
--- php4/sapi/nsapi/nsapi.c:1.16        Sun Feb 25 22:07:37 2001
+++ php4/sapi/nsapi/nsapi.c     Fri Mar  2 07:25:51 2001
@@ -94,15 +94,16 @@
 } nsapi_equiv;
 
 static nsapi_equiv nsapi_headers[] = {
-       { "CONTENT_LENGTH",             "content-length" },
-       { "CONTENT_TYPE",               "content-type" },
-       { "HTTP_ACCEPT",                "accept" },
+       { "CONTENT_LENGTH",                     "content-length" },
+       { "CONTENT_TYPE",                       "content-type" },
+       { "HTTP_ACCEPT",                        "accept" },
        { "HTTP_ACCEPT_ENCODING",       "accept-encoding" },
        { "HTTP_ACCEPT_LANGUAGE",       "accept-language" },
+       { "HTTP_ACCEPT_CHARSET",        "accept-charset" },
        { "HTTP_AUTHORIZATION",         "authorization" },
-       { "HTTP_COOKIE",                "cookie" },
+       { "HTTP_COOKIE",                        "cookie" },
        { "HTTP_IF_MODIFIED_SINCE",     "if-modified-since" },
-       { "HTTP_REFERER",               "referer" },
+       { "HTTP_REFERER",                       "referer" },
        { "HTTP_USER_AGENT",            "user-agent" },
        { "HTTP_USER_DEFINED",          "user-defined" }
 };
@@ -113,20 +114,22 @@
        { "REQUEST_LINE",               "clf-request" },
        { "REQUEST_METHOD",             "method" },
        { "SCRIPT_NAME",                "uri" },
-       { "SCRIPT_PROTOCOL",            "protocol" }
+       { "SERVER_PROTOCOL",    "protocol" }
 };
 static size_t nsapi_reqpb_size = sizeof(nsapi_reqpb)/sizeof(nsapi_reqpb[0]);
 
 static nsapi_equiv nsapi_vars[] = {
-       { "AUTH_TYPE",                  "auth-type" },
        { "PATH_INFO",                  "path-info" },
+       { "PATH_TRANSLATED",    "path" },
+       { "AUTH_TYPE",                  "auth-type" },
+       { "CLIENT_CERT",                "auth-cert" },
        { "REMOTE_USER",                "auth-user" }
 };
 static size_t nsapi_vars_size = sizeof(nsapi_vars)/sizeof(nsapi_vars[0]);
 
 static nsapi_equiv nsapi_client[] = {
        { "HTTPS_KEYSIZE",              "keysize" },
-       { "HTTPS_SECRETSIZE",           "secret-keysize" },
+       { "HTTPS_SECRETSIZE",   "secret-keysize" },
        { "REMOTE_ADDR",                "ip" }
 };
 static size_t nsapi_client_size = sizeof(nsapi_client)/sizeof(nsapi_client[0]);
@@ -279,47 +282,67 @@
 {
        nsapi_request_context *rc = (nsapi_request_context *)SG(server_context);
        size_t i;
-       char *value = NULL;
+       char *value;
        char buf[128];
 
-       *buf = 0;
        for (i = 0; i < nsapi_reqpb_size; i++) {
-               if ((value = pblock_findval(nsapi_reqpb[i].nsapi_eq, rc->rq->reqpb)) 
== NULL) {
-                       value = buf;
+               value = pblock_findval(nsapi_reqpb[i].nsapi_eq, rc->rq->reqpb);
+               if (value) {
+                       php_register_variable( (char *)nsapi_reqpb[i].env_var, value, 
+track_vars_array ELS_CC PLS_CC );
                }
-               php_register_variable( (char *)nsapi_reqpb[i].env_var, value, 
track_vars_array ELS_CC PLS_CC );
        }
        
        for (i = 0; i < nsapi_headers_size; i++) {
-               if ((value = pblock_findval(nsapi_headers[i].nsapi_eq, 
rc->rq->headers)) == NULL) {
-                       value = buf;
+               value = pblock_findval(nsapi_headers[i].nsapi_eq, rc->rq->headers);
+               if (value) {
+                       php_register_variable( (char *)nsapi_headers[i].env_var, 
+value, track_vars_array ELS_CC PLS_CC );
                }
-               php_register_variable( (char *)nsapi_headers[i].env_var, value, 
track_vars_array ELS_CC PLS_CC );
        }
 
        for (i = 0; i < nsapi_vars_size; i++) {
-               if ((value = pblock_findval(nsapi_vars[i].nsapi_eq, rc->rq->vars)) == 
NULL) {
-                       value = buf;
+               value = pblock_findval(nsapi_vars[i].nsapi_eq, rc->rq->vars);
+               if (value) {
+                       php_register_variable( (char *)nsapi_vars[i].env_var, value, 
+track_vars_array ELS_CC PLS_CC );
                }
-               php_register_variable( (char *)nsapi_vars[i].env_var, value, 
track_vars_array ELS_CC PLS_CC );
        }
 
        for (i = 0; i < nsapi_client_size; i++) {
-               if ((value = pblock_findval(nsapi_client[i].nsapi_eq, rc->sn->client)) 
== NULL) {
-                       value = buf;
+               value = pblock_findval(nsapi_client[i].nsapi_eq, rc->sn->client);
+               if (value) {
+                       php_register_variable( (char *)nsapi_client[i].env_var, value, 
+track_vars_array ELS_CC PLS_CC );
                }
-               php_register_variable( (char *)nsapi_client[i].env_var, value, 
track_vars_array ELS_CC PLS_CC );
        }
+       
+       value = session_dns(rc->sn);
+       if (value) {
+               php_register_variable("REMOTE_HOST", value, track_vars_array ELS_CC 
+PLS_CC );
+       }
+       sprintf(buf, "%d", conf_getglobals()->Vport);
+       php_register_variable("SERVER_PORT", buf, track_vars_array ELS_CC PLS_CC );
+       php_register_variable("SERVER_NAME", util_hostname(), track_vars_array ELS_CC 
+PLS_CC );
+       php_register_variable("SERVER_URL", http_uri2url("", ""), track_vars_array 
+ELS_CC PLS_CC );
+       php_register_variable("HTTPS", (security_active ? "ON" : "OFF"), 
+track_vars_array ELS_CC PLS_CC );
+/*     php_register_variable("SERVER_SOFTWARE", MAGNUS_VERSION_STRING, 
+track_vars_array ELS_CC PLS_CC ); */
 
        /*
         * Special PHP_SELF variable.
         */
-       value = pblock_findval( "uri", rc->rq->reqpb );
-       if( value != NULL ) {
-               php_register_variable( "PHP_SELF", value, track_vars_array ELS_CC 
PLS_CC );
-       }
+       value = pblock_findval("uri", rc->rq->reqpb);
+       if ( value != NULL ) {
+               php_register_variable("PHP_SELF", value, track_vars_array ELS_CC 
+PLS_CC );
+       }
+}
+  
+static void
+nsapi_log_message(char *message)
+{
+       SLS_FETCH();
+       nsapi_request_context *rc = (nsapi_request_context *)SG(server_context);
+       log_error(LOG_INFORM, "PHP_log_message", rc->sn, rc->rq,
+               "%s", message);
 }
 
+
 static sapi_module_struct nsapi_sapi_module = {
        "nsapi",                                /* name */
        "NSAPI",                                /* pretty name */
@@ -345,7 +368,7 @@
        sapi_nsapi_read_cookies,                /* read Cookies */
 
        sapi_nsapi_register_server_variables,   /* register server variables */
-       NULL,                                   /* Log message */
+       nsapi_log_message,                      /* Log message */
 
        NULL,                                   /* Block interruptions */
        NULL,                                   /* Unblock interruptions */
@@ -357,7 +380,7 @@
 nsapi_strdup(char *str)
 {
        if (str != NULL)
-               return strdup(str);
+               return STRDUP(str);
        return NULL;
 }
 
@@ -365,92 +388,21 @@
 nsapi_free(void *addr)
 {
        if (addr != NULL)
-               free(addr);
+               FREE(addr);
 }
 
-/*
- * Add symbols to the interpreter.
- */
 static void
-nsapi_add_string(const char *name, const char *buf)
-{
-       zval *pval;
-       ELS_FETCH();
-
-       if (buf == NULL)
-               buf = "";
-
-       MAKE_STD_ZVAL(pval);
-       pval->type = IS_STRING;
-       pval->value.str.len = strlen(buf);
-       pval->value.str.val = estrndup(buf, pval->value.str.len);
-       zend_hash_update(&EG(symbol_table), (char *)name, strlen(name) + 1, &pval, 
sizeof(zval *), NULL);
-}
-
-static void
-nsapi_hash_environment(NSLS_D SLS_DC)
-{
-       size_t i;
-       const char *remote_host = NULL, *server_url = NULL, *path_translated = NULL;
-       char *value = NULL, buf[128];
-
-       remote_host = session_dns(NSG(sn));
-       server_url = http_uri2url("", "");
-       path_translated = SG(request_info).path_translated;
-
-       *buf = 0;
-
-       for (i = 0; i < nsapi_headers_size; i++) {
-               if ((value = pblock_findval(nsapi_headers[i].nsapi_eq, 
NSG(rq)->headers)) == NULL) {
-                       value = buf;
-               }
-               nsapi_add_string(nsapi_headers[i].env_var, value);
-       }
-
-       for (i = 0; i < nsapi_reqpb_size; i++) {
-               if ((value = pblock_findval(nsapi_reqpb[i].nsapi_eq, NSG(rq)->reqpb)) 
== NULL) {
-                       value = buf;
-               }
-               nsapi_add_string(nsapi_reqpb[i].env_var, value);
-       }
-
-       for (i = 0; i < nsapi_vars_size; i++) {
-               if ((value = pblock_findval(nsapi_vars[i].nsapi_eq, NSG(rq)->vars)) == 
NULL) {
-                       value = buf;
-               }
-               nsapi_add_string(nsapi_vars[i].env_var, value);
-       }
-
-       for (i = 0; i < nsapi_client_size; i++) {
-               if ((value = pblock_findval(nsapi_client[i].nsapi_eq, 
NSG(sn)->client)) == NULL) {
-                       value = buf;
-               }
-               nsapi_add_string(nsapi_client[i].env_var, value);
-       }
-
-       sprintf(buf, "%d", conf_getglobals()->Vport);
-       nsapi_add_string("SERVER_PORT", buf);
-
-       nsapi_add_string("HTTPS", (security_active ? "ON" : "OFF"));
-       nsapi_add_string("SERVER_NAME", server_hostname);
-       nsapi_add_string("REMOTE_HOST", remote_host);
-       nsapi_add_string("SERVER_URL", server_url);
-/*     nsapi_add_string("SERVER_SOFTWARE", MAGNUS_VERSION_STRING); */
-       nsapi_add_string("PATH_TRANSLATED", path_translated);
-}
-
-static void
 nsapi_request_ctor(NSLS_D SLS_DC)
 {
        char *query_string = pblock_findval("query", NSG(rq)->reqpb);
        char *uri = pblock_findval("uri", NSG(rq)->reqpb);
        char *path_info = pblock_findval("path-info", NSG(rq)->vars);
-       char *path_translated = NULL;
+       char *path_translated = pblock_findval("path", NSG(rq)->vars);
        char *request_method = pblock_findval("method", NSG(rq)->reqpb);
        char *content_type = pblock_findval("content-type", NSG(rq)->headers);
        char *content_length = pblock_findval("content-length", NSG(rq)->headers);
 
-       if (uri != NULL)
+       if ((path_translated == NULL) && (uri != NULL))
                path_translated = request_translate_uri(uri, NSG(sn));
 
 #if defined(NSAPI_DEBUG)
@@ -472,7 +424,7 @@
 #endif
 
        SG(request_info).query_string = nsapi_strdup(query_string);
-       SG(request_info).request_uri = nsapi_strdup(path_info);
+       SG(request_info).request_uri = nsapi_strdup(uri);
        SG(request_info).request_method = nsapi_strdup(request_method);
        SG(request_info).path_translated = nsapi_strdup(path_translated);
        SG(request_info).content_type = nsapi_strdup(content_type);
@@ -514,17 +466,13 @@
                "Parsing [%s]", SG(request_info).path_translated);
 #endif
 
-#if 0
-       result = php_request_startup(CLS_C ELS_CC PLS_CC SLS_CC);
-       if (result == FAILURE) {
-               return FAILURE;
-       }
-#endif
-
-       nsapi_hash_environment(NSLS_C SLS_CC);
        php_execute_script(&file_handle CLS_CC ELS_CC PLS_CC);
        php_request_shutdown(NULL);
 
+#if defined(NSAPI_DEBUG)
+       log_error(LOG_INFORM, "nsapi_module_main", NSG(sn), NSG(rq),
+               "PHP request finished Ok");
+#endif
        return SUCCESS;
 }
 
@@ -560,7 +508,7 @@
 
        SLS_FETCH();
 
-       request_context = (nsapi_request_context 
*)malloc(sizeof(nsapi_request_context));
+       request_context = (nsapi_request_context 
+*)MALLOC(sizeof(nsapi_request_context));
        request_context->pb = pb;
        request_context->sn = sn;
        request_context->rq = rq;
@@ -572,7 +520,7 @@
        retval = nsapi_module_main(NSLS_C SLS_CC);
        nsapi_request_dtor(NSLS_C SLS_CC);
 
-       free(request_context);
+       FREE(request_context);
 
        return (retval == SUCCESS) ? REQ_PROCEED : REQ_EXIT;
 }

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to