Commit 5c4514cf authored by Sylvain Berfini's avatar Sylvain Berfini 🎩

Added missing exports

parent d6ed4ddf
This diff is collapsed.
......@@ -42,32 +42,32 @@ BELLESIP_EXPORT belle_sip_request_t *belle_sip_dialog_create_request(belle_sip_d
* @param initial_req, all headers + body are re-used from this request except: Via,From, To, Allows, CSeq, Call-ID, Max-Forwards
*
*/
belle_sip_request_t * belle_sip_dialog_create_request_from(belle_sip_dialog_t *obj, const belle_sip_request_t *initial_req);
BELLESIP_EXPORT belle_sip_request_t * belle_sip_dialog_create_request_from(belle_sip_dialog_t *obj, const belle_sip_request_t *initial_req);
void belle_sip_dialog_delete(belle_sip_dialog_t *dialog);
void *belle_sip_dialog_get_application_data(const belle_sip_dialog_t *dialog);
BELLESIP_EXPORT void *belle_sip_dialog_get_application_data(const belle_sip_dialog_t *dialog);
void belle_sip_dialog_set_application_data(belle_sip_dialog_t *dialog, void *data);
BELLESIP_EXPORT void belle_sip_dialog_set_application_data(belle_sip_dialog_t *dialog, void *data);
const char *belle_sip_dialog_get_dialog_id(const belle_sip_dialog_t *dialog);
const belle_sip_header_call_id_t *belle_sip_dialog_get_call_id(const belle_sip_dialog_t *dialog);
BELLESIP_EXPORT const belle_sip_header_call_id_t *belle_sip_dialog_get_call_id(const belle_sip_dialog_t *dialog);
const belle_sip_header_address_t *belle_sip_dialog_get_local_party(const belle_sip_dialog_t *dialog);
BELLESIP_EXPORT const belle_sip_header_address_t *belle_sip_dialog_get_local_party(const belle_sip_dialog_t *dialog);
const belle_sip_header_address_t *belle_sip_dialog_get_remote_party(const belle_sip_dialog_t *dialog);
BELLESIP_EXPORT const belle_sip_header_address_t *belle_sip_dialog_get_remote_party(const belle_sip_dialog_t *dialog);
/*
* get the value of the last cseq used to issue a request
*@return local cseq
* */
unsigned int belle_sip_dialog_get_local_seq_number(const belle_sip_dialog_t *dialog);
BELLESIP_EXPORT unsigned int belle_sip_dialog_get_local_seq_number(const belle_sip_dialog_t *dialog);
unsigned int belle_sip_dialog_get_remote_seq_number(const belle_sip_dialog_t *dialog);
const char *belle_sip_dialog_get_local_tag(const belle_sip_dialog_t *dialog);
BELLESIP_EXPORT const char *belle_sip_dialog_get_local_tag(const belle_sip_dialog_t *dialog);
const char *belle_sip_dialog_get_remote_tag(const belle_sip_dialog_t *dialog);
BELLESIP_EXPORT const char *belle_sip_dialog_get_remote_tag(const belle_sip_dialog_t *dialog);
const belle_sip_header_address_t *belle_sip_dialog_get_remote_target(belle_sip_dialog_t *dialog);
......@@ -79,10 +79,10 @@ BELLESIP_EXPORT belle_sip_dialog_state_t belle_sip_dialog_get_state(const belle_
* @param dialog
* @returns state
* */
belle_sip_dialog_state_t belle_sip_dialog_get_previous_state(const belle_sip_dialog_t *dialog);
BELLESIP_EXPORT belle_sip_dialog_state_t belle_sip_dialog_get_previous_state(const belle_sip_dialog_t *dialog);
int belle_sip_dialog_is_server(const belle_sip_dialog_t *dialog);
BELLESIP_EXPORT int belle_sip_dialog_is_server(const belle_sip_dialog_t *dialog);
int belle_sip_dialog_is_secure(const belle_sip_dialog_t *dialog);
......
......@@ -31,7 +31,7 @@
typedef struct _belle_sip_header_address belle_sip_header_address_t;
belle_sip_header_address_t* belle_sip_header_address_new();
BELLESIP_EXPORT belle_sip_header_address_t* belle_sip_header_address_new();
/*
* creates an address from a display name and an uri
* Note the uri not copied but only its ref count is incremented
......@@ -59,7 +59,7 @@ BELLESIP_EXPORT const char* belle_sip_header_address_get_displayname(const belle
/**
*
*/
void belle_sip_header_address_set_displayname(belle_sip_header_address_t* address, const char* uri);
BELLESIP_EXPORT void belle_sip_header_address_set_displayname(belle_sip_header_address_t* address, const char* uri);
#define BELLE_SIP_HEADER_ADDRESS(t) BELLE_SIP_CAST(t,belle_sip_header_address_t)
......@@ -105,7 +105,7 @@ BELLESIP_EXPORT belle_sip_header_contact_t* belle_sip_header_contact_new();
BELLESIP_EXPORT belle_sip_header_contact_t* belle_sip_header_contact_parse (const char* contact) ;
belle_sip_header_contact_t* belle_sip_header_contact_create (const belle_sip_header_address_t* contact) ;
BELLESIP_EXPORT belle_sip_header_contact_t* belle_sip_header_contact_create (const belle_sip_header_address_t* contact) ;
/**
......@@ -213,15 +213,15 @@ BELLESIP_EXPORT const char* belle_sip_header_via_get_transport(const belle_sip_h
* Get lower case version of the transport
* @return the lower case version of the transport if from tcp,udp,tls or dtls else, return the value from #belle_sip_header_via_get_transport
*/
const char* belle_sip_header_via_get_transport_lowercase(const belle_sip_header_via_t* via);
BELLESIP_EXPORT const char* belle_sip_header_via_get_transport_lowercase(const belle_sip_header_via_t* via);
BELLESIP_EXPORT const char* belle_sip_header_via_get_host(const belle_sip_header_via_t* via);
BELLESIP_EXPORT int belle_sip_header_via_get_port(const belle_sip_header_via_t* via);
int belle_sip_header_via_get_listening_port(const belle_sip_header_via_t *via);
BELLESIP_EXPORT int belle_sip_header_via_get_listening_port(const belle_sip_header_via_t *via);
const char* belle_sip_header_via_get_maddr(const belle_sip_header_via_t* via);
BELLESIP_EXPORT const char* belle_sip_header_via_get_protocol(const belle_sip_header_via_t* via);
BELLESIP_EXPORT const char* belle_sip_header_via_get_received(const belle_sip_header_via_t* via);
int belle_sip_header_via_get_rport(const belle_sip_header_via_t* via);
BELLESIP_EXPORT int belle_sip_header_via_get_rport(const belle_sip_header_via_t* via);
int belle_sip_header_via_get_ttl(const belle_sip_header_via_t* via);
void belle_sip_header_via_set_branch(belle_sip_header_via_t* via,const char* branch);
......@@ -289,7 +289,7 @@ void belle_sip_header_content_type_set_subtype(belle_sip_header_content_type_t*
******************************/
typedef struct _belle_sip_header_expires belle_sip_header_expires_t;
belle_sip_header_expires_t* belle_sip_header_expires_new();
BELLESIP_EXPORT belle_sip_header_expires_t* belle_sip_header_expires_new();
BELLESIP_EXPORT belle_sip_header_expires_t* belle_sip_header_expires_parse (const char* expires) ;
BELLESIP_EXPORT int belle_sip_header_expires_get_expires(const belle_sip_header_expires_t* expires);
......@@ -339,7 +339,7 @@ BELLESIP_EXPORT belle_sip_header_expires_t* belle_sip_header_expires_create(int
******************************/
typedef struct _belle_sip_header_user_agent belle_sip_header_user_agent_t;
belle_sip_header_user_agent_t* belle_sip_header_user_agent_new();
BELLESIP_EXPORT belle_sip_header_user_agent_t* belle_sip_header_user_agent_new();
BELLESIP_EXPORT belle_sip_header_user_agent_t* belle_sip_header_user_agent_parse (const char* user_agent) ;
BELLESIP_EXPORT belle_sip_list_t* belle_sip_header_user_agent_get_products(const belle_sip_header_user_agent_t* user_agent);
......@@ -350,9 +350,9 @@ BELLESIP_EXPORT belle_sip_header_expires_t* belle_sip_header_expires_create(int
* @param value_size [in] size of the buffer
* @return number of written characters or -1 inca se of error;
*/
int belle_sip_header_user_agent_get_products_as_string(const belle_sip_header_user_agent_t* user_agent,char* value,unsigned int value_size);
void belle_sip_header_user_agent_set_products(belle_sip_header_user_agent_t* user_agent,belle_sip_list_t* value);
void belle_sip_header_user_agent_add_product(belle_sip_header_user_agent_t* user_agent,const char* product);
BELLESIP_EXPORT int belle_sip_header_user_agent_get_products_as_string(const belle_sip_header_user_agent_t* user_agent,char* value,unsigned int value_size);
BELLESIP_EXPORT void belle_sip_header_user_agent_set_products(belle_sip_header_user_agent_t* user_agent,belle_sip_list_t* value);
BELLESIP_EXPORT void belle_sip_header_user_agent_add_product(belle_sip_header_user_agent_t* user_agent,const char* product);
#define BELLE_SIP_HEADER_USER_AGENT(t) BELLE_SIP_CAST(t,belle_sip_header_user_agent_t)
/******************************
......@@ -494,7 +494,7 @@ typedef struct _belle_sip_header_subscription_state belle_sip_header_subscriptio
belle_sip_header_subscription_state_t* belle_sip_header_subscription_state_new();
BELLESIP_EXPORT belle_sip_header_subscription_state_t* belle_sip_header_subscription_state_parse (const char* subscription_state) ;
belle_sip_header_subscription_state_t* belle_sip_header_subscription_state_create (const char* subscription_state,int expires);
BELLESIP_EXPORT belle_sip_header_subscription_state_t* belle_sip_header_subscription_state_create (const char* subscription_state,int expires);
BELLESIP_EXPORT const char* belle_sip_header_subscription_state_get_state(const belle_sip_header_subscription_state_t* subscription_state);
BELLESIP_EXPORT int belle_sip_header_subscription_state_get_expires(const belle_sip_header_subscription_state_t* subscription_state);
......
......@@ -28,12 +28,12 @@ typedef struct _belle_sip_list belle_sip_list_t;
belle_sip_list_t * belle_sip_list_append(belle_sip_list_t * elem, void * data);
belle_sip_list_t * belle_sip_list_prepend(belle_sip_list_t * elem, void * data);
belle_sip_list_t * belle_sip_list_last_elem(const belle_sip_list_t *l);
belle_sip_list_t * belle_sip_list_free(belle_sip_list_t * elem);
BELLESIP_EXPORT belle_sip_list_t * belle_sip_list_free(belle_sip_list_t * elem);
belle_sip_list_t * belle_sip_list_concat(belle_sip_list_t * first, belle_sip_list_t * second);
belle_sip_list_t * belle_sip_list_remove(belle_sip_list_t * first, void *data);
int belle_sip_list_size(const belle_sip_list_t * first);
void belle_sip_list_for_each(const belle_sip_list_t * list, void (*func)(void *));
void belle_sip_list_for_each2(const belle_sip_list_t * list, void (*func)(void *, void *), void *user_data);
BELLESIP_EXPORT void belle_sip_list_for_each2(const belle_sip_list_t * list, void (*func)(void *, void *), void *user_data);
belle_sip_list_t * belle_sip_list_remove_link(belle_sip_list_t * list, belle_sip_list_t * elem);
belle_sip_list_t * belle_sip_list_delete_link(belle_sip_list_t * list, belle_sip_list_t * elem);
belle_sip_list_t * belle_sip_list_find(belle_sip_list_t * list, void *data);
......@@ -48,7 +48,7 @@ int belle_sip_list_position(const belle_sip_list_t * list, belle_sip_list_t * el
int belle_sip_list_index(const belle_sip_list_t * list, void *data);
belle_sip_list_t * belle_sip_list_insert_sorted(belle_sip_list_t * list, void *data, belle_sip_compare_func cmp);
belle_sip_list_t * belle_sip_list_insert(belle_sip_list_t * list, belle_sip_list_t * before, void *data);
belle_sip_list_t * belle_sip_list_copy(const belle_sip_list_t * list);
BELLESIP_EXPORT belle_sip_list_t * belle_sip_list_copy(const belle_sip_list_t * list);
/*copy list elements and associated data, using the supplied function pointer*/
belle_sip_list_t* belle_sip_list_copy_with_data(const belle_sip_list_t* list, void* (*copyfunc)(void*));
......
......@@ -44,7 +44,7 @@ BELLE_SIP_DECLARE_INTERFACE_END
/*Response event*/
BELLESIP_EXPORT belle_sip_response_t* belle_sip_response_event_get_response(const belle_sip_response_event_t* event);
BELLESIP_EXPORT belle_sip_client_transaction_t *belle_sip_response_event_get_client_transaction(const belle_sip_response_event_t* event);
belle_sip_dialog_t *belle_sip_response_event_get_dialog(const belle_sip_response_event_t* event);
BELLESIP_EXPORT belle_sip_dialog_t *belle_sip_response_event_get_dialog(const belle_sip_response_event_t* event);
/*Request event*/
BELLESIP_EXPORT belle_sip_request_t* belle_sip_request_event_get_request(const belle_sip_request_event_t* event);
......@@ -52,28 +52,28 @@ BELLESIP_EXPORT belle_sip_server_transaction_t *belle_sip_request_event_get_serv
BELLESIP_EXPORT belle_sip_dialog_t *belle_sip_request_event_get_dialog(const belle_sip_request_event_t* event);
/*Dialog terminated event*/
belle_sip_dialog_t* belle_sip_dialog_terminated_get_dialog(const belle_sip_dialog_terminated_event_t *event);
BELLESIP_EXPORT belle_sip_dialog_t* belle_sip_dialog_terminated_get_dialog(const belle_sip_dialog_terminated_event_t *event);
/**
* Timeout Event
*/
belle_sip_client_transaction_t *belle_sip_timeout_event_get_client_transaction(const belle_sip_timeout_event_t* event);
BELLESIP_EXPORT belle_sip_client_transaction_t *belle_sip_timeout_event_get_client_transaction(const belle_sip_timeout_event_t* event);
belle_sip_server_transaction_t *belle_sip_timeout_event_get_server_transaction(const belle_sip_timeout_event_t* event);
/**
* Transaction Termonated Event
*/
belle_sip_client_transaction_t *belle_sip_transaction_terminated_event_get_client_transaction(const belle_sip_transaction_terminated_event_t* event);
belle_sip_server_transaction_t *belle_sip_transaction_terminated_event_get_server_transaction(const belle_sip_transaction_terminated_event_t* event);
BELLESIP_EXPORT belle_sip_client_transaction_t *belle_sip_transaction_terminated_event_get_client_transaction(const belle_sip_transaction_terminated_event_t* event);
BELLESIP_EXPORT belle_sip_server_transaction_t *belle_sip_transaction_terminated_event_get_server_transaction(const belle_sip_transaction_terminated_event_t* event);
/*auth event*/
void belle_sip_auth_event_destroy(belle_sip_auth_event_t* event);
BELLESIP_EXPORT void belle_sip_auth_event_destroy(belle_sip_auth_event_t* event);
BELLESIP_EXPORT const char* belle_sip_auth_event_get_username(const belle_sip_auth_event_t* event);
void belle_sip_auth_event_set_username(belle_sip_auth_event_t* event, const char* value);
const char* belle_sip_auth_event_get_userid(const belle_sip_auth_event_t* event);
void belle_sip_auth_event_set_userid(belle_sip_auth_event_t* event, const char* value);
BELLESIP_EXPORT void belle_sip_auth_event_set_userid(belle_sip_auth_event_t* event, const char* value);
BELLESIP_EXPORT const char* belle_sip_auth_event_get_realm(const belle_sip_auth_event_t* event);
void belle_sip_auth_event_set_realm(belle_sip_auth_event_t* event, const char* value);
......@@ -82,7 +82,7 @@ const char* belle_sip_auth_event_get_passwd(const belle_sip_auth_event_t* event)
BELLESIP_EXPORT void belle_sip_auth_event_set_passwd(belle_sip_auth_event_t* event, const char* value);
const char* belle_sip_auth_event_get_ha1(const belle_sip_auth_event_t* event);
void belle_sip_auth_event_set_ha1(belle_sip_auth_event_t* event, const char* value);
BELLESIP_EXPORT void belle_sip_auth_event_set_ha1(belle_sip_auth_event_t* event, const char* value);
/*Io error event*/
/*
......@@ -110,7 +110,7 @@ unsigned int belle_sip_io_error_event_port(const belle_sip_io_error_event_t* eve
* @return belle_sip_object_t source, use belle_sip_object_is_instance_of to check returns type
* */
belle_sip_object_t* belle_sip_io_error_event_get_source(const belle_sip_io_error_event_t* event);
BELLESIP_EXPORT belle_sip_object_t* belle_sip_io_error_event_get_source(const belle_sip_io_error_event_t* event);
struct belle_sip_listener_callbacks{
......
......@@ -24,7 +24,7 @@ BELLE_SIP_BEGIN_DECLS
const char *belle_sip_listening_point_get_ip_address(const belle_sip_listening_point_t *lp);
int belle_sip_listening_point_get_port(const belle_sip_listening_point_t *lp);
const char *belle_sip_listening_point_get_transport(const belle_sip_listening_point_t *lp);
BELLESIP_EXPORT const char *belle_sip_listening_point_get_transport(const belle_sip_listening_point_t *lp);
const char *belle_sip_listening_point_get_ip_address(const belle_sip_listening_point_t *lp);
/*
* set keep alive frequency in ms
......@@ -49,7 +49,7 @@ int belle_sip_listening_point_get_keep_alive(const belle_sip_listening_point_t *
BELLESIP_EXPORT const belle_sip_uri_t* belle_sip_listening_point_get_uri(const belle_sip_listening_point_t *ip);
int belle_sip_listening_point_is_reliable(const belle_sip_listening_point_t *lp);
void belle_sip_listening_point_clean_channels(belle_sip_listening_point_t *lp);
int belle_sip_listening_point_get_well_known_port(const char *transport);
BELLESIP_EXPORT int belle_sip_listening_point_get_well_known_port(const char *transport);
BELLE_SIP_END_DECLS
......
......@@ -96,7 +96,7 @@ void belle_sip_message_remove_last(belle_sip_message_t *msg, const char *header_
BELLESIP_EXPORT void belle_sip_message_remove_header(belle_sip_message_t *msg, const char *header_name);
char *belle_sip_message_to_string(belle_sip_message_t *msg);
const char* belle_sip_message_get_body(belle_sip_message_t *msg);
BELLESIP_EXPORT const char* belle_sip_message_get_body(belle_sip_message_t *msg);
BELLESIP_EXPORT void belle_sip_message_set_body(belle_sip_message_t *msg,const char* body,unsigned int size);
/*message keep ownership of the null terminated body buffer
void belle_sip_message_assign_body(belle_sip_message_t *msg,char* body);*/
......
......@@ -227,7 +227,7 @@ BELLESIP_EXPORT char* belle_sip_object_to_string(belle_sip_object_t* obj);
* Writes a string representation of the object into the supplied buffer.
* Same as belle_sip_object_to_string(), but without allocating space for the output string.
**/
int belle_sip_object_marshal(belle_sip_object_t* obj, char* buff,unsigned int offset,size_t buff_size);
BELLESIP_EXPORT int belle_sip_object_marshal(belle_sip_object_t* obj, char* buff,unsigned int offset,size_t buff_size);
BELLESIP_EXPORT int belle_sip_object_is_instance_of(belle_sip_object_t * obj,belle_sip_type_id_t id);
......
......@@ -30,7 +30,7 @@ typedef struct _belle_sip_parameters belle_sip_parameters_t;
belle_sip_parameters_t* belle_sip_parameters_new();
/*
* remove all parameters */
void belle_sip_parameters_clean(belle_sip_parameters_t* params);
BELLESIP_EXPORT void belle_sip_parameters_clean(belle_sip_parameters_t* params);
BELLESIP_EXPORT const char* belle_sip_parameters_get_parameter(const belle_sip_parameters_t* obj,const char* name);
......@@ -43,7 +43,7 @@ const char* belle_sip_parameters_get_case_parameter(const belle_sip_parameters_t
*/
BELLESIP_EXPORT unsigned int belle_sip_parameters_is_parameter(const belle_sip_parameters_t* obj,const char* name);
void belle_sip_parameters_set_parameter(belle_sip_parameters_t* obj,const char* name,const char* value);
BELLESIP_EXPORT void belle_sip_parameters_set_parameter(belle_sip_parameters_t* obj,const char* name,const char* value);
const belle_sip_list_t * belle_sip_parameters_get_parameter_names(const belle_sip_parameters_t* obj);
......
......@@ -56,6 +56,6 @@ BELLESIP_EXPORT int belle_sip_refresher_refresh(belle_sip_refresher_t* refresher
/**
* returns current expires value;
*/
int belle_sip_refresher_get_expires(const belle_sip_refresher_t* refresher);
BELLESIP_EXPORT int belle_sip_refresher_get_expires(const belle_sip_refresher_t* refresher);
#endif /* REFRESHER_HELPER_H_ */
......@@ -34,10 +34,10 @@ BELLE_SIP_BEGIN_DECLS
const char *belle_sip_transaction_state_to_string(belle_sip_transaction_state_t state);
void *belle_sip_transaction_get_application_data(const belle_sip_transaction_t *t);
void belle_sip_transaction_set_application_data(belle_sip_transaction_t *t, void *data);
BELLESIP_EXPORT void *belle_sip_transaction_get_application_data(const belle_sip_transaction_t *t);
BELLESIP_EXPORT void belle_sip_transaction_set_application_data(belle_sip_transaction_t *t, void *data);
const char *belle_sip_transaction_get_branch_id(const belle_sip_transaction_t *t);
belle_sip_transaction_state_t belle_sip_transaction_get_state(const belle_sip_transaction_t *t);
BELLESIP_EXPORT belle_sip_transaction_state_t belle_sip_transaction_get_state(const belle_sip_transaction_t *t);
void belle_sip_transaction_terminate(belle_sip_transaction_t *t);
BELLESIP_EXPORT belle_sip_request_t *belle_sip_transaction_get_request(const belle_sip_transaction_t *t);
BELLESIP_EXPORT belle_sip_response_t *belle_sip_transaction_get_response(const belle_sip_transaction_t *t);
......@@ -45,7 +45,7 @@ BELLESIP_EXPORT belle_sip_dialog_t* belle_sip_transaction_get_dialog(const bell
BELLESIP_EXPORT void belle_sip_server_transaction_send_response(belle_sip_server_transaction_t *t, belle_sip_response_t *resp);
belle_sip_request_t * belle_sip_client_transaction_create_cancel(belle_sip_client_transaction_t *t);
BELLESIP_EXPORT belle_sip_request_t * belle_sip_client_transaction_create_cancel(belle_sip_client_transaction_t *t);
BELLESIP_EXPORT int belle_sip_client_transaction_send_request(belle_sip_client_transaction_t *t);
/*
* Same as #belle_sip_client_transaction_send_request but with a predefined route.
......
......@@ -111,7 +111,7 @@ typedef struct _belle_sip_uri belle_sip_uri_t;
* Sets the value of the specified header fields to be included in a request constructed from the URI.
*
*/
void belle_sip_uri_set_header(belle_sip_uri_t* uri,const char*name, const char*value) ;
BELLESIP_EXPORT void belle_sip_uri_set_header(belle_sip_uri_t* uri,const char*name, const char*value) ;
/**
* Set the host part of this SipURI to the newly supplied host parameter.
*
......@@ -136,7 +136,7 @@ typedef struct _belle_sip_uri belle_sip_uri_t;
* Set the port part of this SipURI to the newly supplied port parameter.
*
*/
void belle_sip_uri_set_port(belle_sip_uri_t* uri,unsigned int port) ;
BELLESIP_EXPORT void belle_sip_uri_set_port(belle_sip_uri_t* uri,unsigned int port) ;
/**
* Sets the scheme of this URI to sip or sips depending on whether the argument is true or false.
*
......
......@@ -131,13 +131,13 @@ BELLESIP_EXPORT void belle_sip_set_log_handler(belle_sip_log_function_t func);
BELLESIP_EXPORT void belle_sip_set_log_level(int level);
char * belle_sip_random_token(char *ret, size_t size);
BELLESIP_EXPORT char * belle_sip_random_token(char *ret, size_t size);
char * belle_sip_octets_to_text(const unsigned char *hash, size_t hash_len, char *ret, size_t size);
char * belle_sip_create_tag(char *ret, size_t size);
const char* belle_sip_version_to_string();
BELLESIP_EXPORT const char* belle_sip_version_to_string();
#if defined(WIN32)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment