D-Bus 1.4.0
|
00001 /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ 00002 /* dbus-server-win.c Server implementation for WIN network protocols. 00003 * 00004 * Copyright (C) 2002, 2003, 2004 Red Hat Inc. 00005 * Copyright (C) 2007 Ralf Habacker <ralf.habacker@freenet.de> 00006 * 00007 * Licensed under the Academic Free License version 2.1 00008 * 00009 * This program is free software; you can redistribute it and/or modify 00010 * it under the terms of the GNU General Public License as published by 00011 * the Free Software Foundation; either version 2 of the License, or 00012 * (at your option) any later version. 00013 * 00014 * This program is distributed in the hope that it will be useful, 00015 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00016 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00017 * GNU General Public License for more details. 00018 * 00019 * You should have received a copy of the GNU General Public License 00020 * along with this program; if not, write to the Free Software 00021 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 00022 * 00023 */ 00024 00025 #include <config.h> 00026 #include "dbus-internals.h" 00027 #include "dbus-server-win.h" 00028 #include "dbus-server-socket.h" 00029 00049 DBusServerListenResult 00050 _dbus_server_listen_platform_specific (DBusAddressEntry *entry, 00051 DBusServer **server_p, 00052 DBusError *error) 00053 { 00054 const char *method; 00055 00056 *server_p = NULL; 00057 00058 method = dbus_address_entry_get_method (entry); 00059 00060 if (strcmp (method, "nonce-tcp") == 0) 00061 { 00062 const char *host; 00063 const char *port; 00064 const char *bind; 00065 const char *family; 00066 00067 host = dbus_address_entry_get_value (entry, "host"); 00068 bind = dbus_address_entry_get_value (entry, "bind"); 00069 port = dbus_address_entry_get_value (entry, "port"); 00070 family = dbus_address_entry_get_value (entry, "family"); 00071 00072 *server_p = _dbus_server_new_for_tcp_socket (host, bind, port, 00073 family, error, TRUE); 00074 00075 if (*server_p) 00076 { 00077 _DBUS_ASSERT_ERROR_IS_CLEAR(error); 00078 return DBUS_SERVER_LISTEN_OK; 00079 } 00080 else 00081 { 00082 _DBUS_ASSERT_ERROR_IS_SET(error); 00083 return DBUS_SERVER_LISTEN_DID_NOT_CONNECT; 00084 } 00085 } 00086 else 00087 { 00088 _DBUS_ASSERT_ERROR_IS_CLEAR(error); 00089 return DBUS_SERVER_LISTEN_NOT_HANDLED; 00090 } 00091 } 00092