diff --git a/include/belle-sip/headers.h b/include/belle-sip/headers.h
index 997fad19cbd4c9dd070ea5b4343d81b657b5dc8d..35222f72bf2e1ffbd082cb488c71ef8e9d92cdf1 100644
--- a/include/belle-sip/headers.h
+++ b/include/belle-sip/headers.h
@@ -92,6 +92,15 @@ BELLESIP_EXPORT const char* belle_sip_header_address_get_displayname(const belle
  */
 BELLESIP_EXPORT void belle_sip_header_address_set_displayname(belle_sip_header_address_t* address, const char* uri);
 
+/*
+ * Clone both display name and an uri from an belle_sip_header_address_t to a newly allocated belle_sip_header_address_t
+ * @param orig, originating header adderss.
+ * @return belle_sip_header_address_t
+ * */
+BELLESIP_EXPORT belle_sip_header_address_t* belle_sip_header_address_clone(const belle_sip_header_address_t* orig);
+
+
+
 #define BELLE_SIP_HEADER_ADDRESS(t) BELLE_SIP_CAST(t,belle_sip_header_address_t)
 
 
diff --git a/src/belle_sip_headers_impl.c b/src/belle_sip_headers_impl.c
index 270dec1c1eb60fb2d79338562e936d7793f92b09..67a94cae66378eba8ff54c15925431c0d0a80857 100644
--- a/src/belle_sip_headers_impl.c
+++ b/src/belle_sip_headers_impl.c
@@ -199,7 +199,7 @@ static void belle_sip_header_address_destroy(belle_sip_header_address_t* address
 	if (address->absolute_uri) belle_sip_object_unref(address->absolute_uri);
 }
 
-static void belle_sip_header_address_clone(belle_sip_header_address_t *addr, const belle_sip_header_address_t *orig){
+static void _belle_sip_header_address_clone(belle_sip_header_address_t *addr, const belle_sip_header_address_t *orig){
 	CLONE_STRING(belle_sip_header_address,displayname,addr,orig)
 	if (belle_sip_header_address_get_uri(orig)) {
 		belle_sip_header_address_set_uri(addr,BELLE_SIP_URI(belle_sip_object_clone(BELLE_SIP_OBJECT(belle_sip_header_address_get_uri(orig)))));
@@ -208,7 +208,11 @@ static void belle_sip_header_address_clone(belle_sip_header_address_t *addr, con
 		belle_sip_header_address_set_absolute_uri(addr,BELLE_GENERIC_URI(belle_sip_object_clone(BELLE_SIP_OBJECT(belle_sip_header_address_get_absolute_uri(orig)))));
 	}
 }
-
+belle_sip_header_address_t* belle_sip_header_address_clone(const belle_sip_header_address_t* orig) {
+	belle_sip_header_address_t* new_address = belle_sip_header_address_new();
+	_belle_sip_header_address_clone(new_address, orig);
+	return new_address;
+}
 static belle_sip_error_code _belle_sip_header_address_marshal(belle_sip_header_address_t* header, char* buff, size_t buff_size, size_t *offset, int force_angle_quote) {
 	belle_sip_error_code error=BELLE_SIP_OK;
 	/*1 display name*/
@@ -253,7 +257,7 @@ static belle_sip_error_code _belle_sip_header_address_marshal(belle_sip_header_a
 belle_sip_error_code belle_sip_header_address_marshal(belle_sip_header_address_t* header, char* buff, size_t buff_size, size_t *offset){
 	return _belle_sip_header_address_marshal(header, buff, buff_size, offset, FALSE);
 }
-
+#define belle_sip_header_address_clone _belle_sip_header_address_clone /*because public clone function is not the one to be used internally*/
 BELLE_SIP_NEW_HEADER(header_address,parameters,"header_address")
 BELLE_SIP_PARSE(header_address)
 GET_SET_STRING(belle_sip_header_address,displayname);
diff --git a/tester/belle_sip_headers_tester.c b/tester/belle_sip_headers_tester.c
index b0a019baa721844097624623de266d2ba1d764f1..7ea5ff4805126cdc1287fd30ab64b42d6c99d339 100644
--- a/tester/belle_sip_headers_tester.c
+++ b/tester/belle_sip_headers_tester.c
@@ -741,11 +741,14 @@ static void test_address_with_error_header(void) {
 static void test_address_header(void) {
 	belle_sip_uri_t* L_uri;
 	char* L_raw;
+	belle_sip_header_address_t* lclonedaddr;
+
 	belle_sip_header_address_t* laddress = belle_sip_header_address_fast_parse("\"toto\" <sip:liblinphone_tester@81.56.11.2:5060>");
 	BC_ASSERT_PTR_NOT_NULL(laddress);
-	L_raw = belle_sip_object_to_string(BELLE_SIP_OBJECT(laddress));
+	L_raw = belle_sip_object_to_string(BELLE_SIP_OBJECT(lclonedaddr=belle_sip_header_address_clone(laddress)));
 	BC_ASSERT_PTR_NOT_NULL(L_raw);
 	belle_sip_object_unref(BELLE_SIP_OBJECT(laddress));
+	belle_sip_object_unref(BELLE_SIP_OBJECT(lclonedaddr));
 	laddress = belle_sip_header_address_parse(L_raw);
 	belle_sip_free(L_raw);