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;

Reply via email to