ta_identity_t *ta_identity_create(char *name, xt_core_log_t *log) { assert(name); assert(log); ta_identity_t *identity; xt_core_bool_t so_far_so_good; identity = malloc(sizeof *identity); if (identity) { identity->log = log; identity->phrases_qutex = NULL; identity->phrases = NULL; identity->name = xt_core_string_copy(name); if (identity->name) { so_far_so_good = xt_core_bool_true; } else { so_far_so_good = xt_core_bool_false; xt_core_log_trace(log, " ta ", "xt_core_string_copy"); } } else { so_far_so_good = xt_core_bool_false; xt_core_log_trace(log, " ta ", "malloc"); } if (so_far_so_good) { identity->phrases = xt_case_list_create(ta_phrase_compare, ta_phrase_copy, ta_phrase_destroy); if (identity->phrases) { so_far_so_good = xt_core_bool_true; xt_case_list_set_size_limit(identity->phrases, MAX_PHRASES_SIZE); } else { so_far_so_good = xt_core_bool_false; xt_core_log_enter(log, " ta ", "xt_case_list_create"); } } if (so_far_so_good) { identity->phrases_qutex = xt_sync_qutex_create(); if (!identity->phrases_qutex) { so_far_so_good = xt_core_bool_false; xt_core_log_enter(log, " ta ", "xt_sync_qutex_create"); } } if (identity && !so_far_so_good) { if (identity->name) { xt_core_string_destroy(identity->name); } if (identity->phrases) { xt_case_list_destroy(identity->phrases); } if (identity->phrases_qutex) { xt_sync_qutex_destroy(identity->phrases_qutex); } free(identity); identity = NULL; } return identity; }
void ta_identity_destroy_decoy(void *identity_decoy_object) { assert(identity_decoy_object); ta_identity_t *identity = identity_decoy_object; xt_core_string_destroy(identity->name); free(identity); }
void ta_identity_destroy(void *identity_object) { assert(identity_object); ta_identity_t *identity = identity_object; xt_core_string_destroy(identity->name); xt_case_list_destroy(identity->phrases); xt_sync_qutex_destroy(identity->phrases_qutex); free(identity); }
xt_core_bool_t xt_net_http_message_create_uri (xt_net_http_message_t *http_message) { assert(http_message->resource_path); xt_core_bool_t success; char *parameters; char *parameter; char *name; char *value; char *parameter_context; char *nameobject_context; xt_core_nameobject_t *nameobject; char *resource_name; char *decoded_value; nameobject_context = NULL; resource_name = strtok(http_message->resource_path, "?"); http_message->resource_name = strdup(resource_name); /* TODO: check the result of the strdup! */ parameters = strtok(NULL, "?"); if (parameters) { http_message->uri_parameters = xt_case_set_create(&http_message->nameobject_iobject); if (http_message->uri_parameters) { success = xt_core_bool_true; parameter = strtok_r(parameters, "&", ¶meter_context); while (parameter) { name = strtok_r(parameter, "=", &nameobject_context); value = strtok_r(NULL, "=", &nameobject_context); if (name && value) { decoded_value = xt_net_http_decode_uri(value, strlen(value)); if (decoded_value) { nameobject = xt_core_nameobject_create(name, decoded_value, xt_core_string_copy, xt_core_string_destroy, xt_core_string_get_as_string); if (nameobject) { if (!xt_case_set_add (http_message->uri_parameters, nameobject)) { xt_core_nameobject_destroy(nameobject); } } else { xt_core_trace("x_core_nameobject_create"); success = xt_core_bool_false; } xt_core_string_destroy(decoded_value); } else { xt_core_trace("xt_net_http_decode_uri"); } } parameter = strtok_r(NULL, "&", ¶meter_context); } } else { xt_core_trace("x_case_set_create"); success = xt_core_bool_false; } } else { http_message->uri_parameters = NULL; success = xt_core_bool_true; } return success; }