Skip to content
  • Patrick Griffis's avatar
    Refactor g_socket_client_connect_async() · 2722620e
    Patrick Griffis authored and Philip Withnall's avatar Philip Withnall committed
    This is a fairly large refactoring. The highlights are:
    
    - Removing in-progress connections/addresses from GSocketClientAsyncConnectData:
    
      This caused issues where multiple ConnectionAttempt's would step over eachother
      and modify shared state causing bugs like accidentally bypassing a set proxy.
    
      Fixes #1871
      Fixes #1989
      Fixes #1902
    
    - Cancelling address enumeration on error/completion
    
    - Queuing successful TCP connections and doing application layer work serially:
    
      This is more in the spirit of Happy Eyeballs but it also greatly simplifies
      the flow of connection handling so fewer tasks are happening in parallel
      when they don't need to be.
    
      The behavior also should more closely match that of g_socket_client_connect().
    
    - Better track the state of address enumeration:
    
      Previously we were over eager to treat enumeration finishing as an error.
    
      Fixes #1872
      See also #1982
    
    - Add more detailed documentation and logging.
    
    Closes #1995
    2722620e