@@ -47,6 +47,7 @@ static void _mdns_search_result_add_txt(mdns_search_once_t * search, mdns_txt_it
47
47
static mdns_result_t * _mdns_search_result_add_ptr (mdns_search_once_t * search , const char * instance , mdns_if_t tcpip_if , mdns_ip_protocol_t ip_protocol );
48
48
static bool _mdns_append_host_list_in_services (mdns_out_answer_t * * destination , mdns_srv_item_t * services [], size_t services_len , bool flush , bool bye );
49
49
static bool _mdns_append_host_list (mdns_out_answer_t * * destination , bool flush , bool bye );
50
+ static void _mdns_remap_self_service_hostname (const char * old_hostname , const char * new_hostname );
50
51
51
52
/*
52
53
* @brief Internal collection of mdns supported interfaces
@@ -3227,8 +3228,10 @@ void mdns_parse_packet(mdns_rx_packet_t * packet)
3227
3228
} else {
3228
3229
char * new_host = _mdns_mangle_name ((char * )_mdns_server -> hostname );
3229
3230
if (new_host ) {
3231
+ _mdns_remap_self_service_hostname (_mdns_server -> hostname , new_host );
3230
3232
free ((char * )_mdns_server -> hostname );
3231
3233
_mdns_server -> hostname = new_host ;
3234
+ _mdns_self_host .hostname = new_host ;
3232
3235
}
3233
3236
_mdns_restart_all_pcbs ();
3234
3237
}
@@ -3333,8 +3336,10 @@ void mdns_parse_packet(mdns_rx_packet_t * packet)
3333
3336
_mdns_server -> interfaces [packet -> tcpip_if ].pcbs [packet -> ip_protocol ].failed_probes ++ ;
3334
3337
char * new_host = _mdns_mangle_name ((char * )_mdns_server -> hostname );
3335
3338
if (new_host ) {
3339
+ _mdns_remap_self_service_hostname (_mdns_server -> hostname , new_host );
3336
3340
free ((char * )_mdns_server -> hostname );
3337
3341
_mdns_server -> hostname = new_host ;
3342
+ _mdns_self_host .hostname = new_host ;
3338
3343
}
3339
3344
_mdns_restart_all_pcbs ();
3340
3345
}
@@ -3381,8 +3386,10 @@ void mdns_parse_packet(mdns_rx_packet_t * packet)
3381
3386
_mdns_server -> interfaces [packet -> tcpip_if ].pcbs [packet -> ip_protocol ].failed_probes ++ ;
3382
3387
char * new_host = _mdns_mangle_name ((char * )_mdns_server -> hostname );
3383
3388
if (new_host ) {
3389
+ _mdns_remap_self_service_hostname (_mdns_server -> hostname , new_host );
3384
3390
free ((char * )_mdns_server -> hostname );
3385
3391
_mdns_server -> hostname = new_host ;
3392
+ _mdns_self_host .hostname = new_host ;
3386
3393
}
3387
3394
_mdns_restart_all_pcbs ();
3388
3395
}
@@ -4087,6 +4094,19 @@ static void _mdns_tx_handle_packet(mdns_tx_packet_t * p)
4087
4094
}
4088
4095
}
4089
4096
4097
+ static void _mdns_remap_self_service_hostname (const char * old_hostname , const char * new_hostname )
4098
+ {
4099
+ mdns_srv_item_t * service = _mdns_server -> services ;
4100
+
4101
+ while (service ) {
4102
+ if (strcmp (service -> service -> hostname , old_hostname ) == 0 ) {
4103
+ free ((char * )service -> service -> hostname );
4104
+ service -> service -> hostname = strdup (new_hostname );
4105
+ }
4106
+ service = service -> next ;
4107
+ }
4108
+ }
4109
+
4090
4110
/**
4091
4111
* @brief Free action data
4092
4112
*/
@@ -4154,6 +4174,7 @@ static void _mdns_execute_action(mdns_action_t * action)
4154
4174
break ;
4155
4175
case ACTION_HOSTNAME_SET :
4156
4176
_mdns_send_bye_all_pcbs_no_instance (true);
4177
+ _mdns_remap_self_service_hostname (_mdns_server -> hostname , action -> data .hostname_set .hostname );
4157
4178
free ((char * )_mdns_server -> hostname );
4158
4179
_mdns_server -> hostname = action -> data .hostname_set .hostname ;
4159
4180
_mdns_self_host .hostname = action -> data .hostname_set .hostname ;
0 commit comments