return error;
}
+/* Blocks until a previously started stream connection attempt succeeds or
+ * fails. 'error' should be the value returned by stream_open() and 'streamp'
+ * should point to the stream pointer set by stream_open(). Returns 0 if
+ * successful, otherwise a positive errno value other than EAGAIN or
+ * EINPROGRESS. If successful, leaves '*streamp' untouched; on error, closes
+ * '*streamp' and sets '*streamp' to null.
+ *
+ * Typical usage:
+ * error = stream_open_block(stream_open("tcp:1.2.3.4:5", &stream), &stream);
+ */
int
-stream_open_block(const char *name, struct stream **streamp)
+stream_open_block(int error, struct stream **streamp)
{
- struct stream *stream;
- int error;
+ struct stream *stream = *streamp;
- error = stream_open(name, &stream);
while (error == EAGAIN) {
stream_run(stream);
stream_run_wait(stream);