Can we remove the eloop exception listener?

Jouni Malinen j at w1.fi
Wed Jul 4 14:39:01 EDT 2012


On Mon, Jul 02, 2012 at 09:24:11PM -0700, Ben Greear wrote:
> On 06/30/2012 03:24 AM, Jouni Malinen wrote:
> > By the way, I just noticed that the poll() version of eloop seemed to
> > break WPS external registrar functionality (TCP socket used for HTTP;
> > i.e., something that needs both read and write events). I haven't had a
> > chance to look at closer details on what was happening, but the HTTP
> > connections were timing out in my tests. Going back to select() removed
> > the issue.
> 
> I don't think I've ever used that.  Do you have any details on
> how to reproduce the problem and/or setup WPS external registrar?

sudo ./wpa_supplicant -Dnone -ieth0 -c wps.conf -ddK

(wps.conf can have just one line to enable the control interface, e.g.,
with "ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=admin")

shows this in the log:

HTTP: Timeout (c=0x1045148)
WPS ER: Failed to fetch device info

When starting ER in wpa_cli:

> wps_er_start 
OK


with select(), wpa_cli shows this:

> wps_er_start 
OK
<3>WPS-ER-AP-ADD 572cf82f-c957-5653-9b16-b5cfb298abf1 02:00:00:00:01:00 pri_dev_type=6-0050F204-1 wps_state=2 |WPS Access Point|Company||WAP|||

(that WPS-ER-AP-ADD event does not show up with poll()-based eloop due
to that HTTP timeout)

You'll need at least following entries in wpa_supplicant/.config for
this:

CONFIG_DRIVER_NONE=y
CONFIG_WPS=y
CONFIG_WPS2=y
CONFIG_WPS_ER=y

(and also need at least one AP with WPS enabled in the same physical
network)


The problem here seems to be in registered EVENT_TYPE_WRITE for
http_client_tx_ready() in src/wps/http_client.c not getting called which
makes the HTTP client fail to send the POST data. Changing POLLIN to
POLLOUT in eloop_sock_table_set_fds() for the writers table seems to fix
this.

-- 
Jouni Malinen                                            PGP id EFC895FA


More information about the HostAP mailing list