if (spair == NULL) {
spair = g_malloc (sizeof (gint) * 2);
- if (rspamd_socketpair (spair, 0) == -1) {
+ if (rspamd_socketpair (spair, cmd.cmd.spair.af) == -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, 0)) {
+ if (!rspamd_socketpair (wrk->control_pipe, SOCK_DGRAM)) {
msg_err ("socketpair failure: %s", strerror (errno));
rspamd_hard_terminate (rspamd_main);
}
- if (!rspamd_socketpair (wrk->srv_pipe, 0)) {
+ if (!rspamd_socketpair (wrk->srv_pipe, SOCK_DGRAM)) {
msg_err ("socketpair failure: %s", strerror (errno));
rspamd_hard_terminate (rspamd_main);
}
}
gboolean
-rspamd_socketpair (gint pair[2], gboolean is_stream)
+rspamd_socketpair (gint pair[2], gint af)
{
- gint r, serrno;
+ gint r = -1, serrno;
- if (!is_stream) {
#ifdef HAVE_SOCK_SEQPACKET
+ if (af == SOCK_SEQPACKET) {
r = socketpair (AF_LOCAL, SOCK_SEQPACKET, 0, pair);
if (r == -1) {
r = socketpair (AF_LOCAL, SOCK_DGRAM, 0, pair);
}
-#else
- r = socketpair (AF_LOCAL, SOCK_DGRAM, 0, pair);
-#endif
}
- else {
- r = socketpair (AF_LOCAL, SOCK_STREAM, 0, pair);
+#endif
+ if (r == -1) {
+ r = socketpair (AF_LOCAL, af, 0, pair);
}
if (r == -1) {
/*
* Create socketpair
*/
-gboolean rspamd_socketpair (gint pair[2], gboolean is_stream);
+gboolean rspamd_socketpair (gint pair[2], gint af);
/*
* Make specified socket non-blocking
cbdata->out_pos = 0;
}
- if (rspamd_socketpair (cbdata->sp, TRUE) == -1) {
+ if (rspamd_socketpair (cbdata->sp, SOCK_STREAM) == -1) {
msg_err ("cannot spawn socketpair: %s", strerror (errno));
luaL_unref (L, LUA_REGISTRYINDEX, cbdata->func_cbref);
luaL_unref (L, LUA_REGISTRYINDEX, cbdata->cb_cbref);