1 /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
2 /* dbus-transport-win.c Windows socket subclasses of DBusTransport
4 * Copyright (C) 2002, 2003, 2004 Red Hat Inc.
5 * Copyright (C) 2007 Ralf Habacker <ralf.habacker@freenet.de>
7 * Licensed under the Academic Free License version 2.1
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version.
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, write to the Free Software
21 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
25 #include "dbus-internals.h"
26 #include "dbus-connection-internal.h"
27 #include "dbus-transport-socket.h"
28 #include "dbus-transport-protected.h"
29 #include "dbus-watch.h"
30 #include "dbus-sysdeps-win.h"
33 * @defgroup DBusTransportUnix DBusTransport implementations for UNIX
34 * @ingroup DBusInternals
35 * @brief Implementation details of DBusTransport on UNIX
41 * Opens platform specific transport types.
43 * @param entry the address entry to try opening
44 * @param transport_p return location for the opened transport
45 * @param error error to be set
46 * @returns result of the attempt
48 DBusTransportOpenResult
49 _dbus_transport_open_platform_specific (DBusAddressEntry *entry,
50 DBusTransport **transport_p,
55 const char *host = dbus_address_entry_get_value (entry, "host");
56 const char *port = dbus_address_entry_get_value (entry, "port");
57 const char *family = dbus_address_entry_get_value (entry, "family");
58 const char *noncefile = dbus_address_entry_get_value (entry, "noncefile");
60 method = dbus_address_entry_get_method (entry);
61 _dbus_assert (method != NULL);
63 if (strcmp (method, "nonce-tcp") != 0)
65 _DBUS_ASSERT_ERROR_IS_CLEAR (error);
66 return DBUS_TRANSPORT_OPEN_NOT_HANDLED;
71 _dbus_set_bad_address (error, "nonce-tcp", "port", NULL);
72 return DBUS_TRANSPORT_OPEN_BAD_ADDRESS;
75 *transport_p = _dbus_transport_new_for_tcp_socket (host, port, family, noncefile, error);
76 if (*transport_p == NULL)
78 _DBUS_ASSERT_ERROR_IS_SET (error);
79 return DBUS_TRANSPORT_OPEN_DID_NOT_CONNECT;
83 _DBUS_ASSERT_ERROR_IS_CLEAR (error);
84 return DBUS_TRANSPORT_OPEN_OK;