summaryrefslogtreecommitdiffstats
path: root/ipc/ipc_channel_posix.h
Commit message (Collapse)AuthorAgeFilesLines
* Wait properly for renderer crashesphajdan.jr@chromium.org2011-09-191-1/+4
| | | | | | | | | | | | | | This replaces a Sleep in automation with a wait for renderer crash. It turns out that our IPC on POSIX had one loophole that caused it not to notice very early crashes, so I also fixed that. The problem was that when the child process died before connecting to the parent's IPC channel, the parent wouldn't notice the crash because the child end of the IPC pipe was kept open for too long. This change makes the code close the child end of the pipe right after forking the child. This might also help with automation not noticing the browser crash during initial launch, or at least should be a good step toward fixing that problem. BUG=38497,90489 Review URL: http://codereview.chromium.org/7870008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@101760 0039d316-1c4b-4281-b951-d872f2087c98
* Convert some constants declared as anonymous enums into static consts so ↵pkasting@chromium.org2011-09-011-7/+6
| | | | | | | | | | | | | | they have types. This defines the constants where they're declared to preserve the existing readability as well as allow us to do things like dimension arrays based on the values of the constants. The drawback to defining constants at their declaration point is that supplying them to a templated function, like what DCHECK_EQ() expands into, triggers an "undefined symbol" error on Mac/Linux (and adding explicit storage for them in the .cc file can cause duplicate symbol errors on Windows). Here I've worked around that by converting DCHECK_EQ(a, b) to DCHECK(b == a). The original motiviation for this change was to find a way to eliminate some cases of passing anonymous-typed values as template arguments (which happens when you use a value from the enum in e.g. EXPECT_EQ()), which is technically illegal in C++03, though we don't warn about it. Simply naming the enum would have done this, but in general naming enums used to declare constants like this is bizarre ("enum Constants { ... }"?). BUG=92247 TEST=Compiles Review URL: http://codereview.chromium.org/7817005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@99087 0039d316-1c4b-4281-b951-d872f2087c98
* Fix IPC OnChannelConnected() to send correct PID on Linux/CrOSjamescook@chromium.org2011-08-311-0/+9
| | | | | | | | | | | | | | | | | | | | Sandboxed renderers on Linux/CrOS are in a PID namespace, so they don't know their own global PID. Thus the PID sent in the IPC channel Hello message contains an unexpected value, which is used in the OnChannelConnected() callback into chrome. This causes problems like the Task Manager not showing any data for FPS, JavaScript memory and image cache memory. The task manager is attempting to use the PID/process handle from BrowserMessageFilter, which got it from IPC::Channel::Listener::OnChannelConnected(), and it doesn't match the global PID of each renderer. BUG=70179 TEST=manual, open a few tabs, then open task manager, right-click to turn on JavaScript memory and image memory. Verify there are non-zero values for FPS, JavaScript memory, image cache memory Review URL: http://codereview.chromium.org/7778031 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@99040 0039d316-1c4b-4281-b951-d872f2087c98
* This patch caused Chrome to be unable to load any web pages on Chrome OS.satorux@chromium.org2011-08-231-8/+0
| | | | | | | | | | | | | BUG=chromium-os:19468 TEST=confirm chrome loads pages Revert "Fix IPC OnChannelConnected() to send correct PID on Linux/CrOS" This reverts commit 92321e01ba42f2d0e9508e921f8b440ac0b5319f. Review URL: http://codereview.chromium.org/7712022 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@97811 0039d316-1c4b-4281-b951-d872f2087c98
* Fix IPC OnChannelConnected() to send correct PID on Linux/CrOSjamescook@chromium.org2011-08-191-0/+8
| | | | | | | | | | | | | | | | | | | | Sandboxed renderers on Linux/CrOS are in a PID namespace, so they don't know their own global PID. Thus the PID sent in the IPC channel Hello message contains an unexpected value, which is used in the OnChannelConnected() callback into chrome. This causes problems like the Task Manager not showing any data for FPS, JavaScript memory and image cache memory. The task manager is attempting to use the PID/process handle from BrowserMessageFilter, which got it from IPC::Channel::Listener::OnChannelConnected(), and it doesn't match the global PID of each renderer. BUG=70179 TEST=manual, open a few tabs, then open task manager, right-click to turn on JavaScript memory and image memory. Verify there are non-zero values for FPS, JavaScript memory, image cache memory Review URL: http://codereview.chromium.org/7661004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@97481 0039d316-1c4b-4281-b951-d872f2087c98
* Fix NamedProxyLauncher on windows. Wait for the named pipe to be connectable.kkania@chromium.org2011-08-091-0/+1
| | | | | | | | | | | Enable NamedInterfaceTest on windows. BUG=chromium-os:8515 TEST=none Review URL: http://codereview.chromium.org/7486007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@95957 0039d316-1c4b-4281-b951-d872f2087c98
* Virtual destructors should have virtual keyword.hans@chromium.org2011-05-251-1/+1
| | | | | | | | | | | | | | | | | Make sure user-declared virtual destructors always have the virtual keyword. The Clang style-check plugin will check for this soon. No functionality change: virtual is only added to destructors that are already implicitly virtual. Also fix a couple of in-line destructor definitions. BUG=83408 TEST=none Review URL: http://codereview.chromium.org/7064033 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@86587 0039d316-1c4b-4281-b951-d872f2087c98
* Enhance the comment about IPC_USES_READWRITE. I was confused and thought thatbrettw@chromium.org2011-05-131-2/+9
| | | | | | | | | messages containing file descriptors would be sent over the other channel, rather than just the file descriptors. This is important because it preserves the message ordering. Review URL: http://codereview.chromium.org/7021002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@85300 0039d316-1c4b-4281-b951-d872f2087c98
* Remove unused member from POSIX implementation of ChannelImpl.cbentzel@chromium.org2011-04-211-2/+0
| | | | | | | | | | BUG=None TEST=Compiles Review URL: http://codereview.chromium.org/6873119 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@82485 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 80604 - Revert 80602 - Limit access to named IPC channels with ↵wez@chromium.org2011-04-061-1/+2
| | | | | | | | | SO_PEERCRED, not file permissions.BUG=TEST=Run Chrome & configure a service, to get the service process to start. Close Chrome and run a copy as a different user, but from the same user-data-dir. New Chrome should not be able to communicate with the service process.Review URL: http://codereview.chromium.org/6631002TBR=wez@chromium.orgReview URL: http://codereview.chromium.org/6806006 TBR=wez@chromium.org Review URL: http://codereview.chromium.org/6806007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@80606 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 80602 - Limit access to named IPC channels with SO_PEERCRED, not file ↵wez@chromium.org2011-04-061-2/+1
| | | | | | | | | permissions.BUG=TEST=Run Chrome & configure a service, to get the service process to start. Close Chrome and run a copy as a different user, but from the same user-data-dir. New Chrome should not be able to communicate with the service process.Review URL: http://codereview.chromium.org/6631002 TBR=wez@chromium.org Review URL: http://codereview.chromium.org/6806006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@80604 0039d316-1c4b-4281-b951-d872f2087c98
* Limit access to named IPC channels with SO_PEERCRED, not file permissions.wez@chromium.org2011-04-061-1/+2
| | | | | | | | | BUG= TEST=Run Chrome & configure a service, to get the service process to start. Close Chrome and run a copy as a different user, but from the same user-data-dir. New Chrome should not be able to communicate with the service process. Review URL: http://codereview.chromium.org/6631002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@80602 0039d316-1c4b-4281-b951-d872f2087c98
* Add some bullet proofing to ipc_channel_posix.dmaclach@chromium.org2011-03-021-1/+1
| | | | | | | | | | | Specifically make sure you can't connect after creating a bad channel. BUG=NONE TEST=Build and run tests Review URL: http://codereview.chromium.org/6596093 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@76633 0039d316-1c4b-4281-b951-d872f2087c98
* Clean up channel modesdmaclach@chromium.org2011-02-031-3/+1
| | | | | | | | | | | | Makes channel modes flags instead of a straight enum allowing us to check properties directly. BUG=none TEST=BUILD Review URL: http://codereview.chromium.org/6334061 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@73658 0039d316-1c4b-4281-b951-d872f2087c98
* Add support for sockets that can listen and accept a connection.dmaclach@chromium.org2010-12-201-14/+23
| | | | | | | | | | | | | | | | | | | | | These sockets allow one connection at a time, however clients can connect and disconnect repeatedly. These are going to be used by Cloud Print, Remoting and Automation. BUG=NONE TEST=BUILD Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=69660 Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=69690 Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=69694 Review URL: http://codereview.chromium.org/5749001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@69696 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 69694 - Add support for sockets that can listen and accept a connection.dmaclach@chromium.org2010-12-201-23/+14
| | | | | | | | | | | | | | | | | | | | | | These sockets allow one connection at a time, however clients can connect and disconnect repeatedly. These are going to be used by Cloud Print, Remoting and Automation. BUG=NONE TEST=BUILD Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=69660 Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=69690 Review URL: http://codereview.chromium.org/5749001 TBR=dmaclach@chromium.org Review URL: http://codereview.chromium.org/6060002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@69695 0039d316-1c4b-4281-b951-d872f2087c98
* Add support for sockets that can listen and accept a connection.dmaclach@chromium.org2010-12-201-14/+23
| | | | | | | | | | | | | | | | | | | These sockets allow one connection at a time, however clients can connect and disconnect repeatedly. These are going to be used by Cloud Print, Remoting and Automation. BUG=NONE TEST=BUILD Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=69660 Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=69690 Review URL: http://codereview.chromium.org/5749001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@69694 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 69690 - Add support for sockets that can listen and accept a connection.dmaclach@chromium.org2010-12-201-23/+14
| | | | | | | | | | | | | | | | | | | | These sockets allow one connection at a time, however clients can connect and disconnect repeatedly. These are going to be used by Cloud Print, Remoting and Automation. BUG=NONE TEST=BUILD Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=69660 Review URL: http://codereview.chromium.org/5749001 TBR=dmaclach@chromium.org Review URL: http://codereview.chromium.org/5972002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@69691 0039d316-1c4b-4281-b951-d872f2087c98
* Add support for sockets that can listen and accept a connection.dmaclach@chromium.org2010-12-201-14/+23
| | | | | | | | | | | | | | | | | These sockets allow one connection at a time, however clients can connect and disconnect repeatedly. These are going to be used by Cloud Print, Remoting and Automation. BUG=NONE TEST=BUILD Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=69660 Review URL: http://codereview.chromium.org/5749001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@69690 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 69660 - Add support for sockets that can listen and accept a connection.dmaclach@chromium.org2010-12-181-23/+14
| | | | | | | | | | | | | | | | | | These sockets allow one connection at a time, however clients can connect and disconnect repeatedly. These are going to be used by Cloud Print, Remoting and Automation. BUG=NONE TEST=BUILD Review URL: http://codereview.chromium.org/5749001 TBR=dmaclach@chromium.org Review URL: http://codereview.chromium.org/6045002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@69662 0039d316-1c4b-4281-b951-d872f2087c98
* Add support for sockets that can listen and accept a connection.dmaclach@chromium.org2010-12-181-14/+23
| | | | | | | | | | | | | | | These sockets allow one connection at a time, however clients can connect and disconnect repeatedly. These are going to be used by Cloud Print, Remoting and Automation. BUG=NONE TEST=BUILD Review URL: http://codereview.chromium.org/5749001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@69660 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 69264 - Add support for sockets that can listen and accept a connection.dmaclach@chromium.org2010-12-161-17/+14
| | | | | | | | | | | | | | | | | | These sockets allow one connection at a time, however clients can connect and disconnect repeatedly. These are going to be used by Cloud Print, Remoting and Automation. BUG=NONE TEST=BUILD Review URL: http://codereview.chromium.org/5749001 TBR=dmaclach@chromium.org Review URL: http://codereview.chromium.org/5943002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@69361 0039d316-1c4b-4281-b951-d872f2087c98
* Add support for sockets that can listen and accept a connection.dmaclach@chromium.org2010-12-151-14/+17
| | | | | | | | | | | | | | | These sockets allow one connection at a time, however clients can connect and disconnect repeatedly. These are going to be used by Cloud Print, Remoting and Automation. BUG=NONE TEST=BUILD Review URL: http://codereview.chromium.org/5749001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@69264 0039d316-1c4b-4281-b951-d872f2087c98
* Define IPC_USES_READWRITEdmaclach@chromium.org2010-12-081-1/+22
| | | | | | | | | | | | Simplify debugging some Linux issues on the Mac by allowing Mac users to compile with IPC_USES_READWRITE set to 1 and pass file descriptors in the same manner that Linux does by default. Previously it was all controlled by #if !defined OS_MACOSX. BUG=none TEST=build Review URL: http://codereview.chromium.org/5563005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@68636 0039d316-1c4b-4281-b951-d872f2087c98
* Convert over to channel handlesdmaclach@chromium.org2010-12-081-17/+3
| | | | | | | | | | | | This hides some of the internals of the posix channels from users, and gets rid of several #ifdef POSIX blocks. Generally simplifies usage of channels xplatform. BUG=none TEST=build Review URL: http://codereview.chromium.org/5598010 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@68621 0039d316-1c4b-4281-b951-d872f2087c98
* FBTF: Move more ctors/dtors from headers to implementation.erg@google.com2010-09-011-1/+1
| | | | | | | | | | | | | | | | | - Adding/Moving dtors of objects that have CancelableRequestConsumers shaves three megs off browser.a. - Adding/Moving dtors of objects that have ScopedRunnableMethodFactories only shaved 100k off browser.a/renderer.a. - Adding/Moving dtors of objects that used some form of base::*Timer<> was negligible; there were only a few classes that had a Timer but had a ctor/dtor in the header after the previous cleanups. BUG=none TEST=compiles Review URL: http://codereview.chromium.org/3278006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@58192 0039d316-1c4b-4281-b951-d872f2087c98
* `#pragma once` for app, base, chrome, gfx, ipc, net, skia, viewsthakis@chromium.org2010-07-261-0/+1
| | | | | | | | | BUG=50273 TEST=everything still builds, build is 10% faster on windows, same speed on mac/linux TBR: erg git-svn-id: svn://svn.chromium.org/chrome/trunk/src@53716 0039d316-1c4b-4281-b951-d872f2087c98
* chunk of straightforward ifdef/include changes for BSD portpvalchev@google.com2010-05-191-2/+2
| | | | | | | based on sprewell's patch Review URL: http://codereview.chromium.org/2069009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@47687 0039d316-1c4b-4281-b951-d872f2087c98
* The plugin channel host in the renderer process should not initialize IPCmark@chromium.org2010-03-161-0/+3
| | | | | | | | | | | | | | | | | | | | | using a known-closed channel name. Instead, when the channel name is known to be closed, initialization should fail. On POSIX systems, the channel is created by the plugin channel in the plugin process and shared with the renderer process over IPC. If the channel closes, the renderer process must not attempt to reestablish it; the plugin process must do that. This serves as early detection for and an escape from the assertion that causes renderers to die and be replaced by a sad tab when attempting to open multiple pages with plugins simultaneously. This resolves the Mac renderer top crash. BUG=26754 TEST=Test case from bug 26754 comment 9 (affected Macs only): a. Have lots of bookmarks (import Safari defaults) b. Right-click on bookmark bar, and choose "Open All Bookmarks" Expect: no crash, no sad tabs. This test should be repeated many times. Review URL: http://codereview.chromium.org/984004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@41755 0039d316-1c4b-4281-b951-d872f2087c98
* Use AutoReset (formerly ScopedBool) where possible.pkasting@chromium.org2009-11-201-5/+0
| | | | | | | | | | This frequently saves a tiny bit of code, but even when it doesn't I think it's more future-proof (less error-prone). BUG=none TEST=none Review URL: http://codereview.chromium.org/399096 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@32708 0039d316-1c4b-4281-b951-d872f2087c98
* On Linux, move the passing of filedescriptors to a dedicated socketpair().agl@chromium.org2009-09-041-0/+6
| | | | | | | | | | | | | | | | | (Patch by Markus) This allows the fast path to use read()/write() instead of recvmsg()/sendmsg() which is much cheaper for the Seccomp sandbox. Also, fixed minor seccomp sandbox issues discovered by this change. BUG=19120 ISSUE=164373 http://codereview.chromium.org/177049 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@25518 0039d316-1c4b-4281-b951-d872f2087c98
* Split the IPC code into ipc/agl@chromium.org2009-07-221-0/+135
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This splits the ipc code from the common project. The 'common' project pulls in all of webkit, the v8 bindings, skia, googleurl, and a number of other projects which makes it very difficult to deal with especially for external projects wanting just to use some of Chromium's infrastructure. This puts the ipc code into its top-level ipc/ directory with a dependency only on base. The common project depends on the new ipc/ipc.gyp:ipc target so that all projects currently pulling common in to get the IPC code still have it available. This mostly follows agl's pre-gyp attempt to do this which was r13062. Known issues: - Currently a number of projects depend on chrome/chrome.gyp:common in order to use the IPC infrastructure. Rather than fixing all of these dependencies I have made common depend on ipc/ipc.gyp:ipc and added "ipc" to the include_rules section of DEPS so that checkdeps.py doesn't complain. Over time projects that need IPC should depend on the IPC project themselves and dependencies on common removed, although I don't think many projects that need IPC will be able to get away without common currently. - ipc/ipc_message_macros.h still has #include "chrome/common/..." inside of a ipc/ should not refer to files in chrome/... now. I'm not sure how to resolve this since it's really an IDE bug - the named pipe name (windows+linux) and the logging event name (all) + env variable (posix) refer explicitly to 'Chrome' which somewhat hurts the illusion of ipc/ being an independent library. I think this should be examined in a subsequent, much smaller patch. - I've eliminated the IPC.SendMsgCount counter since it was implemented in a way to create a dependency from ipc/ to chrome/common/chrome_counters. This is the same approach that r13062 took. http://codereview.chromium.org/155905 (Patch from James Robinson) git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21342 0039d316-1c4b-4281-b951-d872f2087c98
* Revert "Move IPC code to ipc/"agl@chromium.org2009-04-031-112/+0
| | | | | | | This reverts commit r13062 which, unsurprisingly, broke the build. git-svn-id: svn://svn.chromium.org/chrome/trunk/src@13063 0039d316-1c4b-4281-b951-d872f2087c98
* Move IPC code to ipc/agl@chromium.org2009-04-031-0/+112
(No review URL: Rietvelt couldn't cope) git-svn-id: svn://svn.chromium.org/chrome/trunk/src@13062 0039d316-1c4b-4281-b951-d872f2087c98