VLCのビルド (8)

どうやらgetaddinfoの関数ではねられているらしいことが分かる。

vlcではvlc_getaddrinfoが用意されており、その先、vlc内のgetaddrinfoにつながると思いきや、libcのposixのgetaddrinfoに飛んでいることが分かった。

libcのposixはウブであるため、socktypeとしてSOCK_DCCPを知らない。よってEAI_SOCKTYPEという「そんなソケットタイプしらねーよ^^」エラー(-7)を返してくれる。

クライアント側のDCCPがgetaddrinfoをどのように回避しているのか調べると、当初はudpと偽ってgetaddrinfoして変換し、socketを作る段階になって、protocol ?: ptr->ai_protocolのように定義したprotocol(ココではDCCP)を優先するようにしているようだ。

以上の作業で、エラーが出ずに実行できるようになったが、VLC上でまともにDCCPサーバが立っている気配がない。

調べようとしても、netstatにはdccpの状態なぞ出てこないので、tshark(旧tethereal)とDCCP – LinuxNetのrubyのコードからクライアントのみ、サーバのみのコードを生成して検証している状態である。

ちなみに、DCCPクライアントとしては動作するはずのVLCであるが、まともに動作している気配がない。なぜかipv6アドレスの::1、port 80にアクセスしようとする。書き方が悪いのだろうか…

カテゴリー: チラシの裏 パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください