This seems sensible. Let's see what reyk thinks.
On Fri, Apr 22, 2011 at 4:47 PM, Alexander Bluhm
<[email protected]> wrote:
> Hi,
>
> Can we get rid of those casts in relayd by not declaring a void
> pointer for struct rsession? That way the compiler can do its job
> and enforce correct types.
>
> ok?
>
> bluhm
>
>
> Index: usr.sbin/relayd/relay.c
> ===================================================================
> RCS file: /data/mirror/openbsd/cvs/src/usr.sbin/relayd/relay.c,v
> retrieving revision 1.133
> diff -u -p -r1.133 relay.c
> --- usr.sbin/relayd/relay.c 12 Apr 2011 12:37:22 -0000 1.133
> +++ usr.sbin/relayd/relay.c 22 Apr 2011 13:37:11 -0000
> @@ -907,7 +907,7 @@ void
> relay_write(struct bufferevent *bev, void *arg)
> {
> struct ctl_relay_event *cre = (struct ctl_relay_event *)arg;
> - struct rsession *con = (struct rsession *)cre->con;
> + struct rsession *con = cre->con;
> if (gettimeofday(&con->se_tv_last, NULL) == -1)
> con->se_done = 1;
> if (con->se_done)
> @@ -936,7 +936,7 @@ void
> relay_read(struct bufferevent *bev, void *arg)
> {
> struct ctl_relay_event *cre = (struct ctl_relay_event *)arg;
> - struct rsession *con = (struct rsession *)cre->con;
> + struct rsession *con = cre->con;
> struct evbuffer *src = EVBUFFER_INPUT(bev);
>
> if (gettimeofday(&con->se_tv_last, NULL) == -1)
> @@ -961,7 +961,7 @@ int
> relay_resolve(struct ctl_relay_event *cre,
> struct protonode *proot, struct protonode *pn)
> {
> - struct rsession *con = (struct rsession *)cre->con;
> + struct rsession *con = cre->con;
> char buf[IBUF_READ_SIZE], *ptr;
> int id;
>
> @@ -1028,7 +1028,7 @@ relay_resolve(struct ctl_relay_event *cr
> char *
> relay_expand_http(struct ctl_relay_event *cre, char *val, char *buf, size_t
len)
> {
> - struct rsession *con = (struct rsession *)cre->con;
> + struct rsession *con = cre->con;
> struct relay *rlay = (struct relay *)con->se_relay;
> char ibuf[128];
>
> @@ -1105,7 +1105,7 @@ int
> relay_handle_http(struct ctl_relay_event *cre, struct protonode *proot,
> struct protonode *pn, struct protonode *pk, int header)
> {
> - struct rsession *con = (struct rsession *)cre->con;
> + struct rsession *con = cre->con;
> char buf[IBUF_READ_SIZE], *ptr;
> int ret = PN_DROP, mark = 0;
> struct protonode *next;
> @@ -1221,7 +1221,7 @@ void
> relay_read_httpcontent(struct bufferevent *bev, void *arg)
> {
> struct ctl_relay_event *cre = (struct ctl_relay_event *)arg;
> - struct rsession *con = (struct rsession *)cre->con;
> + struct rsession *con = cre->con;
> struct evbuffer *src = EVBUFFER_INPUT(bev);
> size_t size;
>
> @@ -1256,7 +1256,7 @@ void
> relay_read_httpchunks(struct bufferevent *bev, void *arg)
> {
> struct ctl_relay_event *cre = (struct ctl_relay_event *)arg;
> - struct rsession *con = (struct rsession *)cre->con;
> + struct rsession *con = cre->con;
> struct evbuffer *src = EVBUFFER_INPUT(bev);
> char *line;
> long lval;
> @@ -1374,7 +1374,7 @@ void
> relay_read_http(struct bufferevent *bev, void *arg)
> {
> struct ctl_relay_event *cre = (struct ctl_relay_event *)arg;
> - struct rsession *con = (struct rsession *)cre->con;
> + struct rsession *con = cre->con;
> struct relay *rlay = (struct relay *)con->se_relay;
> struct protocol *proto = rlay->rl_proto;
> struct evbuffer *src = EVBUFFER_INPUT(bev);
> @@ -1672,7 +1672,7 @@ static int
> _relay_lookup_url(struct ctl_relay_event *cre, char *host, char *path,
> char *query, enum digest_type type)
> {
> - struct rsession *con = (struct rsession *)cre->con;
> + struct rsession *con = cre->con;
> struct protonode *proot, *pnv, pkv;
> char *val, *md = NULL;
> int ret = PN_FAIL;
> @@ -1726,7 +1726,7 @@ int
> relay_lookup_url(struct ctl_relay_event *cre, const char *str,
> enum digest_type type)
> {
> - struct rsession *con = (struct rsession *)cre->con;
> + struct rsession *con = cre->con;
> int i, j, dots;
> char *hi[RELAY_MAXLOOKUPLEVELS], *p, *pp, *c, ch;
> char ph[MAXHOSTNAMELEN];
> @@ -1803,7 +1803,7 @@ relay_lookup_url(struct ctl_relay_event
> int
> relay_lookup_query(struct ctl_relay_event *cre)
> {
> - struct rsession *con = (struct rsession *)cre->con;
> + struct rsession *con = cre->con;
> struct protonode *proot, *pnv, pkv;
> char *val, *ptr;
> int ret;
> @@ -1846,7 +1846,7 @@ relay_lookup_query(struct ctl_relay_even
> int
> relay_lookup_cookie(struct ctl_relay_event *cre, const char *str)
> {
> - struct rsession *con = (struct rsession *)cre->con;
> + struct rsession *con = cre->con;
> struct protonode *proot, *pnv, pkv;
> char *val, *ptr;
> int ret;
> @@ -1982,7 +1982,7 @@ relay_close_http(struct rsession *con, u
> int
> relay_splicelen(struct ctl_relay_event *cre)
> {
> - struct rsession *con = (struct rsession *)cre->con;
> + struct rsession *con = cre->con;
> off_t len;
> socklen_t optlen;
>
> @@ -2002,7 +2002,7 @@ void
> relay_error(struct bufferevent *bev, short error, void *arg)
> {
> struct ctl_relay_event *cre = (struct ctl_relay_event *)arg;
> - struct rsession *con = (struct rsession *)cre->con;
> + struct rsession *con = cre->con;
> struct evbuffer *dst;
> struct timeval tv, tv_now;
>
> @@ -2061,8 +2061,7 @@ relay_accept(int fd, short sig, void *ar
> if (fcntl(s, F_SETFL, O_NONBLOCK) == -1)
> goto err;
>
> - if ((con = (struct rsession *)
> - calloc(1, sizeof(struct rsession))) == NULL)
> + if ((con = calloc(1, sizeof(*con))) == NULL)
> goto err;
>
> con->se_in.s = s;
> @@ -2354,7 +2353,7 @@ relay_bindany(int fd, short event, void
> return;
> }
>
> - if (relay_connect((struct rsession *)con) == -1)
> + if (relay_connect(con) == -1)
> relay_close(con, "session failed");
> }
>
> @@ -2979,7 +2978,7 @@ relay_ssl_readcb(int fd, short event, vo
> {
> struct bufferevent *bufev = arg;
> struct ctl_relay_event *cre = (struct ctl_relay_event
*)bufev->cbarg;
> - struct rsession *con = (struct rsession *)cre->con;
> + struct rsession *con = cre->con;
> struct relay *rlay = (struct relay *)con->se_relay;
> int ret = 0, ssl_err = 0;
> short what = EVBUFFER_READ;
> @@ -3054,7 +3053,7 @@ relay_ssl_writecb(int fd, short event, v
> {
> struct bufferevent *bufev = arg;
> struct ctl_relay_event *cre = (struct ctl_relay_event
*)bufev->cbarg;
> - struct rsession *con = (struct rsession *)cre->con;
> + struct rsession *con = cre->con;
> struct relay *rlay = (struct relay *)con->se_relay;
> int ret = 0, ssl_err;
> short what = EVBUFFER_WRITE;
> Index: usr.sbin/relayd/relayd.h
> ===================================================================
> RCS file: /data/mirror/openbsd/cvs/src/usr.sbin/relayd/relayd.h,v
> retrieving revision 1.143
> diff -u -p -r1.143 relayd.h
> --- usr.sbin/relayd/relayd.h 12 Apr 2011 12:37:22 -0000 1.143
> +++ usr.sbin/relayd/relayd.h 22 Apr 2011 12:08:09 -0000
> @@ -153,7 +153,7 @@ struct ctl_relay_event {
> struct bufferevent *bev;
> struct evbuffer *output;
> struct ctl_relay_event *dst;
> - void *con;
> + struct rsession *con;
> SSL *ssl;
> u_int8_t *nodes;
> struct proto_tree *tree;