Diff for /embedaddon/php/main/SAPI.c between versions 1.1.1.2 and 1.1.1.3

version 1.1.1.2, 2012/05/29 12:34:35 version 1.1.1.3, 2013/07/22 01:32:11
Line 2 Line 2
    +----------------------------------------------------------------------+     +----------------------------------------------------------------------+
    | PHP Version 5                                                        |     | PHP Version 5                                                        |
    +----------------------------------------------------------------------+     +----------------------------------------------------------------------+
   | Copyright (c) 1997-2012 The PHP Group                                |   | Copyright (c) 1997-2013 The PHP Group                                |
    +----------------------------------------------------------------------+     +----------------------------------------------------------------------+
    | This source file is subject to version 3.01 of the PHP license,      |     | This source file is subject to version 3.01 of the PHP license,      |
    | that is bundled with this package in the file LICENSE, and is        |     | that is bundled with this package in the file LICENSE, and is        |
Line 587  static void sapi_update_response_code(int ncode TSRMLS Line 587  static void sapi_update_response_code(int ncode TSRMLS
         SG(sapi_headers).http_response_code = ncode;          SG(sapi_headers).http_response_code = ncode;
 }  }
   
static int sapi_find_matching_header(void *element1, void *element2)/* 
{ * since zend_llist_del_element only remove one matched item once,
        int len = strlen((char*)element2); * we should remove them by ourself
        return strncasecmp(((sapi_header_struct*)element1)->header, (char*)element2, len) == 0 && ((sapi_header_struct*)element1)->header[len] == ':'; */
 static void sapi_remove_header(zend_llist *l, char *name, uint len) {
         sapi_header_struct *header;
         zend_llist_element *next;
         zend_llist_element *current=l->head;
 
         while (current) {
                 header = (sapi_header_struct *)(current->data);
                 next = current->next;
                 if (header->header_len > len && header->header[len] == ':'
                                 && !strncasecmp(header->header, name, len)) {
                         if (current->prev) {
                                 current->prev->next = next;
                         } else {
                                 l->head = next;
                         }
                         if (next) {
                                 next->prev = current->prev;
                         } else {
                                 l->tail = current->prev;
                         }
                         sapi_free_header(header);
                         efree(current);
                         --l->count;
                 }
                 current = next;
         }
 }  }
   
 SAPI_API int sapi_add_header_ex(char *header_line, uint header_line_len, zend_bool duplicate, zend_bool replace TSRMLS_DC)  SAPI_API int sapi_add_header_ex(char *header_line, uint header_line_len, zend_bool duplicate, zend_bool replace TSRMLS_DC)
Line 621  static void sapi_header_add_op(sapi_header_op_enum op, Line 647  static void sapi_header_add_op(sapi_header_op_enum op,
                                 char sav = *colon_offset;                                  char sav = *colon_offset;
   
                                 *colon_offset = 0;                                  *colon_offset = 0;
                                zend_llist_del_element(&SG(sapi_headers).headers, sapi_header->header, (int(*)(void*, void*))sapi_find_matching_header);                        sapi_remove_header(&SG(sapi_headers).headers, sapi_header->header, strlen(sapi_header->header));
                                 *colon_offset = sav;                                  *colon_offset = sav;
                         }                          }
                 }                  }
Line 703  SAPI_API int sapi_header_op(sapi_header_op_enum op, vo Line 729  SAPI_API int sapi_header_op(sapi_header_op_enum op, vo
                         sapi_header.header_len = header_line_len;                          sapi_header.header_len = header_line_len;
                         sapi_module.header_handler(&sapi_header, op, &SG(sapi_headers) TSRMLS_CC);                          sapi_module.header_handler(&sapi_header, op, &SG(sapi_headers) TSRMLS_CC);
                 }                  }
                zend_llist_del_element(&SG(sapi_headers).headers, header_line, (int(*)(void*, void*))sapi_find_matching_header);                sapi_remove_header(&SG(sapi_headers).headers, header_line, header_line_len);
                 efree(header_line);                  efree(header_line);
                 return SUCCESS;                  return SUCCESS;
         } else {          } else {
Line 990  SAPI_API char *sapi_getenv(char *name, size_t name_len Line 1016  SAPI_API char *sapi_getenv(char *name, size_t name_len
                 } else {                  } else {
                         return NULL;                          return NULL;
                 }                  }
                sapi_module.input_filter(PARSE_ENV, name, &value, strlen(value), NULL TSRMLS_CC);                if (sapi_module.input_filter) {
                         sapi_module.input_filter(PARSE_STRING, name, &value, strlen(value), NULL TSRMLS_CC);
                 }
                 return value;                  return value;
         }          }
         return NULL;          return NULL;

Removed from v.1.1.1.2  
changed lines
  Added in v.1.1.1.3


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>