1d012387afef0ba02185ebe27bc6bb15551912e92Havoc Pennington/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ 2783e066ce311bc293272099934ce957a7b735566Ralf Habacker/* dbus-server-win.c Server implementation for WIN network protocols. 3783e066ce311bc293272099934ce957a7b735566Ralf Habacker * 4783e066ce311bc293272099934ce957a7b735566Ralf Habacker * Copyright (C) 2002, 2003, 2004 Red Hat Inc. 5783e066ce311bc293272099934ce957a7b735566Ralf Habacker * Copyright (C) 2007 Ralf Habacker <ralf.habacker@freenet.de> 6783e066ce311bc293272099934ce957a7b735566Ralf Habacker * 7783e066ce311bc293272099934ce957a7b735566Ralf Habacker * Licensed under the Academic Free License version 2.1 8783e066ce311bc293272099934ce957a7b735566Ralf Habacker * 9783e066ce311bc293272099934ce957a7b735566Ralf Habacker * This program is free software; you can redistribute it and/or modify 10783e066ce311bc293272099934ce957a7b735566Ralf Habacker * it under the terms of the GNU General Public License as published by 11783e066ce311bc293272099934ce957a7b735566Ralf Habacker * the Free Software Foundation; either version 2 of the License, or 12783e066ce311bc293272099934ce957a7b735566Ralf Habacker * (at your option) any later version. 13783e066ce311bc293272099934ce957a7b735566Ralf Habacker * 14783e066ce311bc293272099934ce957a7b735566Ralf Habacker * This program is distributed in the hope that it will be useful, 15783e066ce311bc293272099934ce957a7b735566Ralf Habacker * but WITHOUT ANY WARRANTY; without even the implied warranty of 16783e066ce311bc293272099934ce957a7b735566Ralf Habacker * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17783e066ce311bc293272099934ce957a7b735566Ralf Habacker * GNU General Public License for more details. 18783e066ce311bc293272099934ce957a7b735566Ralf Habacker * 19783e066ce311bc293272099934ce957a7b735566Ralf Habacker * You should have received a copy of the GNU General Public License 20783e066ce311bc293272099934ce957a7b735566Ralf Habacker * along with this program; if not, write to the Free Software 215baf2f856a9c6625993234855b07680da1c8916fTobias Mueller * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 22783e066ce311bc293272099934ce957a7b735566Ralf Habacker * 23783e066ce311bc293272099934ce957a7b735566Ralf Habacker */ 24783e066ce311bc293272099934ce957a7b735566Ralf Habacker 25dbecdeabb20e0ce11121819c63373f0afba57c58Marcus Brinkmann#include <config.h> 26783e066ce311bc293272099934ce957a7b735566Ralf Habacker#include "dbus-internals.h" 27783e066ce311bc293272099934ce957a7b735566Ralf Habacker#include "dbus-server-win.h" 28783e066ce311bc293272099934ce957a7b735566Ralf Habacker#include "dbus-server-socket.h" 29783e066ce311bc293272099934ce957a7b735566Ralf Habacker 30783e066ce311bc293272099934ce957a7b735566Ralf Habacker/** 31783e066ce311bc293272099934ce957a7b735566Ralf Habacker * @defgroup DBusServerWin DBusServer implementations for Windows 32783e066ce311bc293272099934ce957a7b735566Ralf Habacker * @ingroup DBusInternals 33783e066ce311bc293272099934ce957a7b735566Ralf Habacker * @brief Implementation details of DBusServer on Windows 34783e066ce311bc293272099934ce957a7b735566Ralf Habacker * 35783e066ce311bc293272099934ce957a7b735566Ralf Habacker * @{ 36783e066ce311bc293272099934ce957a7b735566Ralf Habacker */ 37783e066ce311bc293272099934ce957a7b735566Ralf Habacker 38783e066ce311bc293272099934ce957a7b735566Ralf Habacker/** 39783e066ce311bc293272099934ce957a7b735566Ralf Habacker * Tries to interpret the address entry in a platform-specific 40783e066ce311bc293272099934ce957a7b735566Ralf Habacker * way, creating a platform-specific server type if appropriate. 41783e066ce311bc293272099934ce957a7b735566Ralf Habacker * Sets error if the result is not OK. 42783e066ce311bc293272099934ce957a7b735566Ralf Habacker * 43783e066ce311bc293272099934ce957a7b735566Ralf Habacker * @param entry an address entry 44783e066ce311bc293272099934ce957a7b735566Ralf Habacker * @param server_p location to store a new DBusServer, or #NULL on failure. 45783e066ce311bc293272099934ce957a7b735566Ralf Habacker * @param error location to store rationale for failure on bad address 46783e066ce311bc293272099934ce957a7b735566Ralf Habacker * @returns the outcome 47783e066ce311bc293272099934ce957a7b735566Ralf Habacker * 48783e066ce311bc293272099934ce957a7b735566Ralf Habacker */ 49783e066ce311bc293272099934ce957a7b735566Ralf HabackerDBusServerListenResult 50783e066ce311bc293272099934ce957a7b735566Ralf Habacker_dbus_server_listen_platform_specific (DBusAddressEntry *entry, 51783e066ce311bc293272099934ce957a7b735566Ralf Habacker DBusServer **server_p, 52783e066ce311bc293272099934ce957a7b735566Ralf Habacker DBusError *error) 53783e066ce311bc293272099934ce957a7b735566Ralf Habacker{ 545e2a99c12c7e3531d908ed4fca82caca9cb02825Frank Osterfeld const char *method; 555e2a99c12c7e3531d908ed4fca82caca9cb02825Frank Osterfeld 56783e066ce311bc293272099934ce957a7b735566Ralf Habacker *server_p = NULL; 575e2a99c12c7e3531d908ed4fca82caca9cb02825Frank Osterfeld 585e2a99c12c7e3531d908ed4fca82caca9cb02825Frank Osterfeld method = dbus_address_entry_get_method (entry); 595e2a99c12c7e3531d908ed4fca82caca9cb02825Frank Osterfeld 605e2a99c12c7e3531d908ed4fca82caca9cb02825Frank Osterfeld if (strcmp (method, "nonce-tcp") == 0) 615e2a99c12c7e3531d908ed4fca82caca9cb02825Frank Osterfeld { 625e2a99c12c7e3531d908ed4fca82caca9cb02825Frank Osterfeld const char *host; 635e2a99c12c7e3531d908ed4fca82caca9cb02825Frank Osterfeld const char *port; 645e2a99c12c7e3531d908ed4fca82caca9cb02825Frank Osterfeld const char *bind; 655e2a99c12c7e3531d908ed4fca82caca9cb02825Frank Osterfeld const char *family; 665e2a99c12c7e3531d908ed4fca82caca9cb02825Frank Osterfeld 675e2a99c12c7e3531d908ed4fca82caca9cb02825Frank Osterfeld host = dbus_address_entry_get_value (entry, "host"); 685e2a99c12c7e3531d908ed4fca82caca9cb02825Frank Osterfeld bind = dbus_address_entry_get_value (entry, "bind"); 695e2a99c12c7e3531d908ed4fca82caca9cb02825Frank Osterfeld port = dbus_address_entry_get_value (entry, "port"); 705e2a99c12c7e3531d908ed4fca82caca9cb02825Frank Osterfeld family = dbus_address_entry_get_value (entry, "family"); 715e2a99c12c7e3531d908ed4fca82caca9cb02825Frank Osterfeld 725e2a99c12c7e3531d908ed4fca82caca9cb02825Frank Osterfeld *server_p = _dbus_server_new_for_tcp_socket (host, bind, port, 735e2a99c12c7e3531d908ed4fca82caca9cb02825Frank Osterfeld family, error, TRUE); 745e2a99c12c7e3531d908ed4fca82caca9cb02825Frank Osterfeld 755e2a99c12c7e3531d908ed4fca82caca9cb02825Frank Osterfeld if (*server_p) 765e2a99c12c7e3531d908ed4fca82caca9cb02825Frank Osterfeld { 775e2a99c12c7e3531d908ed4fca82caca9cb02825Frank Osterfeld _DBUS_ASSERT_ERROR_IS_CLEAR(error); 785e2a99c12c7e3531d908ed4fca82caca9cb02825Frank Osterfeld return DBUS_SERVER_LISTEN_OK; 795e2a99c12c7e3531d908ed4fca82caca9cb02825Frank Osterfeld } 805e2a99c12c7e3531d908ed4fca82caca9cb02825Frank Osterfeld else 815e2a99c12c7e3531d908ed4fca82caca9cb02825Frank Osterfeld { 825e2a99c12c7e3531d908ed4fca82caca9cb02825Frank Osterfeld _DBUS_ASSERT_ERROR_IS_SET(error); 835e2a99c12c7e3531d908ed4fca82caca9cb02825Frank Osterfeld return DBUS_SERVER_LISTEN_DID_NOT_CONNECT; 845e2a99c12c7e3531d908ed4fca82caca9cb02825Frank Osterfeld } 855e2a99c12c7e3531d908ed4fca82caca9cb02825Frank Osterfeld } 865e2a99c12c7e3531d908ed4fca82caca9cb02825Frank Osterfeld else 875e2a99c12c7e3531d908ed4fca82caca9cb02825Frank Osterfeld { 88783e066ce311bc293272099934ce957a7b735566Ralf Habacker _DBUS_ASSERT_ERROR_IS_CLEAR(error); 89783e066ce311bc293272099934ce957a7b735566Ralf Habacker return DBUS_SERVER_LISTEN_NOT_HANDLED; 90783e066ce311bc293272099934ce957a7b735566Ralf Habacker} 915e2a99c12c7e3531d908ed4fca82caca9cb02825Frank Osterfeld} 92783e066ce311bc293272099934ce957a7b735566Ralf Habacker 93783e066ce311bc293272099934ce957a7b735566Ralf Habacker/** @} */ 94783e066ce311bc293272099934ce957a7b735566Ralf Habacker 95