if (http)
{
- memset(http->_fields, 0, sizeof(http->fields));
+ memset(http->_fields, 0, sizeof(http->_fields));
- for (field = HTTP_FIELD_ACCEPT_LANGUAGE; field < HTTP_FIELD_MAX; field ++)
+ for (field = HTTP_FIELD_ACCEPT_LANGUAGE; field < HTTP_FIELD_ACCEPT_ENCODING; field ++)
{
- if (http->fields[field] && http->fields[field] != http->_fields[field])
+ if (!http->fields[field])
+ continue;
+
+ if (http->fields[field] != http->_fields[field])
free(http->fields[field]);
http->fields[field] = NULL;
}
+ for (; field < HTTP_FIELD_MAX; field ++)
+ {
+ if (!http->fields[field])
+ continue;
+
+ free(http->fields[field]);
+ http->fields[field] = NULL;
+ }
+
if (http->mode == _HTTP_MODE_CLIENT)
{
if (http->hostname[0] == '/')
if (!append && http->fields[field])
{
- if (http->fields[field] != http->_fields[field])
+ if (field >= HTTP_FIELD_ACCEPT_ENCODING || http->fields[field] != http->_fields[field])
free(http->fields[field]);
http->fields[field] = NULL;
char *mcombined; /* New value string */
- if (http->fields[field] == http->_fields[field])
+ if (field < HTTP_FIELD_ACCEPT_ENCODING && http->fields[field] == http->_fields[field])
{
if ((mcombined = malloc(total + 1)) != NULL)
{