* fhandler.h (class fhandler_socket): Declare new method

set_socketpair_eids.
	* fhandler_socket.cc (fhandler_socket::set_socketpair_eids): New method.
	(fhandler_socket::dup): Duplicate sec_pipe if necessary.
	(fhandler_socket::listen): Only create sec_pipe if named pipes are
	available. Initialized sec_peer_pid to 0 as on Linux.
	(fhandler_socket::connect): Only run eid credential transaction if
	named pipes are available.  Fake otherwise. Initialized sec_peer_pid
	to 0 as on Linux.
	(fhandler_socket::accept): Ditto.
	(fhandler_socket::close): Move closing sec_pipe handle from here...
	(fhandler_socket::~fhandler_socket): ... to here.
	* net.cc (socketpair): Set eid credentials by calling
	fhandler_socket::set_socketpair_eids() on both socket ends.
	* wincap.h (wincaps::has_named_pipes): New element.
	* wincap.cc: Implement above element throughout.
This commit is contained in:
Corinna Vinschen
2005-02-28 13:11:50 +00:00
parent 882a0c8507
commit 496337c9a5
6 changed files with 132 additions and 36 deletions

View File

@@ -365,7 +365,10 @@ class fhandler_socket: public fhandler_base
__uid32_t sec_peer_uid;
__gid32_t sec_peer_gid;
char *eid_pipe_name (char *buf);
public:
void set_socketpair_eids (void);
private:
struct _WSAPROTOCOL_INFOA *prot_info_ptr;
char *sun_path;
struct status_flags