linux-traipu team mailing list archive
-
linux-traipu team
-
Mailing list archive
-
Message #03206
[Bug 879027] Re: libdrizzle: failed non-blocking connects do not report error
** Changed in: drizzle
Status: New => In Progress
** Changed in: drizzle
Assignee: (unassigned) => Brian Aker (brianaker)
** Changed in: drizzle
Importance: Undecided => Low
--
You received this bug notification because you are a member of UBUNTU -
AL - BR, which is subscribed to Drizzle.
https://bugs.launchpad.net/bugs/879027
Title:
libdrizzle: failed non-blocking connects do not report error
Status in A Lightweight SQL Database for Cloud Infrastructure and Web Applications:
In Progress
Bug description:
1. Use an external event loop with libdrizzle
2. Try to connect to a non-existent server.
3. The connect will succeed, but the next operation will fail.
The problem is that libdrizzle assumes the event loop will set POLLERR
if the non-blocking connect fails. However, libdrizzle only ever
passes POLLOUT to drizzle_con_set_events, and thus the external event
loop never knows it should watch for errors. Worse, libevent, probably
the most popular event loop library, never sets error indicators, and
only ever sets the equivalent of POLLIN and POLLOUT. The reason, as
far as I can tell, is that some polling mechanisms don't return error
indications{
The attached patch fixes this by checking getsockopt to see if the
connect succeeded or failed. I haven't tested this in libdrizzle
itself (I maintain my own copy in my project), but this works for me.
Thanks!
To manage notifications about this bug go to:
https://bugs.launchpad.net/drizzle/+bug/879027/+subscriptions
References