LINUX.ORG.RU

pidgin/libpurple на предмет jingle кто-нибудь ковырял?

 , ,


0

3

Руки бы отрывать таким пейсателям, блин.

Никак не могу найти где в коде этот чортов pidgin создаёт transport candidates.

Эта тварь шлёт вот такое вот гуано:

			<transport xmlns='urn:xmpp:jingle:transports:ice-udp:1' pwd='yuQRDGUekskxC0N+yXxkqu' ufrag='AE/U'>
				<candidate component='2' foundation='6' generation='0' id='purple769894ba' ip='192.168.253.20' network='0' port='35983' priority='1015022078' protocol='udp' type='host'/>
				<candidate component='2' foundation='5' generation='0' id='purple769894bb' ip='192.168.253.20' network='0' port='0' priority='1019216382' protocol='udp' type='host'/>
				<candidate component='2' foundation='4' generation='0' id='purple769894bc' ip='192.168.253.20' network='0' port='51302' priority='2013266430' protocol='udp' type='host'/>
				<candidate component='1' foundation='6' generation='0' id='purple769894bd' ip='192.168.253.20' network='0' port='34375' priority='1015022079' protocol='udp' type='host'/>
				<candidate component='1' foundation='5' generation='0' id='purple769894be' ip='192.168.253.20' network='0' port='0' priority='1019216383' protocol='udp' type='host'/>
				<candidate component='1' foundation='4' generation='0' id='purple769894bf' ip='192.168.253.20' network='0' port='33155' priority='2013266431' protocol='udp' type='host'/>
				<candidate component='1' foundation='1' generation='0' id='purple769894c0' ip='fe80::216:6fff:fea3:55a7' network='0' port='45955' priority='2013266431' protocol='udp' type='host'/>
				<candidate component='1' foundation='2' generation='0' id='purple769894c1' ip='fe80::216:6fff:fea3:55a7' network='0' port='0' priority='1019216383' protocol='udp' type='host'/>
				<candidate component='1' foundation='3' generation='0' id='purple769894c2' ip='fe80::216:6fff:fea3:55a7' network='0' port='34199' priority='1015022079' protocol='udp' type='host'/>
				<candidate component='2' foundation='1' generation='0' id='purple769894c3' ip='fe80::216:6fff:fea3:55a7' network='0' port='59755' priority='2013266430' protocol='udp' type='host'/>
				<candidate component='2' foundation='2' generation='0' id='purple769894c4' ip='fe80::216:6fff:fea3:55a7' network='0' port='0' priority='1019216382' protocol='udp' type='host'/>
				<candidate component='2' foundation='3' generation='0' id='purple769894c5' ip='fe80::216:6fff:fea3:55a7' network='0' port='46178' priority='1015022078' protocol='udp' type='host'/>
			</transport>

Разумеется всё работает через одно место или не работает вообще, ибо port='0' и всё такое. Хочется вразумить, чтобы оно отсылало не толпу бредовых кандидатов, а как все остальные клиенты - две штучки и только ipv4. Типа

			<transport xmlns='urn:xmpp:jingle:transports:ice-udp:1' pwd='yuQRDGUekskxC0N+yXxkqu' ufrag='AE/U'>
				<candidate component='1' foundation='1' generation='0' id='purple769894ba' ip='192.168.253.20' network='0' port='35983' priority='1015022078' protocol='udp' type='host'/>
				<candidate component='2' foundation='1' generation='0' id='purple769894bb' ip='192.168.253.20' network='0' port='35628' priority='1019216382' protocol='udp' type='host'/>
			</transport>

Собственно вопрос - в каком месте создаётся этот долбаный local candidates list?

Эта дрянь написана настолько через задницу, что я уже часа два пытаюсь найти концы от этой, казалось бы несложной залипухи. 100500 копирований, пересоздаваний листов, жонглирования в farstream и обратно, коллбеков и т.п., а откуда собственно берутся эти чортовы ip и порты, и какого хрена там port='0' оказывается - ну никак не откопаю.

Может кто уже ковырялся?

★★★★★

В Pidgin в Fedora не работают видеовызовы. Нажимаю «Аудио/Видеозвонок». Появляются два окна: «Ошибка медиа-данных. Ошибка конференции» → «Ошибка медиа-данных. Проблема с вашей веб-камерой». В окне отладки выделено красным цветом:

(13:48:49) mediamanager: gst pipeline error: Internal communication error.
(13:48:49) mediamanager: Debug details: gstbasesrc.c(2943): gst_base_src_loop (): /GstPipeline:pipeline0/GstBin:vvconfig-videosrc/GstBin:pidgindefaultvideosrc/GstAutoVideoSrc:autovideosrc6/GstV4l2Src:autovideosrc6-actual-src-v4l:
streaming task paused, reason not-negotiated (-4)
(13:48:49) backend-fs2: gst error Internal communication error.
debugging: gstbasesrc.c(2943): gst_base_src_loop (): /GstPipeline:pipeline0/GstBin:vvconfig-videosrc/GstBin:pidgindefaultvideosrc/GstAutoVideoSrc:autovideosrc6/GstV4l2Src:autovideosrc6-actual-src-v4l:
streaming task paused, reason not-negotiated (-4)
(13:48:49) media: The problem with your webcam
(13:48:49) media: Error conference
Deathstalker ★★★★★
()
Ответ на: комментарий от Deathstalker

reason not-negotiated

Это соседние элементы pipeline не могут договориться о стыковке. Такое бывает если один элемент не умеет в формат другого или если проблема с потоком - элементу его некуда сливать или неоткуда брать.

Скорее всего проблема в уродском способе выбора списка кандидатов у libpurple который пихает левые IPv4, IPv6 и нулевые порты и не позволяет как-либо вручную задать этот список. Потому что libpurple писали гандоны поехавшие на объектности и всяких коллбэках.

Разбираться в этом лабиринте никакого желания нету, да и незачем это - telepathy-gabble прекрасно работает без всякого бубна.

Stanson ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.