diff --git a/src/knot/nameserver/requestor.c b/src/knot/nameserver/requestor.c index 781555f31f855d3d651e7fc187e29c115c427f02..7224386528de0f4f7bb1169bd431fa403e283436 100644 --- a/src/knot/nameserver/requestor.c +++ b/src/knot/nameserver/requestor.c @@ -154,8 +154,8 @@ struct request *requestor_make(struct requestor *requestor, } request->state = NS_PROC_DONE; - request->data.origin = from; - request->data.remote = to; + memcpy(&request->data.origin, from, sizeof(struct sockaddr_storage)); + memcpy(&request->data.remote, to, sizeof(struct sockaddr_storage)); request->data.fd = -1; request->data.query = query; return request; @@ -168,8 +168,8 @@ int requestor_enqueue(struct requestor *requestor, struct request * request, voi } /* Fetch a bound socket. */ - int fd = net_connected_socket(SOCK_STREAM, request->data.remote, - request->data.origin, O_NONBLOCK); + int fd = net_connected_socket(SOCK_STREAM, &request->data.remote, + &request->data.origin, O_NONBLOCK); if (fd < 0) { return KNOT_ECONN; } diff --git a/src/knot/nameserver/requestor.h b/src/knot/nameserver/requestor.h index c31dd45b36500f06d2820f9aefa813f4302cd8c1..f03827de00c463dc66e3dd9f63c2f46089b21499 100644 --- a/src/knot/nameserver/requestor.h +++ b/src/knot/nameserver/requestor.h @@ -40,7 +40,7 @@ struct requestor { struct request_data { node_t node; int fd; - const struct sockaddr_storage *remote, *origin; + struct sockaddr_storage remote, origin; knot_pkt_t *query; };