* to buffer incoming message until it's complete. */
if (!session->outgoing) {
if (!task) {
- task = qr_task_create(worker, (uv_handle_t *)handle, NULL);
+ /* Get TCP peer name, keep zeroed address if it fails. */
+ struct sockaddr_storage addr;
+ memset(&addr, 0, sizeof(addr));
+ int addr_len = sizeof(addr);
+ uv_tcp_getpeername((uv_tcp_t *)handle, (struct sockaddr *)&addr, &addr_len);
+ task = qr_task_create(worker, (uv_handle_t *)handle, (struct sockaddr *)&addr);
if (!task) {
return kr_error(ENOMEM);
}