Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nginx/nginx.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/os/unix/ngx_socket.c')
-rw-r--r--src/os/unix/ngx_socket.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/os/unix/ngx_socket.c b/src/os/unix/ngx_socket.c
new file mode 100644
index 000000000..d213fa86f
--- /dev/null
+++ b/src/os/unix/ngx_socket.c
@@ -0,0 +1,26 @@
+
+#include <ngx_socket.h>
+
+
+/* ioctl(FIONBIO) set blocking mode with one syscall only while
+ fcntl(F_SETFL, ~O_NONBLOCK) need to know previous state
+ using fcntl(F_GETFL).
+ On FreeBSD both are syscall */
+
+#ifdef __FreeBSD__
+
+int ngx_nonblocking(ngx_socket_t s)
+{
+ unsigned long nb = 1;
+
+ return ioctl(s, FIONBIO, &nb);
+}
+
+int ngx_blocking(ngx_socket_t s)
+{
+ unsigned long nb = 0;
+
+ return ioctl(s, FIONBIO, &nb);
+}
+
+#endif