commit - 186a1eec82f03f9e24c4095c0a31f4a10de19c88
commit + 0388b56b659378d06da4d3ae5b44ec1b11d53374
blob - 92e56f67f76e65aaa37c8de91230b7ee17e21a7b
blob + ee328d475bdb5b22bfa532dbe9d5537a7d91ee0d
--- net.c
+++ net.c
struct imsgbuf *ibuf = &iev->ibuf;
struct imsg imsg;
struct req *req;
- struct get_req *r;
- size_t datalen;
+ struct get_req r;
ssize_t n;
int certok;
err(1, "imsg_get");
if (n == 0)
break;
- datalen = IMSG_DATA_SIZE(imsg);
- switch (imsg.hdr.type) {
+ switch (imsg_get_type(&imsg)) {
case IMSG_GET:
- r = imsg.data;
- if (datalen != sizeof(*r) ||
- r->host[sizeof(r->host) - 1] != '\0' ||
- r->port[sizeof(r->port) - 1] != '\0' ||
- r->req[sizeof(r->req) - 1] != '\0')
+ if (imsg_get_data(&imsg, &r, sizeof(r)) == -1 ||
+ r.host[sizeof(r.host) - 1] != '\0' ||
+ r.port[sizeof(r.port) - 1] != '\0' ||
+ r.req[sizeof(r.req) - 1] != '\0')
die();
- if (r->proto != PROTO_FINGER &&
- r->proto != PROTO_GEMINI &&
- r->proto != PROTO_GOPHER)
+ if (r.proto != PROTO_FINGER &&
+ r.proto != PROTO_GEMINI &&
+ r.proto != PROTO_GOPHER)
die();
if ((req = calloc(1, sizeof(*req))) == NULL)
die();
- req->id = imsg.hdr.peerid;
+ req->id = imsg_get_id(&imsg);
TAILQ_INSERT_HEAD(&reqhead, req, reqs);
- if ((req->host = strdup(r->host)) == NULL)
+ if ((req->host = strdup(r.host)) == NULL)
die();
- if ((req->port = strdup(r->port)) == NULL)
+ if ((req->port = strdup(r.port)) == NULL)
die();
- if ((req->req = strdup(r->req)) == NULL)
+ if ((req->req = strdup(r.req)) == NULL)
die();
req->len = strlen(req->req);
- req->proto = r->proto;
+ req->proto = r.proto;
conn_towards(req);
break;
case IMSG_CERT_STATUS:
- if ((req = req_by_id(imsg.hdr.peerid)) == NULL)
+ if ((req = req_by_id(imsg_get_id(&imsg))) == NULL)
break;
if (imsg_get_data(&imsg, &certok, sizeof(certok)) ==
break;
case IMSG_PROCEED:
- if ((req = req_by_id(imsg.hdr.peerid)) == NULL)
+ if ((req = req_by_id(imsg_get_id(&imsg))) == NULL)
break;
bufferevent_enable(req->bev, EV_READ);
break;
case IMSG_STOP:
- if ((req = req_by_id(imsg.hdr.peerid)) == NULL)
+ if ((req = req_by_id(imsg_get_id(&imsg))) == NULL)
break;
close_conn(0, 0, req);
break;
return;
default:
- errx(1, "got unknown imsg %d", imsg.hdr.type);
+ errx(1, "got unknown imsg %d", imsg_get_type(&imsg));
}
imsg_free(&imsg);