@@ -4442,9 +4442,9 @@ lxb_url_api_hash_set(lxb_url_t *url, lxb_url_parser_t *parser,
44424442 return status ;
44434443}
44444444
4445- lxb_status_t
4446- lxb_url_serialize ( const lxb_url_t * url , lexbor_serialize_cb_f cb , void * ctx ,
4447- bool exclude_fragment )
4445+ static lxb_status_t
4446+ lxb_url_serialize_body ( lxb_unicode_idna_t * idna , const lxb_url_t * url , lexbor_serialize_cb_f cb ,
4447+ void * ctx , bool exclude_fragment )
44484448{
44494449 lxb_status_t status ;
44504450 const lexbor_str_t * str ;
@@ -4484,7 +4484,12 @@ lxb_url_serialize(const lxb_url_t *url, lexbor_serialize_cb_f cb, void *ctx,
44844484 lexbor_serialize_write (cb , at_str .data , at_str .length , ctx , status );
44854485 }
44864486
4487- status = lxb_url_serialize_host (& url -> host , cb , ctx );
4487+ if (idna != NULL ) {
4488+ status = lxb_url_serialize_host_unicode (idna , & url -> host , cb , ctx );
4489+ } else {
4490+ status = lxb_url_serialize_host (& url -> host , cb , ctx );
4491+ }
4492+
44884493 if (status != LXB_STATUS_OK ) {
44894494 return status ;
44904495 }
@@ -4529,6 +4534,20 @@ lxb_url_serialize(const lxb_url_t *url, lexbor_serialize_cb_f cb, void *ctx,
45294534 return LXB_STATUS_OK ;
45304535}
45314536
4537+ lxb_status_t
4538+ lxb_url_serialize (const lxb_url_t * url , lexbor_serialize_cb_f cb , void * ctx ,
4539+ bool exclude_fragment )
4540+ {
4541+ return lxb_url_serialize_body (NULL , url , cb , ctx , exclude_fragment );
4542+ }
4543+
4544+ lxb_status_t
4545+ lxb_url_serialize_idna (lxb_unicode_idna_t * idna , const lxb_url_t * url , lexbor_serialize_cb_f cb ,
4546+ void * ctx , bool exclude_fragment )
4547+ {
4548+ return lxb_url_serialize_body (idna , url , cb , ctx , exclude_fragment );
4549+ }
4550+
45324551lxb_status_t
45334552lxb_url_serialize_scheme (const lxb_url_t * url ,
45344553 lexbor_serialize_cb_f cb , void * ctx )
0 commit comments