Commit Graph

79 Commits

Author SHA1 Message Date
Angus Gratton
dcd735759e Merge branch 'bugfix/mdns_deinit_event_crash_v4.0' into 'release/v4.0'
mdns: fixed crash on event during deinit (v4.0)

See merge request espressif/esp-idf!7246
2020-01-09 13:02:28 +08:00
David Cermak
1f263434a6 mdns: fixed crash on event during deinit
mdns library deinitialization destroys internal structures including action queue. if an event (e.g. network update) received
after some essential stucture is destoyed, an unexpected behavour might be introduced (e.g. crash of adding the event notification
to the action queue which was already destroyed

Closes WIFI-1485
2020-01-08 10:27:30 +01:00
David Cermak
06cc4e888d mdns: respond to discovery with the proper pseudo name _services._dns-sd._udp
Closes https://github.com/espressif/esp-idf/issues/4369
Closes IDFGH-2219
2020-01-08 10:21:28 +01:00
Marius Vikhammer
5e042803a2 mdns: fix crash for hostname queries
Receiving TXT, PTR, SDPTR and SRV record type queries would crash the application if the hostname
 was used as instance name.

Closes https://github.com/espressif/esp-idf/issues/4224
2019-11-05 11:31:18 +00:00
Jiang Jiang Jian
5a686d7ad1 Merge branch 'bugfix/mdns_answer_ip6_size_v4.0' into 'release/v4.0'
mdns: use constant size of AAAA answer instead of lw_IP struct size (v4.0)

See merge request espressif/esp-idf!6453
2019-11-02 17:17:45 +08:00
David Cermak
29690afc57 mdns: use constant size of AAAA answer in mdns packets instead of deriving from lwip struct size, since the struct could contain also zones
closes WIFI-771
2019-11-01 09:50:42 +00:00
David Cermak
98450e80e5 mdns: fix possible race condition when checking DHCP status on WIFI_EVENT_STA_CONNECTED event.
tcpip_adapter_dhcpc_get_status() returns the actual internal value of dhcp client without any locking or TCP/IP stack context call, so when CONNECTED event fired with default settings it started DHCP client in TCP/IP stack context and at the same time mdns event handler checking actual DHCP state, which could still be INIT (not STARTED). Purpose of this check is to enable PCB if DHCP was stopped before setting network interface up (typically static IP settings), so the solutin is to check against TCPIP_ADAPTER_DHCP_STOPPED state
2019-11-01 07:51:49 +00:00
Angus Gratton
1b6010bedf Merge branch 'bugfix/mdns_fix_discard_packet_on_invalid_name' into 'master'
mdns: fix ignoring mdns packet if contained an invalid name entries in question field

See merge request espressif/esp-idf!5307
2019-07-27 17:25:25 +08:00
suda-morris
90c4827bd2 add esp_eth component 2019-06-26 10:19:23 +08:00
Renz Christian Bagaporo
9eccd7c082 components: use new component registration api 2019-06-21 19:53:29 +08:00
Angus Gratton
8aa6fb241d Merge branch 'bugfix/malloc_warnings_mdns' into 'master'
mdns: fix static analysis warnings

See merge request idf/esp-idf!5143
2019-06-21 13:10:06 +08:00
David Cermak
4bd4c7caf3 mdns: fix ignoring mdns packet with some invalid name entries in question field
In case of invalid name entry, only this entry is invalidated and parsing continues as other query entries could contain questions to be responded to
2019-06-20 14:25:12 +02:00
David Cermak
e6801912c5 mdns: added initial suite of api unit tests 2019-06-12 08:18:25 +02:00
David Cermak
c34de4cba6 mdns: fix static analysis warnings 2019-06-10 13:21:07 +00:00
David Cermak
38d15cbd63 mdns tests: adapt mdns fuzzer test to compile with event loop library 2019-05-27 16:31:25 +02:00
David Cermak
af48977f21 mdns: fixed mdns crashing on reception of txt packet without a corresponding service
closes #2866
2019-05-03 16:37:43 +02:00
David Cermak
c050a75616 mdns: use const char* for mdns txt items types to remove warning when assigning 2019-05-03 16:31:32 +02:00
David Cermak
a851aac255 mdns: updated doxygen comments documenting mdns api
Closes https://github.com/espressif/esp-idf/issues/1718
2019-05-03 16:29:12 +02:00
David Cermak
eddd5c4f2c mdns: update mdns_out_question_s to be in line with mdns_parsed_question_s struct
Closes  https://github.com/espressif/esp-idf/issues/1568
2019-05-03 14:54:59 +02:00
Ivan Grokhotkov
a2d59525e5 mdns: use esp_event library to handle events 2019-04-11 12:04:58 +08:00
David Cermak
bc60bbbeaf fuzzer tests: update of mdns and lwip host compilation for fuzzer testing
Closes IDF-540
2019-03-22 11:37:26 +01:00
David Cermak
265e983a45 mdns: fix possible crash when probing on particular interface with duplicated service instances due to naming conflicts on network
Issue: MDNS server initially sends probing packets to resolve naming confilicts with already registered service instances. In case of a conflict, instance name is altered and probing restarts. Original instance however wasnnot removed from the structure and upon service removal only one entry was removed and a dangling service might have been kept in the structure to bring about a crash.
Resolution: Keep only one instance of a service in the probing structure.

Closes IDF-498
2019-03-13 10:22:41 +01:00
David Cermak
c87f0cb6ca mdns: enable pcbs before starting service thread to avoid updating pcb's internal variables from concurent tasks
possible race condition: user task runs mdns_init, which enables pcbs while mdns-task already created could execute enable/disable of the same pcbs if an appropriate system event received
2019-03-13 10:22:41 +01:00
David Cermak
48b5501c25 mdns: fix possible deadlock on mdns deinit calling mdns_free()
mnds_free() initiates stop and delete timer tasks, which after locking the mutex could lead to a dead lock in case timer task executed before deleting the task, as it would wait indefinitelly for unlocking the mutex. This condition is fixed by calling _mdns_stop_timer without locking the mutex, because there's no need to protect any data when stopping and deleting the timer task

Closes https://github.com/espressif/esp-idf/issues/1696
2019-03-13 10:22:41 +01:00
David Cermak
021dc5d453 mdsn: fix race condition in updating packet data from user task when failed to allocate or queue a new service
Issue: mdns_service_add API allocates and queues an action to be processed in mdns task context; when allocation or queueing fails, allocated structure needs to be freed. Function _mdns_free_service did not only fee all the structures, but also updates packet data.
Resolution: Moved removal of packet data outside of _mdns_free_service function.
2019-03-13 10:22:41 +01:00
David Cermak
67051a286b mdns: fix possible crash when packet scheduled to transmit contained service which might have been already removed
packets scheduled to transmit are pushed to action queue and removed from tx_queue_head structure, which is searched for all remaining services and while service is removed, then service questions/asnwers are also removed from this structure. This update fixes possible crash when packet is pushed to action queue, and when service is removed, its answers are removed from tx_queue_head, but not from action queue. this could lead to a crash when the packet is poped from action queue containing questions/answers to already removed (freed) service

Closes IDF-504
2019-03-13 10:22:41 +01:00
Ivan Grokhotkov
eef0b5090a mdns: use binary semaphore instead of mutex when searching
mdns_search_once_t::lock is used to synchronize tasks (taken by one
task and given by the other) so it should not be a mutex.
Convert to semaphore, and rename to indicate its purpose.
2019-03-12 09:33:06 +01:00
David Cermak
8462751f95 mdns: fix memory leak in pbuf if tcpipadapter failed to get netif 2019-02-15 15:59:11 +01:00
David Cermak
1a027734af mdns: fix malfuctional query_txt
when running a query for a single txt, result entries were not created and attached to result structure. this issue was introduced when fixing memory leak in txt structure, which worked correctly for PTR queries, but caused trouble for TXT query.
2019-02-15 13:46:51 +01:00
David Cermak
206b47c03a mdns: fix possible crash when mdns_free called while action queue not empty 2019-02-15 13:23:21 +01:00
David Cermak
9a4da97fb4 mdns: fix memory leak when query for service receives multiple ptr entries for one instance
fixes redmine issue 27300
2019-02-15 07:56:03 +01:00
David Cermak
a47768dc4e mdns: fix crash after init if no memory for task
mdns init first starts timer task, then starts service task. if service task failed to be created, timer task needs to be stopped too.
fixed https://ezredmine.espressif.cn:8765/issues/28466
2019-01-30 08:17:37 +01:00
Angus Gratton
784fc51931 Merge branch 'bugfix/mdns_crash_free_strdup' into 'master'
mdns: fixed crash on free undefined ptr if strdup is skipped

See merge request idf/esp-idf!4173
2019-01-30 09:33:12 +08:00
Roland Dobai
37126d3451 Correct Kconfigs according to the coding style 2019-01-29 13:37:01 +01:00
David Cermak
e0a8044a16 mdns: fixed crash on free undefined ptr after skipped strdup
Shortcircuit evaluation may cause skip of _mdns_strdup_check of any further question field, which after clear_rx_packet freed undefined memory.
Fixes https://ezredmine.espressif.cn:8765/issues/28465
2019-01-29 10:10:38 +01:00
David Cermak
f7d4a4be6a mdns: fix networking running udp_sendif from lwip thread 2019-01-03 14:28:29 +01:00
David Cermak
6bb68a5a75 mdns: fixed static memory leak 2018-12-17 12:09:23 +01:00
David Cermak
c8cb4cd3c8 mdns: check all mallocs for failure and add default hook to log error with free heap
solves crash about _mdns_result_txt_create when stress test
2018-12-17 12:09:11 +01:00
David Cermak
a6b2b73f03 mdns: resolve memory leak when txt record received multiple times 2018-12-11 21:59:44 +01:00
David Cermak
31163f02d5 mdns: skip sending search when finished, not properly locked timer task 2018-12-11 21:56:01 +01:00
David Cermak
d16762a036 mdns: sending search packets also in probing and announcing state
mdns queries did not work properly when send imeadiately after set_hostname, which cuased reinit of pcb and therefore restarted probing, so search packets were blocked until probing finished
closes #2507, closes #2593
2018-11-16 07:22:29 +00:00
David Cermak
097282a8e3 mdns: fixed crashes on network changes
1) two events AP_STOP, AP_START shortly after each other may cause IGMP config on already stopped netif
2) not properly locked sending packets to queue from timer task

closes #2580
2018-10-24 12:03:41 +02:00
Ivan Grokhotkov
49125a87bb Merge branch 'bugfix/mdns-lwip-update' into 'master'
Update network code for mDNS to work with newest LwIP

See merge request idf/esp-idf!3268
2018-09-17 10:42:04 +08:00
me-no-dev
3ec0e7e2d2 Update network code for mDNS to work with newest LwIP
- Uses one PCB that listens to all interfaces
- Manages multicast groups for each interface
2018-09-14 11:02:47 +02:00
Liu Han
3d4deb9726 feat(mdns): fix bug when clean action memory 2018-09-14 15:36:52 +08:00
Piyush Shah
e5e2702ca3 bugfix: mdns_service_txt_set() wasn't allocating memory for TXT records
Allocation was happening later, causing possible use of stack variables
of caller function, which could be invalid.

Signed-off-by: Piyush Shah <piyush@espressif.com>
2018-09-11 16:23:56 +05:30
Renz Christian Bagaporo
d9939cedd9 cmake: make main a component again 2018-09-11 09:44:12 +08:00
Angus Gratton
cff2ef695a Merge branch 'master' into feature/cmake 2018-09-06 20:23:04 +08:00
Zhang Yan Jiao
3578fe39e0 Feature/sync lwip as submodule 2018-09-06 19:43:08 +08:00
Angus Gratton
ff2404a272 Merge branch 'master' into feature/cmake 2018-08-16 17:14:17 +10:00