1. 29 Feb, 2016 3 commits
  2. 25 Feb, 2016 2 commits
    • Paul Eggert's avatar
      Integer overflow cleanups for ports and socklen · c1415cc9
      Paul Eggert authored
      * src/process.c (struct sockaddr_and_len, conv_sockaddr_to_lisp)
      (get_lisp_to_sockaddr_size, Fset_process_datagram_address)
      (connect_network_socket):
      Use ptrdiff_t, not int, for signed object sizes.
      This addresses only a theoretical problem, as in practice these
      object sizes are less than 2**31, but we might as well use the
      same style here as elsewhere in Emacs.
      (string_integer_p): Remove; all uses removed.
      (Fmake_network_process): Check that port number is in range.
      When converting an integer-string service, rely on strtol
      rather than rechecking the string by hand.
      * src/process.h, src/w32.c (conv_sockaddr_to_lisp):
      Adjust prototypes to match.
      c1415cc9
    • Lars Ingebrigtsen's avatar
      Allow using "number strings" as services on non-GNU systems · e7650ba6
      Lars Ingebrigtsen authored
      * src/process.c (string_integer_p): New function.
      (Fmake_network_process): Use it to allow connecting to
      services specified as "993" even when getaddrbyname isn't
      available.
      e7650ba6
  3. 24 Feb, 2016 1 commit
  4. 23 Feb, 2016 2 commits
    • Paul Eggert's avatar
      Port to --enable-gcc-warnings sans getaddrinfo_a · c7b8194c
      Paul Eggert authored
      * src/process.c (Fmake_network_process): Add ATTRIBUTE_UNUSED
      to a local unused when getaddrinfo_a is missing.
      Resize portbuf to size needed.  Do cheap test first.
      Move local to block where it’s needed.
      c7b8194c
    • Paul Eggert's avatar
      Minor cleanups for async DNS etc. · 82848cf6
      Paul Eggert authored
      * src/frame.h (FRAME_WINDOW_CONFIGURATION_CHANGED):
      Omit unnecessary parens.
      * src/gnutls.c (gnutls_try_handshake, emacs_gnutls_deinit)
      (gnutls_verify_boot):
      Use bool for boolean.
      (ATTRIBUTE_FORMAT_PRINTF): Add printf attribute.
      * src/process.c (free_dns_request, Fmake_network_process):
      Allocate and free async request control block all in one go.
      (set_network_socket_coding_system, finish_after_tls_connection)
      (connect_network_socket):
      Now static.
      (conv_numerical_to_lisp): 2nd arg is now int, not unsigned.
      (Fmake_network_process): Use list1 for brevity.
      (wait_for_socket_fds): 2nd arg is now const ptr.
      * src/process.h (struct Lisp_Process.dns_request):
      Now struct gaicb *, not struct gaicb **, since there was always
      exactly one.  All uses changed.
      * src/window.c, src/window.h (run_window_configuration_change_hook):
      Now static.
      82848cf6
  5. 22 Feb, 2016 5 commits
  6. 21 Feb, 2016 1 commit
    • Alain Schneble's avatar
      Respect DNS timeouts · 79936792
      Alain Schneble authored
      * src/process.c (check_for_dns): If the async DNS request
      failed and the associated process is still in "connect" state,
      deactivate the process and set status to "failed".
      79936792
  7. 19 Feb, 2016 1 commit
  8. 18 Feb, 2016 1 commit
    • Lars Ingebrigtsen's avatar
      Verify the TLS connection asynchronously · e96df838
      Lars Ingebrigtsen authored
      * src/gnutls.c (gnutls_verify_boot): Refactor out into its own
      function so that we can call it asynchronously.
      (Fgnutls_boot): Use it.
      
      * src/process.c (wait_reading_process_output): Verify the TLS
      negotiation.
      e96df838
  9. 16 Feb, 2016 8 commits
    • Lars Ingebrigtsen's avatar
      Deactivate the correct process · d4bb0b92
      Lars Ingebrigtsen authored
      * src/process.c (wait_reading_process_output): Deactivate the
      correct process on failure.
      d4bb0b92
    • Lars Ingebrigtsen's avatar
      Implement asynch TLS negotiation · ac6e085c
      Lars Ingebrigtsen authored
      * src/gnutls.c (gnutls_try_handshake): Factor out into its own
      function.
      (emacs_gnutls_handshake): Use it.
      (emacs_gnutls_read): Just return instead of retrying the handshake.
      
      * src/process.c (finish_after_tls_connection): Factor out
      into its own function.
      (connect_network_socket): Use it.
      (wait_reading_process_output): Retry TLS handshakes.
      (wait_reading_process_output): Defer sentinel until TLS completes.
      ac6e085c
    • Lars Ingebrigtsen's avatar
      Simplify the DNS resolution loop a bit · c43bb7f1
      Lars Ingebrigtsen authored
      * src/process.c (wait_reading_process_output): Simplify the
      DNS resolution loop a bit.
      c43bb7f1
    • Alain Schneble's avatar
      Loop over the process list instead of maintaining a separate list · d1fc5a54
      Alain Schneble authored
      * src/process.c: Remove declaration/definition of dns_processes list.
      * src/process.c (wait_reading_process_output): Loop over all processes in
      Vprocess_alist instead of dns_processes, to check for completed DNS
      requests.
      d1fc5a54
    • Lars Ingebrigtsen's avatar
      Allow setting the filter masks later · 9755b753
      Lars Ingebrigtsen authored
      * src/process.c (Fset_process_filter): Don't set the socket
      masks here, because we may not have a socket yet.
      (set_process_filter_masks): New function.
      (connect_network_socket): Set the filter masks here.
      9755b753
    • Lars Ingebrigtsen's avatar
      Ensure we always free DNS resources when deleting a process · df911734
      Lars Ingebrigtsen authored
      * src/process.c (free_dns_request): Factor out into own function.
      (Fdelete_process): When deleting a process, free any DNS
      structures associated with it.
      (check_for_dns): Always free all DNS resources.
      df911734
    • Alain Schneble's avatar
      Don't block in set-process-window-size · e4324bdf
      Alain Schneble authored
      * src/process.c (set-process-window-size): Explicitly return Qnil when
      called with network processes as set_window_size won't work anyway on
      socket fds.  As a welcome side effect, this makes the blocking
      wait_for_socket_fds call obsolete.
      e4324bdf
    • Lars Ingebrigtsen's avatar
      Do most of the coding system setup earlier · 7f3441cc
      Lars Ingebrigtsen authored
      * src/process.c (Fmake_network_process): Set the read/write
      coding systems here, so that special bindings work.
      (Fmake_network_process): Complete the coding system setup here.
      7f3441cc
  10. 15 Feb, 2016 4 commits
    • Lars Ingebrigtsen's avatar
      Protect against initial handshake failures · 2d7af7e2
      Lars Ingebrigtsen authored
      * src/process.c (connect_network_socket): Mark the connection
      as failed if the handshake didn't succeed yet.  This should be
      reworked later.
      2d7af7e2
    • Lars Ingebrigtsen's avatar
      Call the network security manager after doing TLS negotiation · 9c74f2fe
      Lars Ingebrigtsen authored
      * lisp/net/network-stream.el (network-stream-open-tls):
      Postpone NSM verification when running async.
      
      * src/process.c (Fset_process_filter): This function doesn't
      need to wait.
      (connect_network_socket): Set the process status to "run" only
      after TLS negotiation.
      (wait_for_socket_fds): Take a name parameter for more debugging.
      (wait_reading_process_output): Don't change status to "run"
      unless TLS negotiation has finished.
      (send_process): Wait for the process here instead of
      send_process_string.
      (connect_network_socket): Call the network security manager.
      9c74f2fe
    • Lars Ingebrigtsen's avatar
      Remove some #ifdefs and update documentation · 40155283
      Lars Ingebrigtsen authored
      * doc/lispref/processes.texi (Network Processes): Remove
      mention of `dns'.
      
      * lisp/net/network-stream.el (open-network-stream): Remove
      mention of `dns'.
      
      * src/process.c (Fset_process_filter)
      (Fset_process_window_size, Fprocess_contact)
      (Fprocess_datagram_address, Fset_process_datagram_address)
      (Fset_network_process_option, Fprocess_send_region)
      (Fprocess_send_string, Fset_process_coding_system)
      (Fset_process_filter_multibyte): Remove the #ifdef
      HAVE_GETADDRINFO_A checks.
      (Fprocess_send_string): Wait for TLS negotiation.
      (wait_for_tls_negotiation): New function.
      (send_process): Remove the TLS boot check.
      
      * src/process.c (Fmake_network_process): Ditto.
      40155283
    • Alain Schneble's avatar
      Add blockers to process functions · c740d190
      Alain Schneble authored
      * src/process.c (set-process-filter, set-process-window-size,
      process-contact, process-datagram-address, set-process-datagram-address,
      set-network-process-option): Make functions wait (block) on network
      process until pending DNS requests have been processed and associated
      socket initialized.
      
      * src/process.c (process-send-region, process-send-string,
      process-send-eof): Make functions wait (block) while network process is
      in connect state.
      c740d190
  11. 09 Feb, 2016 1 commit
    • David Edmondson's avatar
      src/process.c Correctly convert AF_INET6 addresses · 51d728c8
      David Edmondson authored
      * src/process.c (conv_lisp_to_sockaddr): AF_INET6 addresses are
      converted to a list of 16 bit quantities by
      conv_sockaddr_to_lisp(). conv_lisp_to_sockaddr() should follow the
      same scheme rather than expecting a (longer) list of 8 bit
      quantities.
      51d728c8
  12. 07 Feb, 2016 2 commits
    • David Edmondson's avatar
      src/process.c Correctly convert AF_INET6 addresses · 35cbe209
      David Edmondson authored
      * src/process.c (conv_lisp_to_sockaddr): AF_INET6 addresses are
      converted to a list of 16 bit quantities by
      conv_sockaddr_to_lisp(). conv_lisp_to_sockaddr() should follow the
      same scheme rather than expecting a (longer) list of 8 bit
      quantities.
      
      Backport:
      
      (cherry picked from commit 55ce3c30)
      35cbe209
    • David Edmondson's avatar
      src/process.c Correctly convert AF_INET6 addresses · 55ce3c30
      David Edmondson authored
      * src/process.c (conv_lisp_to_sockaddr): AF_INET6 addresses are
      converted to a list of 16 bit quantities by
      conv_sockaddr_to_lisp(). conv_lisp_to_sockaddr() should follow the
      same scheme rather than expecting a (longer) list of 8 bit
      quantities.
      55ce3c30
  13. 05 Feb, 2016 3 commits
  14. 03 Feb, 2016 1 commit
    • Lars Ingebrigtsen's avatar
      Doc fixes and refactorings based on comments from Eli Zaretskii · 894e21df
      Lars Ingebrigtsen authored
      * doc/lispref/processes.texi (Network Processes): Clarify the
      meaning of :tls-parameters.
      
      * lisp/net/gnutls.el (open-gnutls-stream): Clarify :nowait.
      
      * lisp/net/gnutls.el (gnutls-boot-parameters): Factor out into
      own function.
      (gnutls-negotiate): Use it.
      (open-gnutls-stream): Ditto.
      
      * src/eval.c (vformat_string): Refactor out the printing bits
      from verror.
      (verror): Use it.
      
      * src/gnutls.c (boot_error): Mark failed processes with the
      real error message.
      
      * src/lisp.h: Declare vformat_string.
      894e21df
  15. 02 Feb, 2016 2 commits
  16. 01 Feb, 2016 3 commits