1/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ 2/* dbus-transport-win.c Windows socket subclasses of DBusTransport 3 * 4 * Copyright (C) 2002, 2003, 2004 Red Hat Inc. 5 * Copyright (C) 2007 Ralf Habacker <ralf.habacker@freenet.de> 6 * 7 * Licensed under the Academic Free License version 2.1 8 * 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. 13 * 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. 18 * 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 22 * 23 */ 24 25#include <config.h> 26#include "dbus-internals.h" 27#include "dbus-connection-internal.h" 28#include "dbus-transport-socket.h" 29#include "dbus-transport-protected.h" 30#include "dbus-watch.h" 31#include "dbus-sysdeps-win.h" 32 33/** 34 * @defgroup DBusTransportUnix DBusTransport implementations for UNIX 35 * @ingroup DBusInternals 36 * @brief Implementation details of DBusTransport on UNIX 37 * 38 * @{ 39 */ 40 41/** 42 * Opens platform specific transport types. 43 * 44 * @param entry the address entry to try opening 45 * @param transport_p return location for the opened transport 46 * @param error error to be set 47 * @returns result of the attempt 48 */ 49DBusTransportOpenResult 50_dbus_transport_open_platform_specific (DBusAddressEntry *entry, 51 DBusTransport **transport_p, 52 DBusError *error) 53{ 54 const char *method; 55 56 const char *host = dbus_address_entry_get_value (entry, "host"); 57 const char *port = dbus_address_entry_get_value (entry, "port"); 58 const char *family = dbus_address_entry_get_value (entry, "family"); 59 const char *noncefile = dbus_address_entry_get_value (entry, "noncefile"); 60 61 method = dbus_address_entry_get_method (entry); 62 _dbus_assert (method != NULL); 63 64 if (strcmp (method, "nonce-tcp") != 0) 65 { 66 _DBUS_ASSERT_ERROR_IS_CLEAR (error); 67 return DBUS_TRANSPORT_OPEN_NOT_HANDLED; 68 } 69 70 if (port == NULL) 71 { 72 _dbus_set_bad_address (error, "nonce-tcp", "port", NULL); 73 return DBUS_TRANSPORT_OPEN_BAD_ADDRESS; 74 } 75 76 *transport_p = _dbus_transport_new_for_tcp_socket (host, port, family, noncefile, error); 77 if (*transport_p == NULL) 78 { 79 _DBUS_ASSERT_ERROR_IS_SET (error); 80 return DBUS_TRANSPORT_OPEN_DID_NOT_CONNECT; 81 } 82 else 83 { 84 _DBUS_ASSERT_ERROR_IS_CLEAR (error); 85 return DBUS_TRANSPORT_OPEN_OK; 86 } 87} 88 89/** @} */ 90