aboutsummaryrefslogtreecommitdiff
path: root/sbin/hastd/proto.c
diff options
context:
space:
mode:
authorPawel Jakub Dawidek <pjd@FreeBSD.org>2011-02-02 15:46:28 +0000
committerPawel Jakub Dawidek <pjd@FreeBSD.org>2011-02-02 15:46:28 +0000
commit1c1933226f9c032643353160fb7e08713f687e5e (patch)
tree14572a6733b1467ecd161cefb488eb923dad681b /sbin/hastd/proto.c
parent9d70b24b932c274f15640fbc7f1048fe23547da7 (diff)
downloadsrc-1c1933226f9c032643353160fb7e08713f687e5e.tar.gz
src-1c1933226f9c032643353160fb7e08713f687e5e.zip
Notes
Diffstat (limited to 'sbin/hastd/proto.c')
-rw-r--r--sbin/hastd/proto.c23
1 files changed, 22 insertions, 1 deletions
diff --git a/sbin/hastd/proto.c b/sbin/hastd/proto.c
index 0fd6c17a6f4d..1527f3939b1e 100644
--- a/sbin/hastd/proto.c
+++ b/sbin/hastd/proto.c
@@ -174,7 +174,7 @@ proto_connect(struct proto_conn *conn, int timeout)
PJDLOG_ASSERT(conn->pc_side == PROTO_SIDE_CLIENT);
PJDLOG_ASSERT(conn->pc_proto != NULL);
PJDLOG_ASSERT(conn->pc_proto->hp_connect != NULL);
- PJDLOG_ASSERT(timeout >= 0);
+ PJDLOG_ASSERT(timeout >= -1);
ret = conn->pc_proto->hp_connect(conn->pc_ctx, timeout);
if (ret != 0) {
@@ -186,6 +186,27 @@ proto_connect(struct proto_conn *conn, int timeout)
}
int
+proto_connect_wait(struct proto_conn *conn, int timeout)
+{
+ int ret;
+
+ PJDLOG_ASSERT(conn != NULL);
+ PJDLOG_ASSERT(conn->pc_magic == PROTO_CONN_MAGIC);
+ PJDLOG_ASSERT(conn->pc_side == PROTO_SIDE_CLIENT);
+ PJDLOG_ASSERT(conn->pc_proto != NULL);
+ PJDLOG_ASSERT(conn->pc_proto->hp_connect_wait != NULL);
+ PJDLOG_ASSERT(timeout >= 0);
+
+ ret = conn->pc_proto->hp_connect_wait(conn->pc_ctx, timeout);
+ if (ret != 0) {
+ errno = ret;
+ return (-1);
+ }
+
+ return (0);
+}
+
+int
proto_server(const char *addr, struct proto_conn **connp)
{