Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement Happy Eyeballs. Fix IPv4/IPv6 in a better way. #1571

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

DarthGandalf
Copy link
Member

Close #241

@codecov
Copy link

codecov bot commented Jun 19, 2018

Codecov Report

Merging #1571 into master will decrease coverage by 13.19%.
The diff coverage is 53.84%.

Impacted file tree graph

@@            Coverage Diff             @@
##           master    #1571      +/-   ##
==========================================
- Coverage   37.45%   24.26%   -13.2%     
==========================================
  Files         127      120       -7     
  Lines       31014    27789    -3225     
  Branches       93       60      -33     
==========================================
- Hits        11617     6743    -4874     
- Misses      19348    21022    +1674     
+ Partials       49       24      -25
Impacted Files Coverage Δ
include/znc/Socket.h 43.1% <ø> (-21.08%) ⬇️
src/Socket.cpp 42.72% <53.84%> (-7.84%) ⬇️
include/znc/HTTPSock.h 0% <0%> (-100%) ⬇️
modules/notify_connect.cpp 14.28% <0%> (-85.72%) ⬇️
include/znc/ExecSock.h 0% <0%> (-71.43%) ⬇️
modules/samplewebapi.cpp 10% <0%> (-63.92%) ⬇️
include/znc/Template.h 0% <0%> (-61.12%) ⬇️
src/Template.cpp 0% <0%> (-57.88%) ⬇️
include/znc/WebModules.h 13.63% <0%> (-55.6%) ⬇️
modules/shell.cpp 2.46% <0%> (-53.49%) ⬇️
... and 110 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 71ebbf4...709d338. Read the comment docs.

@DarthGandalf
Copy link
Member Author

The problem with this approach: if server sends something immediately upon connect, that data is delivered to the temporary socket class, and it's lost. Looking how to solve this...

@Gunni
Copy link

Gunni commented Jul 10, 2019

This ticket is not a blocker for IPv6 support, all it means is that if a client gets a dual stack DNS result, it will prefer IPv6 by default on most systems.

If IPv6 is broken on the path, then, yes, the connection will time out and ipv4 will be tried eventually.

But that's not your fault, that's the fault of, the server, the ISPs between, or the user.

Maybe just make it clear in the documentation that we don't have Happy Eyeballs yet and to either yolo with dual stack dns records, or, make a primary/dual, v4, v6 record seperately and give that to users.

@DarthGandalf
Copy link
Member Author

@Gunni I've replied on znc/znc-docker#19

That said, when I finish #1639, it'll be easy to fix ZNC->server side. Failure to implement this feature with current sockets we have caused me to start refactoring it. If only I had more time to finish #1639 faster...

@psychon
Copy link
Member

psychon commented Jul 10, 2019

The problem with this approach: if server sends something immediately upon connect, that data is delivered to the temporary socket class, and it's lost. Looking how to solve this...

Without having looked at any code: Does PauseRead() and UnpauseRead() when connection is established help? (I remember CSocket having such methods...)

@DarthGandalf
Copy link
Member Author

AFAIR, no, it didn't help.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

RFC 6555 - Happy Eyeballs
3 participants