> On Oct. 18, 2016, 10:32 p.m., Michael Park wrote: > > 3rdparty/libprocess/src/poll_socket.cpp, lines 133-141 > > <https://reviews.apache.org/r/52997/diff/2/?file=1540964#file1540964line133> > > > > Do we need to set these here...? If I understand correctly they already > > hold the correct values, and we would be overwriting it with an incorrect > > one. > > > > Assuming we want `SocketError` on line 140 to build an error message > > based on the corresponding error code, `getsockopt` automatically sets the > > `errno` and `WSALastError` correctly. > > > > Linux: > > > > > On success, zero is returned for the standard options. On error, -1 > > is returned, and errno is set appropriately. > > > > Windows: > > > > > If no error occurs, getsockopt returns zero. Otherwise, a value of > > SOCKET_ERROR is returned, and a specific error code can be retrieved by > > calling WSAGetLastError. > > James Peach wrote: > ``getsockopt`` is returning the ``errno`` from a previous ``connect(2)`` > call into ``opt``. ``errno`` won't be set in this case unless the > ``getsockopt`` succeeds. The actual ``errno`` value is in ``opt`` and we need > to set the thread-local socket API error so that ``SocketError`` can have it.
I realized that I missed the use of `SO_ERROR` here :( - Michael ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/52997/#review153245 ----------------------------------------------------------- On Oct. 20, 2016, 9:07 a.m., James Peach wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/52997/ > ----------------------------------------------------------- > > (Updated Oct. 20, 2016, 9:07 a.m.) > > > Review request for mesos, Joris Van Remoortere and Michael Park. > > > Bugs: MESOS-6412 > https://issues.apache.org/jira/browse/MESOS-6412 > > > Repository: mesos > > > Description > ------- > > Rather than returning a fixed generic error when connect(2) fails, > report the actual socket error as well as the address we were trying to > connect to. > > > Diffs > ----- > > 3rdparty/libprocess/src/poll_socket.cpp > d9ab3fbbf385c39c0e43ee92ff06609ae8d47e2d > > Diff: https://reviews.apache.org/r/52997/diff/ > > > Testing > ------- > > `make check` on a host whose hostname doesn't match its IP address. > > ``` > [jpeach@jpeach libprocess]$ ./libprocess-tests > --gtest_filter=HTTPTest.Endpoints > Note: Google Test filter = HTTPTest.Endpoints > [==========] Running 1 test from 1 test case. > [----------] Global test environment set-up. > [----------] 1 test from HTTPTest > [ RUN ] HTTPTest.Endpoints > ../../../3rdparty/libprocess/src/tests/http_tests.cpp:141: Failure > (socket.connect(http.process->self().address)).failure(): Failed to connect > to 17.203.52.49:39241: Connection refused > [ FAILED ] HTTPTest.Endpoints (4 ms) > [----------] 1 test from HTTPTest (4 ms total) > > [----------] Global test environment tear-down > [==========] 1 test from 1 test case ran. (5 ms total) > [ PASSED ] 0 tests. > [ FAILED ] 1 test, listed below: > [ FAILED ] HTTPTest.Endpoints > > 1 FAILED TEST > ``` > > > Thanks, > > James Peach > >
