39 gconstpointer jingle_socks5_check(JingleContent *cn, GError **err); |
39 gconstpointer jingle_socks5_check(JingleContent *cn, GError **err); |
40 gboolean jingle_socks5_cmp(gconstpointer data1, gconstpointer data2); |
40 gboolean jingle_socks5_cmp(gconstpointer data1, gconstpointer data2); |
41 void jingle_socks5_tomessage(gconstpointer data, LmMessageNode *node); |
41 void jingle_socks5_tomessage(gconstpointer data, LmMessageNode *node); |
42 const gchar* jingle_socks5_xmlns(void); |
42 const gchar* jingle_socks5_xmlns(void); |
43 gconstpointer jingle_socks5_new(void); |
43 gconstpointer jingle_socks5_new(void); |
44 void jingle_socks5_send(session_content *sc, const gchar *to, gconstpointer data, gchar *buf, gsize size); |
44 void jingle_socks5_send(session_content *sc, const gchar *to, |
|
45 gconstpointer data, gchar *buf, gsize size); |
45 |
46 |
46 static void jingle_socks5_init(void); |
47 static void jingle_socks5_init(void); |
47 static void jingle_socks5_uninit(void); |
48 static void jingle_socks5_uninit(void); |
48 |
49 |
49 |
50 |
147 } |
148 } |
148 |
149 |
149 return (gconstpointer) js5b; |
150 return (gconstpointer) js5b; |
150 } |
151 } |
151 |
152 |
|
153 void jingle_socks5_tomessage(gconstpointer data, LmMessageNode *node) |
|
154 { |
|
155 JingleSocks5 *js5 = (JingleSocks5*)data; |
|
156 JingleS5BCandidate *js5c; |
|
157 |
|
158 LmMessageNode *node2, *node3; |
|
159 gchar *port; |
|
160 gchar *priority; |
|
161 GSList *el; |
|
162 |
|
163 if (lm_message_node_get_child(node, "transport") != NULL) |
|
164 return; |
|
165 |
|
166 node2 = lm_message_node_add_child(node, "transport", NULL); |
|
167 |
|
168 lm_message_node_set_attributes(node2, "xmlns", NS_JINGLE_TRANSPORT_SOCKS5, |
|
169 "sid", js5->sid, |
|
170 "mode", jingle_s5b_modes[js5->mode], |
|
171 NULL); |
|
172 for (el = js5->candidates; el; el = el->next) { |
|
173 js5c = (JingleS5BCandidate*) el->data; |
|
174 node3 = lm_message_node_add_child(node2, "candidate", NULL); |
|
175 |
|
176 port = g_strdup_printf("%" G_GUINT16_FORMAT, js5c->port); |
|
177 priority = g_strdup_printf("%" G_GUINT64_FORMAT, js5c->priority); |
|
178 |
|
179 lm_message_node_set_attributes(node3, "cid", js5c->cid, |
|
180 "host", js5c->host, |
|
181 "jid", js5c->jid, |
|
182 "port", port, |
|
183 "priority", priority, |
|
184 "type", jingle_s5b_types[js5c->type], |
|
185 NULL); |
|
186 g_free(port); |
|
187 g_free(priority); |
|
188 } |
|
189 } |
152 |
190 |
153 static void jingle_socks5_init(void) |
191 static void jingle_socks5_init(void) |
154 { |
192 { |
155 jingle_register_transport(NS_JINGLE_TRANSPORT_SOCKS5, &funcs, |
193 jingle_register_transport(NS_JINGLE_TRANSPORT_SOCKS5, &funcs, |
156 JINGLE_TRANSPORT_STREAMING, |
194 JINGLE_TRANSPORT_STREAMING, |