#cmakedefine HAVE_NFTW 1
#cmakedefine HAVE_OASYNC 1
#cmakedefine HAVE_ONOFOLLOW 1
-#cmakedefine HAVE_OPENSSL 1
+#cmakedefine HAVE_OCLOEXEC 1
+#cmakedefine HAVE_OPENSSL 1
#cmakedefine HAVE_O_DIRECT 1
#cmakedefine HAVE_PATH_MAX 1
#cmakedefine HAVE_PCRE_JIT 1
if (spair == NULL) {
spair = g_malloc (sizeof (gint) * 2);
- if (rspamd_socketpair (spair) == -1) {
+ if (rspamd_socketpair (spair, 0) == -1) {
rdata->rep.reply.spair.code = errno;
msg_err ("cannot create socket pair: %s", strerror (errno));
}
/* Starting worker process */
wrk = (struct rspamd_worker *) g_malloc0 (sizeof (struct rspamd_worker));
- if (!rspamd_socketpair (wrk->control_pipe)) {
+ if (!rspamd_socketpair (wrk->control_pipe, 0)) {
msg_err ("socketpair failure: %s", strerror (errno));
rspamd_hard_terminate (rspamd_main);
}
- if (!rspamd_socketpair (wrk->srv_pipe)) {
+ if (!rspamd_socketpair (wrk->srv_pipe, 0)) {
msg_err ("socketpair failure: %s", strerror (errno));
rspamd_hard_terminate (rspamd_main);
}
}
gboolean
-rspamd_socketpair (gint pair[2])
+rspamd_socketpair (gint pair[2], gboolean is_stream)
{
gint r, serrno;
+ if (!is_stream) {
#ifdef HAVE_SOCK_SEQPACKET
- r = socketpair (AF_LOCAL, SOCK_SEQPACKET, 0, pair);
+ r = socketpair (AF_LOCAL, SOCK_SEQPACKET, 0, pair);
- if (r == -1) {
- msg_warn ("seqpacket socketpair failed: %d, '%s'",
- errno,
- strerror (errno));
- r = socketpair (AF_LOCAL, SOCK_DGRAM, 0, pair);
- }
+ if (r == -1) {
+ msg_warn ("seqpacket socketpair failed: %d, '%s'",
+ errno,
+ strerror (errno));
+ r = socketpair (AF_LOCAL, SOCK_DGRAM, 0, pair);
+ }
#else
- r = socketpair (AF_LOCAL, SOCK_DGRAM, 0, pair);
+ r = socketpair (AF_LOCAL, SOCK_DGRAM, 0, pair);
#endif
+ }
+ else {
+ r = socketpair (AF_LOCAL, SOCK_STREAM, 0, pair);
+ }
if (r == -1) {
msg_warn ("socketpair failed: %d, '%s'", errno, strerror (
/*
* Create socketpair
*/
-gboolean rspamd_socketpair (gint pair[2]);
+gboolean rspamd_socketpair (gint pair[2], gboolean is_stream);
/*
* Write pid to file
DL_COUNT (worker->cf->scripts, tmp, nscripts);
msg_info ("started log_helper worker with %d scripts", nscripts);
-#ifdef HAVE_SOCK_SEQPACKET
- r = socketpair (AF_LOCAL, SOCK_SEQPACKET, 0, ctx->pair);
-#endif
- if (r == -1 && socketpair (AF_LOCAL, SOCK_DGRAM, 0, ctx->pair) == -1) {
+ r = rspamd_socketpair (ctx->pair, FALSE);
+
+ if (r == -1) {
msg_err ("cannot create socketpair: %s, exiting now", strerror (errno));
/* Prevent new processes spawning */
exit (EXIT_SUCCESS);
lua_pushvalue (L, 4);
cbdata->cbref = luaL_ref (L, LUA_REGISTRYINDEX);
- if (rspamd_socketpair (cbdata->pair) == -1) {
+ if (rspamd_socketpair (cbdata->pair, 0) == -1) {
msg_err ("cannot open socketpair: %s", strerror (errno));
cbdata->pair[0] = -1;
cbdata->pair[1] = -1;