Index: content/browser/zygote_host_linux.cc |
diff --git a/content/browser/zygote_host_linux.cc b/content/browser/zygote_host_linux.cc |
index 4a514362c0307b9a2ff4a1699a9e1ab1ddb9d5b7..0469a979bcca66907e70d163efd4326e3ffbbf58 100644 |
--- a/content/browser/zygote_host_linux.cc |
+++ b/content/browser/zygote_host_linux.cc |
@@ -81,7 +81,14 @@ void ZygoteHost::Init(const std::string& sandbox_cmd) { |
cmd_line.AppendSwitchASCII(switches::kProcessType, switches::kZygoteProcess); |
int fds[2]; |
+#if defined(OS_FREEBSD) || defined(OS_OPENBSD) |
+ // The BSDs often don't support SOCK_SEQPACKET yet, so fall back to |
+ // SOCK_DGRAM if necessary. |
+ if (socketpair(PF_UNIX, SOCK_SEQPACKET, 0, fds) != 0) |
+ CHECK(socketpair(PF_UNIX, SOCK_DGRAM, 0, fds) == 0); |
+#else |
CHECK(socketpair(PF_UNIX, SOCK_SEQPACKET, 0, fds) == 0); |
+#endif |
base::file_handle_mapping_vector fds_to_map; |
fds_to_map.push_back(std::make_pair(fds[1], 3)); |