Opened 6 years ago

Closed 5 years ago

#273 closed баг (invalid)

Бесконечные попытки ресолвинга IP -> MAC

Reported by: alx Owned by: alx
Priority: низкий Milestone: 2 очередь
Component: any Keywords:
Cc:

Description

При инициировании медиапотока канальное окончание получает адрес IP удаленной стороны, и ей требуется узнать MAC адрес получателя (непосредственно или через маршрутизатор). Для этого канальное окончание делает ARP/NDP запрос и ждет ответа. После получении ответа настраиваются заголовки ethernet кадров и выполняется startRTP(). Даже при успешном получении ответа запрос периодически повторяется по таймеру на случай изменения MAC удаленной стороны.

Таким образом, в коде нет условия, по которому ARP/NDP запросы перестают посылаться. Будучи один раз инициированы, запросы продолжают посылаться бесконечно, даже если этот хост никому уже не нужен.

Еще одна проблема: если был инициирован медиапоток, но еще до того как пришел ответ на ARP/NDP запрос и выполнилась startRTP() вызов был отбит, при получении ответа вызовется startRTP() и будет активирован медиапоток, хотя он уже никому не нужен...

Предлагается завести флаг типа haveMedia, который будет устанавливаться при
инициировании медиапотока и сбрасываться, когда медиапоток более не нужен. arp_timeout() должна проверять этот флаг и прекращать свои действия, если флаг не установлен.

Change History (1)

in reply to:  description comment:1 by alx, 5 years ago

Resolution: invalid
Status: newclosed

Replying to alx:

Таким образом, в коде нет условия, по которому ARP/NDP запросы перестают посылаться.

Это не так - в stopRTP() отменяется таймер посылки ARP/NDP запроса.

Note: See TracTickets for help on using tickets.