[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Problems with the url package on w32?
From: |
Magnus Henoch |
Subject: |
Re: Problems with the url package on w32? |
Date: |
Thu, 30 Nov 2006 00:57:21 +0100 |
User-agent: |
Gnus/5.110006 (No Gnus v0.6) Emacs/22.0.90 (berkeley-unix) |
Mathias Dahl <address@hidden> writes:
>> Does (make-network-process :name "http" :buffer "http-localhost"
>> :host "127.0.0.1" :service 80
>> :nowait t)
>> work?
>
> I get no error but it returns `nil'. I guess it should return a
> process object, right?
Yes. Does it work with hosts other than localhost?
The direct cause of the `nil' return value is this code in process.c:
if (s < 0)
{
/* If non-blocking got this far - and failed - assume non-blocking is
not supported after all. This is probably a wrong assumption, but
the normal blocking calls to open-network-stream handles this error
better. */
if (is_non_blocking_client)
return Qnil;
This seems to be a bug of some sort. The documentation doesn't
mention that make-network-process might ever return nil. I see four
possible solutions; someone who knows Windows should look at this.
1. Make non-blocking connections work on Windows.
2. Make (featurep 'make-network-process '(:nowait t)) return nil on
Windows.
3. Document that make-network-process returns nil if it fails to
create a non-blocking socket.
4. Make make-network-socket do a blocking connect if a non-blocking
connect fails, and document that.
Magnus