-
- Downloads
Fix FastAGI To Properly Check For A Connection
When IPv6 support was added to FastAGI, the intent was to have the ability to check all addresses resolved for a host since we might receive an IPv4 address and an IPv6 address. The problem with the current code, is that, since we are doing O_NONBLOCK, we get EINPROGRESS when calling ast_connect() but are ignoring this instead of handling it. We break out of the loop and continue on. When we later call ast_poll(), it succeeds but we never check if we have a connection or not on the socket level. We then attempt to send data to the host address that we think is setup and it fails. We then check the errno and see that we have "connection refused" and then return with agi failed. This patch does the following: * Handles EINPROGRESS by creating the function handle_connection() - ast_poll() was moved into this function - This function checks the results of the connection on the socket level after calling ast_poll() * Continues to the next address if the above fails to create a connection * Once all addresses resolved are tried and we still are unable to establish a connection, then we return that the FastAGI call failed (closes issue ASTERISK-21065) Reported by: Jeremy Kister Tested by: Jeremy Kister, Michael L. Young Patches: asterisk-21065_poll_correctly_v4.diff Michael L. Young (license 5026) Review: https://reviewboard.asterisk.org/r/2330/ ........ Merged revisions 381893 from http://svn.asterisk.org/svn/asterisk/branches/11 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@381894 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Loading
Please register or sign in to comment