Use the ibuf_fd_*() API for file descriptor passing and also ibuf_set()
instead of ibuf_seek().

-- 
:wq Claudio

Index: http.c
===================================================================
RCS file: /cvs/src/usr.sbin/rpki-client/http.c,v
retrieving revision 1.76
diff -u -p -r1.76 http.c
--- http.c      12 Jun 2023 15:27:52 -0000      1.76
+++ http.c      12 Jun 2023 16:03:16 -0000
@@ -2150,7 +2150,7 @@ proc_http(char *bind_addr, int fd)
                                io_read_str(b, &mod);
 
                                /* queue up new requests */
-                               http_req_new(id, uri, mod, 0, b->fd);
+                               http_req_new(id, uri, mod, 0, ibuf_fd_get(b));
                                ibuf_free(b);
                        }
                }
Index: io.c
===================================================================
RCS file: /cvs/src/usr.sbin/rpki-client/io.c,v
retrieving revision 1.22
diff -u -p -r1.22 io.c
--- io.c        14 Dec 2022 15:19:16 -0000      1.22
+++ io.c        16 Jun 2023 14:37:42 -0000
@@ -41,7 +41,7 @@ io_new_buffer(void)
 
        if ((b = ibuf_dynamic(64, INT32_MAX)) == NULL)
                err(1, NULL);
-       ibuf_reserve(b, sizeof(size_t));        /* can not fail */
+       ibuf_add_zero(b, sizeof(size_t));       /* can not fail */
        return b;
 }
 
@@ -88,7 +88,7 @@ io_close_buffer(struct msgbuf *msgbuf, s
        size_t len;
 
        len = ibuf_size(b) - sizeof(len);
-       memcpy(ibuf_seek(b, 0, sizeof(len)), &len, sizeof(len));
+       ibuf_set(b, 0, &len, sizeof(len));
        ibuf_close(msgbuf, b);
 }
 
@@ -280,7 +280,7 @@ io_buf_recvfd(int fd, struct ibuf **ib)
                        for (i = 0; i < j; i++) {
                                f = ((int *)CMSG_DATA(cmsg))[i];
                                if (i == 0)
-                                       b->fd = f;
+                                       ibuf_fd_set(b, f);
                                else
                                        close(f);
                        }
Index: main.c
===================================================================
RCS file: /cvs/src/usr.sbin/rpki-client/main.c,v
retrieving revision 1.241
diff -u -p -r1.241 main.c
--- main.c      30 May 2023 16:02:28 -0000      1.241
+++ main.c      12 Jun 2023 07:09:58 -0000
@@ -341,7 +341,7 @@ http_fetch(unsigned int id, const char *
        io_str_buffer(b, uri);
        io_str_buffer(b, last_mod);
        /* pass file as fd */
-       b->fd = fd;
+       ibuf_fd_set(b, fd);
        io_close_buffer(&httpq, b);
 }
 
@@ -362,7 +362,7 @@ rrdp_http_fetch(unsigned int id, const c
        b = io_new_buffer();
        io_simple_buffer(b, &type, sizeof(type));
        io_simple_buffer(b, &id, sizeof(id));
-       b->fd = pi[0];
+       ibuf_fd_set(b, pi[0]);
        io_close_buffer(&rrdpq, b);
 
        http_fetch(id, uri, last_mod, pi[1]);
Index: rrdp.c
===================================================================
RCS file: /cvs/src/usr.sbin/rpki-client/rrdp.c,v
retrieving revision 1.30
diff -u -p -r1.30 rrdp.c
--- rrdp.c      3 May 2023 07:51:08 -0000       1.30
+++ rrdp.c      16 Jun 2023 15:06:58 -0000
@@ -431,20 +431,20 @@ rrdp_input_handler(int fd)
                io_read_str(b, &session_id);
                io_read_buf(b, &serial, sizeof(serial));
                io_read_str(b, &last_mod);
-               if (b->fd != -1)
+               if (ibuf_fd_avail(b))
                        errx(1, "received unexpected fd");
 
                rrdp_new(id, local, notify, session_id, serial, last_mod);
                break;
        case RRDP_HTTP_INI:
-               if (b->fd == -1)
-                       errx(1, "expected fd not received");
                s = rrdp_get(id);
                if (s == NULL)
                        errx(1, "http ini, rrdp session %u does not exist", id);
                if (s->state != RRDP_STATE_WAIT)
                        errx(1, "%s: bad internal state", s->local);
-               s->infd = b->fd;
+               s->infd = ibuf_fd_get(b);
+               if (s->infd == -1)
+                       errx(1, "expected fd not received");
                s->state = RRDP_STATE_PARSE;
                if (s->aborted) {
                        rrdp_abort_req(s);
@@ -454,7 +454,7 @@ rrdp_input_handler(int fd)
        case RRDP_HTTP_FIN:
                io_read_buf(b, &res, sizeof(res));
                io_read_str(b, &last_mod);
-               if (b->fd != -1)
+               if (ibuf_fd_avail(b))
                        errx(1, "received unexpected fd");
 
                s = rrdp_get(id);
@@ -472,7 +472,7 @@ rrdp_input_handler(int fd)
                s = rrdp_get(id);
                if (s == NULL)
                        errx(1, "file, rrdp session %u does not exist", id);;
-               if (b->fd != -1)
+               if (ibuf_fd_avail(b))
                        errx(1, "received unexpected fd");
                io_read_buf(b, &ok, sizeof(ok));
                if (ok != 1)
@@ -482,7 +482,7 @@ rrdp_input_handler(int fd)
                        rrdp_finished(s);
                break;
        case RRDP_ABORT:
-               if (b->fd != -1)
+               if (ibuf_fd_avail(b))
                        errx(1, "received unexpected fd");
                s = rrdp_get(id);
                if (s != NULL)

Reply via email to