Removed repeated code.

This commit is contained in:
ajuaristi 2014-07-12 20:25:08 +02:00
commit 4186a3ad43

View file

@ -127,57 +127,48 @@ int add_header(char *header, char *value, char type){
// get to the last header // get to the last header
for(cur_ptr = ptr_head; cur_ptr && cur_ptr->next; cur_ptr = cur_ptr->next); for(cur_ptr = ptr_head; cur_ptr && cur_ptr->next; cur_ptr = cur_ptr->next);
ptr_header_node new_ptr = (ptr_header_node) malloc(sizeof(t_header_node)); ptr_header_node existing_hdr,
new_ptr = (ptr_header_node) malloc(sizeof(t_header_node));
char * new_header = strdup(header); char * new_header = strdup(header);
char * new_value = strdup(value); char * new_value = strdup(value);
if(new_ptr && new_header && new_value){ if(new_ptr && new_header && new_value){
if(type == HEADER_TYPE_USERHEADER){ if((type == HEADER_TYPE_USERHEADER) ||
// create a new item and append it to the list (type == HEADER_TYPE_DEFAULT && !header_exists(new_header, HEADER_TYPE_USERHEADER_REPL)) ||
(type == HEADER_TYPE_USERHEADER_REPL && !header_exists(new_header, HEADER_TYPE_DEFAULT))){
/*
* We are in one of the following scenarios:
* 1. A default header with no user-supplied headers that replace it.
* 2. A user-supplied header that must be appended (option 'h').
* 3. A user-supplied header that must replace a default header (option 'h'),
* but no default headers exist with that name.
*
* In either case we just add the header to the list.
*/
new_ptr->header = new_header; new_ptr->header = new_header;
new_ptr->value = new_value; new_ptr->value = new_value;
new_ptr->type = type; new_ptr->type = type;
new_ptr->next = NULL; new_ptr->next = NULL;
hydra_report(stdout, "[DEBUG] Added header (HEADER_TYPE_USERHEADER) %s: %s\n", new_header, new_value);
}else if(type == HEADER_TYPE_DEFAULT && !header_exists(new_header, HEADER_TYPE_USERHEADER_REPL)){ if(cur_ptr)
// It's a default header and there are no user headers that replace it, cur_ptr->next = new_ptr;
// so we create a new item and append it to the list else
new_ptr->header = new_header; // head is NULL, so the list is empty
new_ptr->value = new_value; ptr_head = new_ptr;
new_ptr->type = type; }else if(type == HEADER_TYPE_USERHEADER_REPL && (existing_hdr = header_exists(new_header, HEADER_TYPE_DEFAULT))){
new_ptr->next = NULL;
hydra_report(stdout, "[DEBUG] Added header (HEADER_TYPE_DEFAULT) %s: %s\n", new_header, new_value);
}else if(type == HEADER_TYPE_USERHEADER_REPL){
// It's a user-supplied header that must replace a default one // It's a user-supplied header that must replace a default one
ptr_header_node hdr_val = header_exists(new_header, HEADER_TYPE_DEFAULT); // Replace the default header's value with this new value
if(!hdr_val){ free(existing_hdr->value);
// There are no headers with the same name, so we act existing_hdr->value = new_value;
// as if it was a normal header existing_hdr->type = type;
new_ptr->header = new_header; hydra_report(stdout, "[DEBUG] Replaced header (HEADER_TYPE_USERHEADER_REPL) %s: %s\n", existing_hdr->header, existing_hdr->value);
new_ptr->value = new_value;
new_ptr->type = type;
new_ptr->next = NULL;
hydra_report(stdout, "[DEBUG] Added header (HEADER_TYPE_USERHEADER_REPL) %s: %s\n", new_header, new_value);
}else{
// Replace the default header's value with this new value
free(hdr_val->value);
hdr_val->value = new_value;
hdr_val->type = type;
hydra_report(stdout, "[DEBUG] Replaced header (HEADER_TYPE_USERHEADER_REPL) %s: %s\n", hdr_val->header, hdr_val->value);
return 1;
}
} }
}else{ }else{
// we're out of memory, so forcefully end // we're out of memory, so forcefully end
return 0; return 0;
} }
if(cur_ptr)
cur_ptr->next = new_ptr;
else
// head is NULL, so the list is empty
ptr_head = new_ptr;
return 1; return 1;
} }