[Mew-Win32 03036] Re: socket operation non-socket...?

Hideyuki SHIRAI ( 白井秀行 ) shirai at example.com
2001年 2月 5日 (月) 12:31:06 JST


白井です。

# 全然なにがなんだかわからないのですが、もがいてみます。^^;

From: t.kuromiya at example.com <t.kuromiya at example.com> さん曰く
Subject: [Mew-Win32 03033] socket operation non-socket...?
Message-ID: <20010203181042P.t.kuromiya at example.com>
Date: Sat, 03 Feb 2001 18:10:42 +0900 (JST)

黒宮> 以前、1月10日に切明@名古屋さんがご投稿された
黒宮> "[Mew-Win32 02974] Connection failed"というメールと
黒宮> 全く同じ現象なのですが、1.95b**のMewで、
黒宮> メールが送受信できないという状況に陥っています。

黒宮> 環境は
黒宮> OS: Windows-Me

私は、WindowsME を使ったこと無いし、黒宮さん切明さんが遭遇したエ
ラーも体験したことがないのですが。。。

黒宮> 具体的なエラーの現象としては、Mewを起動して
黒宮> incしようとすると、ネットワークに正常に接続しているにも
黒宮> かかわらず、Meadowのミニバッファに

黒宮> Connection failed socket operation non-socket

黒宮> というメッセージが表示され、コネクションが張れません。

このエラーは 100% mew-smtp.el や mew-pop.el の 
(open-network-stream pnm nil server sprt)
という行が出しているエラーです(たぶん)。

黒宮> なお、
黒宮> (setq debug-on-error t)
黒宮> (setq mew-debug t)
黒宮> などを評価してみても、*Backtrace*バッファが出てくれないので、
黒宮> どこが悪いのか見当がつきません。

また、Mew では open-network-stream() は condition-case で囲われ
ているため、debug-on-error などは期待した動作をしてくれません。

黒宮> ActivePerl623+Mew-1.94.2+IM-141
黒宮> を使用すれば、問題なくメールの送受信ができます。

IM を使う Mew は smtp や pop は IM (Perl)が行なうのでこの問題は
関係ないのでしょう。

黒宮> 以上のような感じです。
黒宮> まだあんまりWindowsMEが出回ってないからかもしれませんが、
黒宮> こんな現象に遭遇した方ってほかにおられないのでしょうか。

う〜〜ん、上記の open-network-stream() は Mew 以外にもありとあら
ゆるところで使われているので、WindowsME + Meadow の組合わせで若
干エラーになる人がいるとすると、他の場所で聞いたことがあるような
気もするのですが。。。(w3 とか動きますか?)

下の elips を動かしてエラーになるかどうかで、とりあえず、原因の
切り分けからしてみましょう。

# "*TEST*" という buffer に mew の web が get されます。

;; 直接 http server と話せる場合はこちら。
(let ((server "www.mew.org")
      (port 80)
      (url "index-j.html")
      (buf (get-buffer-create "*TEST*"))
      process)
  (pop-to-buffer buf)
  (erase-buffer)
  (setq process (open-network-stream "TEST" buf server port))
  (set-process-coding-system process 'undecided 'raw-text)
  (process-send-string process (format "GET %s\n" url)))


;; proxy 通さないとだめな場合はこちら。
(let ((proxy-server "host.domain.com") ;; proxy server の設定
      (proxy-port 8080) ;; proxy port の設定
      (url "http://www.mew.org/index-j.html")
      (buf (get-buffer-create "*TEST*"))
      process)
  (pop-to-buffer buf)
  (erase-buffer)
  (setq process (open-network-stream "TEST" buf proxy-server proxy-port))
  (set-process-coding-system process 'undecided 'raw-text)
  (process-send-string process (format "GET %s HTTP/1.0\n\n" url)))


これが動くとなると、Mew との差は open-network-stream() で buffer
を nil に指定しているぐらいです。

また、

(w32-has-winsock)
(w32-unload-winsock)

などという関数を見つけてしまいました。良くわかっていませんが、
winsock がきちんと動いていると、

(w32-has-winsock) => FQDN が帰ってくる。

ようです。

help> w32-has-winsock is a built-in function.
help> 
help> Test for presence of the Windows socket library `winsock'.
help> Returns non-nil if winsock support is present, nil otherwise.
help> 
help> If the optional argument LOAD-NOW is non-nil, the winsock library is
help> also loaded immediately if not already loaded.  If winsock is loaded,
help> the winsock local hostname is returned (since this may be different from
help> the value of `system-name' and should supplant it), otherwise t is
help> returned to indicate winsock support is present.
help> 
help> (w32-has-winsock &optional LOAD-NOW)

(w32-has-winsock t) なども効くのかな?

ついでに hosts に localhost を書いた方が良いのかな?

-- 
白井秀行@結局なにもわかっていません (_ _)



Mew-win32 メーリングリストの案内