- char *serialized_str;
- size_t serialized_len;
-
- if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS(), "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)) {
- if (zend_hash_num_elements(&ht)) {
- zend_string *zs, *key;
- zend_ulong idx;
-
- zend_hash_internal_pointer_reset(&ht);
- switch (zend_hash_get_current_key(&ht, &key, &idx)) {
- case HASH_KEY_IS_STRING:
- zend_update_property_str(php_http_header_class_entry, getThis(), ZEND_STRL("name"), key);
- break;
- case HASH_KEY_IS_LONG:
- zend_update_property_long(php_http_header_class_entry, getThis(), ZEND_STRL("name"), idx);
- break;
- default:
- break;
- }
- zs = zval_get_string(zend_hash_get_current_data(&ht));
- zend_update_property_str(php_http_header_class_entry, getThis(), ZEND_STRL("value"), zs);
- zend_string_release(zs);
- }
- }
- zend_hash_destroy(&ht);