with-pending-connect

$Revision: 5.0.2.2 $

Macro

Package: ACL-SOCKET

Arguments: (&rest body)

A call to socket:make-socket can take a while (maybe a minute or two) to make or fail to make a connection.

If you want to limit the amount of time spent in the socket:make-socket call you can write it with a mp:with-timeout. If the timeout occurs, then the program gives up on trying to make the connection. However the connection is offically still pending and operating system resources will continue to be used. Thus, it's important to clean up after a timed out attempt to make a connection.

The best way to ensure that things are cleaned up is to use socket:with-pending-connect. Just write your code something like this:

(socket:with-pending-connect
  (mp:with-timeout (10 (error "connect failed"))
    (socket:make-socket
      :remote-host "foo.com" :remote-port 1234)))

The with-pending-connect wraps the body with an unwind-protect that will clean up the pending connection as control passes through it.

See socket.htm for general information on sockets.

The general documentation description is in introduction.htm. The index in index.htm.

Copyright (C) 1998-1999, Franz Inc., Berkeley, CA. All Rights Reserved.