diff options
author | Sergey Kandaurov <pluknet@nginx.com> | 2019-01-28 14:33:31 +0000 |
---|---|---|
committer | Sergey Kandaurov <pluknet@nginx.com> | 2019-01-28 14:33:31 +0000 |
commit | f153bcebb52d705fef3b9a1f1a1d1627d19a4cf1 (patch) | |
tree | 5245830f6243f83c2b9a956f6e8561513036d266 /src | |
parent | 9497cc8c204874ef508e312e6acc5d3d5912d98f (diff) | |
download | nginx-f153bcebb52d705fef3b9a1f1a1d1627d19a4cf1.tar.gz nginx-f153bcebb52d705fef3b9a1f1a1d1627d19a4cf1.zip |
Fixed portability issues with union sigval.
AIO support in nginx was originally developed against FreeBSD versions 4-6,
where the sival_ptr field was named as sigval_ptr (seemingly by mistake[1]),
which made nginx use the only name available then. The standard-complaint
name was restored in 2005 (first appeared in FreeBSD 7.0, 2008), retaining
compatibility with previous versions[2][3]. In DragonFly, similar changes
were committed in 2009[4], with backward compatibility recently removed[5].
The change switches to the standard name, retaining compatibility with old
FreeBSD versions.
[1] https://svnweb.freebsd.org/changeset/base/48621
[2] https://svnweb.freebsd.org/changeset/base/152029
[3] https://svnweb.freebsd.org/changeset/base/174003
[4] https://gitweb.dragonflybsd.org/dragonfly.git/commit/3693401
[5] https://gitweb.dragonflybsd.org/dragonfly.git/commit/7875042
Diffstat (limited to 'src')
-rw-r--r-- | src/os/unix/ngx_file_aio_read.c | 2 | ||||
-rw-r--r-- | src/os/unix/ngx_freebsd_config.h | 6 |
2 files changed, 7 insertions, 1 deletions
diff --git a/src/os/unix/ngx_file_aio_read.c b/src/os/unix/ngx_file_aio_read.c index aedc3c90c..bb60ee824 100644 --- a/src/os/unix/ngx_file_aio_read.c +++ b/src/os/unix/ngx_file_aio_read.c @@ -110,7 +110,7 @@ ngx_file_aio_read(ngx_file_t *file, u_char *buf, size_t size, off_t offset, #if (NGX_HAVE_KQUEUE) aio->aiocb.aio_sigevent.sigev_notify_kqueue = ngx_kqueue; aio->aiocb.aio_sigevent.sigev_notify = SIGEV_KEVENT; - aio->aiocb.aio_sigevent.sigev_value.sigval_ptr = ev; + aio->aiocb.aio_sigevent.sigev_value.sival_ptr = ev; #endif ev->handler = ngx_file_aio_event_handler; diff --git a/src/os/unix/ngx_freebsd_config.h b/src/os/unix/ngx_freebsd_config.h index b7da48cb1..c641108b7 100644 --- a/src/os/unix/ngx_freebsd_config.h +++ b/src/os/unix/ngx_freebsd_config.h @@ -89,8 +89,14 @@ #if (NGX_HAVE_FILE_AIO) + #include <aio.h> typedef struct aiocb ngx_aiocb_t; + +#if (__FreeBSD_version < 700005 && !defined __DragonFly__) +#define sival_ptr sigval_ptr +#endif + #endif |