- char *serialized_str;
- int serialized_len;
-
- if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &serialized_str, &serialized_len)) {
- HashTable ht;
-
- zend_hash_init(&ht, 1, NULL, ZVAL_PTR_DTOR, 0);
- if (SUCCESS == php_http_header_parse(serialized_str, serialized_len, &ht, NULL, NULL TSRMLS_CC)) {
- if (zend_hash_num_elements(&ht)) {
- zval **val, *cpy;
- char *str;
- uint len;
- ulong idx;
-
- zend_hash_internal_pointer_reset(&ht);
- switch (zend_hash_get_current_key_ex(&ht, &str, &len, &idx, 0, NULL)) {
- case HASH_KEY_IS_STRING:
- zend_update_property_stringl(php_http_header_class_entry, getThis(), ZEND_STRL("name"), str, len - 1 TSRMLS_CC);
- break;
- case HASH_KEY_IS_LONG:
- zend_update_property_long(php_http_header_class_entry, getThis(), ZEND_STRL("name"), idx TSRMLS_CC);
- break;
- default:
- break;
- }
- zend_hash_get_current_data(&ht, (void *) &val);
- cpy = php_http_zsep(1, IS_STRING, *val);
- zend_update_property(php_http_header_class_entry, getThis(), ZEND_STRL("value"), cpy TSRMLS_CC);
- zval_ptr_dtor(&cpy);
- }
- }
- zend_hash_destroy(&ht);