jingle-socks5/socks5.c
author Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
Fri, 20 Aug 2010 21:10:23 +0200
changeset 152 a8623ca21574
parent 151 b1acef78e4f5
permissions -rw-r--r--
JFT: app sub-module no more create the session himself
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
115
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
     1
/*
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
     2
 * socks5.c
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
     3
 *
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
     4
 * Copyrigth (C) 2010 Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
     5
 *
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
     6
 * This program is free software; you can redistribute it and/or modify
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
     7
 * it under the terms of the GNU General Public License as published by
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
     8
 * the Free Software Foundation; either version 2 of the License, or (at
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
     9
 * your option) any later version.
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    10
 *
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    11
 * This program is distributed in the hope that it will be useful, but
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    12
 * WITHOUT ANY WARRANTY; without even the implied warranty of
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    14
 * General Public License for more details.
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    15
 *
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    16
 * You should have received a copy of the GNU General Public License
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    17
 * along with this program; if not, write to the Free Software
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    18
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    19
 * USA
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    20
 */
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    21
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    22
#include "config.h"
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    23
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    24
#include <glib.h>
150
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
    25
#include <gio/gio.h>
115
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    26
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    27
#include <mcabber/xmpp.h>
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    28
#include <mcabber/modules.h>
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    29
#include <mcabber/utils.h>
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    30
#include <mcabber/xmpp_helper.h>
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    31
#include <mcabber/logprint.h>
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    32
#include <mcabber/hooks.h>
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    33
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    34
#include <jingle/jingle.h>
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    35
#include <jingle/check.h>
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    36
#include <jingle/register.h>
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    37
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    38
#include "socks5.h"
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    39
150
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
    40
static gconstpointer check(JingleContent *cn, GError **err);
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
    41
static void tomessage(gconstpointer data, LmMessageNode *node);
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
    42
static void send(session_content *sc, gconstpointer data, gchar *buf, gsize size);
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
    43
static void init(session_content *sc, gconstpointer data);
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
    44
static void end(session_content *sc, gconstpointer data);
115
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    45
150
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
    46
static void handle_sock_io(GSocket *sock, GIOCondition cond, gpointer data);
115
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    47
static void jingle_socks5_init(void);
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    48
static void jingle_socks5_uninit(void);
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    49
117
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
    50
115
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    51
const gchar *deps[] = { "jingle", NULL };
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    52
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    53
static JingleTransportFuncs funcs = {
150
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
    54
  .check     = check,
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
    55
  .tomessage = tomessage,
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
    56
  .new       = NULL,
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
    57
  .send      = send,
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
    58
  .init      = init,
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
    59
  .end       = end
115
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    60
};
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    61
116
7dbd5e5e7a7c S5B: check
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 115
diff changeset
    62
module_info_t  info_jingle_socks5bytestream = {
115
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    63
  .branch          = MCABBER_BRANCH,
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    64
  .api             = MCABBER_API_VERSION,
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    65
  .version         = PROJECT_VERSION,
116
7dbd5e5e7a7c S5B: check
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 115
diff changeset
    66
  .description     = "Jingle Socks5 Bytestream (XEP-0260)\n",
115
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    67
  .requires        = deps,
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    68
  .init            = jingle_socks5_init,
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    69
  .uninit          = jingle_socks5_uninit,
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    70
  .next            = NULL,
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    71
};
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    72
117
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
    73
static const gchar *jingle_s5b_types[] = {
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
    74
  "assisted",
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
    75
  "direct",
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
    76
  "proxy",
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
    77
  "tunnel",
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
    78
  NULL
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
    79
};
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
    80
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
    81
static const gchar *jingle_s5b_modes[] = {
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
    82
  "tcp",
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
    83
  "udp",
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
    84
  NULL
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
    85
};
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
    86
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
    87
150
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
    88
static gint index_in_array(const gchar *str, const gchar **array)
117
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
    89
{
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
    90
  gint i;
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
    91
  for (i = 0; array[i]; i++) {
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
    92
    if (!g_strcmp0(array[i], str)) {
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
    93
      return i;
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
    94
    }
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
    95
  }
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
    96
  return -1;
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
    97
}
115
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    98
150
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
    99
static gconstpointer check(JingleContent *cn, GError **err)
116
7dbd5e5e7a7c S5B: check
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 115
diff changeset
   100
{
150
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   101
  JingleS5B *js5b;
116
7dbd5e5e7a7c S5B: check
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 115
diff changeset
   102
  LmMessageNode *node = cn->transport, *node2;
117
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
   103
  const gchar *modestr;
116
7dbd5e5e7a7c S5B: check
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 115
diff changeset
   104
150
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   105
  js5b = g_new0(JingleS5B, 1);
117
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
   106
  modestr    = lm_message_node_get_attribute(node, "mode");
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
   107
  js5b->mode = index_in_array(modestr, jingle_s5b_modes);
120
3e2085a44a5c Last strdup
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 118
diff changeset
   108
  js5b->sid  = g_strdup(lm_message_node_get_attribute(node, "sid"));
117
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
   109
116
7dbd5e5e7a7c S5B: check
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 115
diff changeset
   110
  if (!js5b->sid) {
7dbd5e5e7a7c S5B: check
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 115
diff changeset
   111
    g_set_error(err, JINGLE_CHECK_ERROR, JINGLE_CHECK_ERROR_MISSING,
7dbd5e5e7a7c S5B: check
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 115
diff changeset
   112
                "an attribute of the transport element is missing");
7dbd5e5e7a7c S5B: check
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 115
diff changeset
   113
    g_free(js5b);
7dbd5e5e7a7c S5B: check
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 115
diff changeset
   114
    return NULL;
7dbd5e5e7a7c S5B: check
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 115
diff changeset
   115
  }
117
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
   116
116
7dbd5e5e7a7c S5B: check
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 115
diff changeset
   117
  for (node2 = node->children; node2; node2 = node2->next) {
7dbd5e5e7a7c S5B: check
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 115
diff changeset
   118
    if (!g_strcmp0(node->name, "candidate")) {
117
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
   119
      const gchar *portstr, *prioritystr, *typestr;
150
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   120
      S5BCandidate *jc = g_new0(S5BCandidate, 1);
120
3e2085a44a5c Last strdup
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 118
diff changeset
   121
      jc->cid      = g_strdup(lm_message_node_get_attribute(node2, "cid"));
3e2085a44a5c Last strdup
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 118
diff changeset
   122
      jc->host     = g_strdup(lm_message_node_get_attribute(node2, "host"));
3e2085a44a5c Last strdup
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 118
diff changeset
   123
      jc->jid      = g_strdup(lm_message_node_get_attribute(node2, "jid"));
117
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
   124
      portstr      = lm_message_node_get_attribute(node2, "port");
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
   125
      prioritystr  = lm_message_node_get_attribute(node2, "priority");
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
   126
      typestr      = lm_message_node_get_attribute(node2, "type");
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
   127
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
   128
      if (!jc->cid || !jc->host || !jc->jid || !prioritystr) {
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
   129
        g_free(jc);
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
   130
        continue;
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
   131
	  }
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
   132
      jc->port     = g_ascii_strtoull(portstr, NULL, 10);
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
   133
      jc->priority = g_ascii_strtoull(prioritystr, NULL, 10);
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
   134
      jc->type     = index_in_array(typestr, jingle_s5b_types);
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
   135
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
   136
      if (jc->type == -1) {
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
   137
        g_free(jc);
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
   138
        continue;
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
   139
	  }
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
   140
116
7dbd5e5e7a7c S5B: check
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 115
diff changeset
   141
      js5b->candidates = g_slist_append(js5b->candidates, jc);
7dbd5e5e7a7c S5B: check
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 115
diff changeset
   142
    }
7dbd5e5e7a7c S5B: check
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 115
diff changeset
   143
  }
117
bd54d1dba1ad JS5: Finish the check function
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 116
diff changeset
   144
116
7dbd5e5e7a7c S5B: check
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 115
diff changeset
   145
  return (gconstpointer) js5b;
7dbd5e5e7a7c S5B: check
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 115
diff changeset
   146
}
7dbd5e5e7a7c S5B: check
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 115
diff changeset
   147
150
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   148
static void tomessage(gconstpointer data, LmMessageNode *node)
118
f3408f4fe61a JS5B: to message
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 117
diff changeset
   149
{
150
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   150
  JingleS5B *js5 = (JingleS5B *)data;
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   151
  S5BCandidate *js5c;
118
f3408f4fe61a JS5B: to message
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 117
diff changeset
   152
  
f3408f4fe61a JS5B: to message
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 117
diff changeset
   153
  LmMessageNode *node2, *node3;
f3408f4fe61a JS5B: to message
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 117
diff changeset
   154
  gchar *port;
f3408f4fe61a JS5B: to message
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 117
diff changeset
   155
  gchar *priority;
f3408f4fe61a JS5B: to message
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 117
diff changeset
   156
  GSList *el;
f3408f4fe61a JS5B: to message
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 117
diff changeset
   157
  
f3408f4fe61a JS5B: to message
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 117
diff changeset
   158
  if (lm_message_node_get_child(node, "transport") != NULL)
f3408f4fe61a JS5B: to message
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 117
diff changeset
   159
    return;
f3408f4fe61a JS5B: to message
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 117
diff changeset
   160
  
f3408f4fe61a JS5B: to message
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 117
diff changeset
   161
  node2 = lm_message_node_add_child(node, "transport", NULL);
f3408f4fe61a JS5B: to message
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 117
diff changeset
   162
f3408f4fe61a JS5B: to message
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 117
diff changeset
   163
  lm_message_node_set_attributes(node2, "xmlns", NS_JINGLE_TRANSPORT_SOCKS5,
f3408f4fe61a JS5B: to message
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 117
diff changeset
   164
                                 "sid", js5->sid,
f3408f4fe61a JS5B: to message
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 117
diff changeset
   165
                                 "mode", jingle_s5b_modes[js5->mode],
f3408f4fe61a JS5B: to message
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 117
diff changeset
   166
                                 NULL);
f3408f4fe61a JS5B: to message
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 117
diff changeset
   167
  for (el = js5->candidates; el; el = el->next) {
150
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   168
    js5c = (S5BCandidate*) el->data;
118
f3408f4fe61a JS5B: to message
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 117
diff changeset
   169
    node3 = lm_message_node_add_child(node2, "candidate", NULL);
f3408f4fe61a JS5B: to message
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 117
diff changeset
   170
    
f3408f4fe61a JS5B: to message
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 117
diff changeset
   171
    port = g_strdup_printf("%" G_GUINT16_FORMAT, js5c->port);
f3408f4fe61a JS5B: to message
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 117
diff changeset
   172
    priority = g_strdup_printf("%" G_GUINT64_FORMAT, js5c->priority);
f3408f4fe61a JS5B: to message
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 117
diff changeset
   173
    
f3408f4fe61a JS5B: to message
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 117
diff changeset
   174
    lm_message_node_set_attributes(node3, "cid", js5c->cid,
f3408f4fe61a JS5B: to message
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 117
diff changeset
   175
                                   "host", js5c->host,
f3408f4fe61a JS5B: to message
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 117
diff changeset
   176
                                   "jid", js5c->jid,
f3408f4fe61a JS5B: to message
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 117
diff changeset
   177
                                   "port", port,
f3408f4fe61a JS5B: to message
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 117
diff changeset
   178
                                   "priority", priority,
f3408f4fe61a JS5B: to message
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 117
diff changeset
   179
                                   "type", jingle_s5b_types[js5c->type],
f3408f4fe61a JS5B: to message
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 117
diff changeset
   180
                                   NULL);
f3408f4fe61a JS5B: to message
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 117
diff changeset
   181
    g_free(port);
f3408f4fe61a JS5B: to message
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 117
diff changeset
   182
    g_free(priority);
f3408f4fe61a JS5B: to message
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 117
diff changeset
   183
  }
f3408f4fe61a JS5B: to message
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 117
diff changeset
   184
}
116
7dbd5e5e7a7c S5B: check
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 115
diff changeset
   185
150
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   186
static void init(session_content *sc, gconstpointer data)
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   187
{
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   188
  JingleS5B *js5 = (JingleS5B *)data;
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   189
  GInetAddress *addr;
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   190
  GSocketAddress *saddr;
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   191
  GSource *socksource;
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   192
  GError *err = NULL;
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   193
  g_assert(js5->sock == NULL);
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   194
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   195
  addr = g_inet_address_new_from_string("127.0.0.1");
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   196
  js5->sock = g_socket_new(g_inet_address_get_family(addr), G_SOCKET_TYPE_STREAM,
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   197
                           G_SOCKET_PROTOCOL_TCP, &err);
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   198
  if (js5->sock == NULL) {
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   199
    scr_LogPrint(LPRINT_LOGNORM, "Jingle SOCKS5: Error while creating a new socket: %s",
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   200
                 err->message != NULL ? err->message : "(no message)");
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   201
    return; // TODO: we need a way to return errors...
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   202
  }
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   203
  g_socket_set_blocking(js5->sock, FALSE);
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   204
  socksource = g_socket_create_source(js5->sock, ~0, NULL);
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   205
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   206
  g_source_set_callback(socksource, (GSourceFunc)handle_sock_io, NULL, NULL);
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   207
  g_source_attach(socksource, NULL);
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   208
  g_source_unref(socksource);
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   209
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   210
  saddr = g_inet_socket_address_new(addr, 31337);
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   211
  if (!g_socket_connect(js5->sock, saddr, NULL, &err)) {
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   212
    scr_LogPrint(LPRINT_LOGNORM, "Jingle SOCKS5: Error while connecting to the host: %s",
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   213
                 err->message != NULL ? err->message : "(no message)");
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   214
    return;
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   215
  }
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   216
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   217
}
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   218
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   219
/**
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   220
 * Handle any event on a sock
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   221
 */
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   222
static void handle_sock_io(GSocket *sock, GIOCondition cond, gpointer data)
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   223
{
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   224
  switch (cond) {
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   225
    case G_IO_IN:
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   226
      break;
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   227
    case G_IO_OUT:
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   228
      break;
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   229
    case G_IO_ERR:
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   230
      break;
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   231
    case G_IO_HUP:
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   232
      break;
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   233
    default:
151
b1acef78e4f5 JFT: explode _jft_send
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 150
diff changeset
   234
      ;
150
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   235
      // ?!
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   236
  }
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   237
}
5a4ca04ea3c9 JS5B: Start the socket initialization fuction.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 148
diff changeset
   238
115
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
   239
static void jingle_socks5_init(void)
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
   240
{
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
   241
  jingle_register_transport(NS_JINGLE_TRANSPORT_SOCKS5, &funcs,
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
   242
                            JINGLE_TRANSPORT_STREAMING,
148
cb40539b88b7 Fix compilation warnings. Add documentation in the code.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 127
diff changeset
   243
                            JINGLE_TRANSPORT_PRIO_HIGH);
115
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
   244
  xmpp_add_feature(NS_JINGLE_TRANSPORT_SOCKS5);
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
   245
}
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
   246
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
   247
static void jingle_socks5_uninit(void)
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
   248
{
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
   249
  xmpp_del_feature(NS_JINGLE_TRANSPORT_SOCKS5);
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
   250
  jingle_unregister_transport(NS_JINGLE_TRANSPORT_SOCKS5);
cae0cb7eff45 JS5: Add a CMakeList
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
   251
}