adium-1.4 3369:d821a205c156: Added two headers to the header cop...
commits at adium.im
commits at adium.im
Mon Feb 21 12:48:14 UTC 2011
details: http://hg.adium.im/adium-1.4/rev/d821a205c156
revision: 3369:d821a205c156
author: Evan Schoenberg
date: Sun Feb 20 19:20:57 2011 -0600
Added two headers to the header copy phase of purple_make which are now needed, as we use them but they are now libpurple internal
Subject: adium-1.4 3370:a288e9aa17f3: Updated to libpurple 2.7.10 (im.pidgin.adium.1-4 @ f15ef8ae)
details: http://hg.adium.im/adium-1.4/rev/a288e9aa17f3
revision: 3370:a288e9aa17f3
author: Evan Schoenberg
date: Mon Feb 21 06:47:09 2011 -0600
Updated to libpurple 2.7.10 (im.pidgin.adium.1-4 @ f15ef8ae)
diffs (truncated from 2969 to 1000 lines):
diff -r 10a88716ae53 -r a288e9aa17f3 Frameworks/libpurple.framework/Versions/0/Headers/backend-iface.h
--- a/Frameworks/libpurple.framework/Versions/0/Headers/backend-iface.h Sun Feb 20 03:00:10 2011 +0100
+++ b/Frameworks/libpurple.framework/Versions/0/Headers/backend-iface.h Mon Feb 21 06:47:09 2011 -0600
@@ -46,7 +46,7 @@
struct _PurpleMediaBackendIface
{
- GTypeInterface parent_iface; /**< The parent iface class */
+ GTypeInterface parent_iface; /**< The parent iface class */
/** Implementable functions called with purple_media_backend_* */
gboolean (*add_stream) (PurpleMediaBackend *self,
diff -r 10a88716ae53 -r a288e9aa17f3 Frameworks/libpurple.framework/Versions/0/Headers/buddylist.h
--- a/Frameworks/libpurple.framework/Versions/0/Headers/buddylist.h Sun Feb 20 03:00:10 2011 +0100
+++ b/Frameworks/libpurple.framework/Versions/0/Headers/buddylist.h Mon Feb 21 06:47:09 2011 -0600
@@ -44,7 +44,7 @@
* Get all the buddies in the current account.
*
* @param account Current account.
- *
+ *
* @return List of buddies.
*/
char *
diff -r 10a88716ae53 -r a288e9aa17f3 Frameworks/libpurple.framework/Versions/0/Headers/codec.h
--- a/Frameworks/libpurple.framework/Versions/0/Headers/codec.h Sun Feb 20 03:00:10 2011 +0100
+++ b/Frameworks/libpurple.framework/Versions/0/Headers/codec.h Mon Feb 21 06:47:09 2011 -0600
@@ -117,7 +117,7 @@
/**
* Gets a list of the optional parameters.
*
- * The list consists of PurpleKeyValuePair's.
+ * The list consists of PurpleKeyValuePair's.
*
* @param The codec to get the optional parameters from.
*
diff -r 10a88716ae53 -r a288e9aa17f3 Frameworks/libpurple.framework/Versions/0/Headers/core.h
--- a/Frameworks/libpurple.framework/Versions/0/Headers/core.h Sun Feb 20 03:00:10 2011 +0100
+++ b/Frameworks/libpurple.framework/Versions/0/Headers/core.h Mon Feb 21 06:47:09 2011 -0600
@@ -201,7 +201,7 @@
* <dd>the type of UI. Possible values include 'pc', 'console', 'phone',
* 'handheld', 'web', and 'bot'. These values are compared
* programmatically and should not be localized.</dd>
- *
+ *
* </dl>
*
* @return A GHashTable with strings for keys and values. This
diff -r 10a88716ae53 -r a288e9aa17f3 Frameworks/libpurple.framework/Versions/0/Headers/directconn.h
--- a/Frameworks/libpurple.framework/Versions/0/Headers/directconn.h Sun Feb 20 03:00:10 2011 +0100
+++ b/Frameworks/libpurple.framework/Versions/0/Headers/directconn.h Mon Feb 21 06:47:09 2011 -0600
@@ -26,36 +26,174 @@
typedef struct _MsnDirectConn MsnDirectConn;
+#include "network.h"
+#include "proxy.h"
+#include "circbuffer.h"
+
#include "msg.h"
#include "slp.h"
#include "slplink.h"
+#include "slpmsg.h"
+
+typedef enum
+{
+ DC_STATE_CLOSED, /*< No socket opened yet */
+ DC_STATE_FOO, /*< Waiting for FOO message */
+ DC_STATE_HANDSHAKE, /*< Waiting for handshake message */
+ DC_STATE_HANDSHAKE_REPLY, /*< Waiting for handshake reply message */
+ DC_STATE_ESTABLISHED /*< Handshake complete */
+} MsnDirectConnState;
+
+typedef enum
+{
+ DC_PROCESS_OK = 0,
+ DC_PROCESS_ERROR,
+ DC_PROCESS_FALLBACK,
+ DC_PROCESS_CLOSE
+
+} MsnDirectConnProcessResult;
+
+typedef enum
+{
+ DC_NONCE_UNKNOWN, /**< Invalid scheme */
+ DC_NONCE_PLAIN, /**< No hashing */
+ DC_NONCE_SHA1 /**< First 16 bytes of SHA1 of nonce */
+
+} MsnDirectConnNonceType;
+
+typedef struct _MsnDirectConnPacket MsnDirectConnPacket;
+
+struct _MsnDirectConnPacket {
+ guint32 length;
+ guchar *data;
+
+ void (*sent_cb)(struct _MsnDirectConnPacket*);
+ MsnMessage *msg;
+};
struct _MsnDirectConn
{
- MsnSlpLink *slplink;
- MsnSlpCall *initial_call;
+ MsnDirectConnState state; /**< Direct connection status */
+ MsnSlpLink *slplink; /**< The slplink using this direct connection */
+ MsnSlpCall *slpcall; /**< The slpcall which initiated the direct connection */
+ char *msg_body; /**< The body of message sent by send_connection_info_msg_cb */
+ MsnSlpMessage *prev_ack; /**< The saved SLP ACK message */
- PurpleProxyConnectData *connect_data;
+ MsnDirectConnNonceType nonce_type; /**< The type of nonce hashing */
+ guchar nonce[16]; /**< The nonce used for handshake */
+ gchar nonce_hash[37]; /**< The hash of nonce */
+ gchar remote_nonce[37]; /**< The remote side's nonce */
- gboolean acked;
+ PurpleNetworkListenData *listen_data; /**< The pending socket creation request */
+ PurpleProxyConnectData *connect_data; /**< The pending connection attempt */
+ int listenfd; /**< The socket we're listening for incoming connections */
+ guint listenfd_handle; /**< The timeout handle for incoming connection */
+ guint connect_timeout_handle; /**< The timeout handle for outgoing connection */
- char *nonce;
+ int fd; /**< The direct connection socket */
+ guint recv_handle; /**< The incoming data callback handle */
+ guint send_handle; /**< The outgoing data callback handle */
- int fd;
+ gchar *in_buffer; /**< The receive buffer */
+ int in_size; /**< The receive buffer size */
+ int in_pos; /**< The first free position in receive buffer */
+ GQueue *out_queue; /**< The outgoing packet queue */
+ int msg_pos; /**< The position of next byte to be sent in the actual packet */
- int port;
- int inpa;
+ MsnSlpHeader header; /**< SLP header for parsing / serializing */
- int c;
+ /** The callback used for sending information to the peer about the opened socket */
+ void (*send_connection_info_msg_cb)(MsnDirectConn *);
+
+ gchar *ext_ip; /**< Our external IP address */
+ int ext_port; /**< Our external port */
+
+ guint timeout_handle;
+ gboolean progress;
+
+ /*int num_calls;*/ /**< The number of slpcalls using this direct connection */
};
-MsnDirectConn *msn_directconn_new(MsnSlpLink *slplink);
-gboolean msn_directconn_connect(MsnDirectConn *directconn,
- const char *host, int port);
-void msn_directconn_listen(MsnDirectConn *directconn);
-void msn_directconn_send_msg(MsnDirectConn *directconn, MsnMessage *msg);
-void msn_directconn_parse_nonce(MsnDirectConn *directconn, const char *nonce);
-void msn_directconn_destroy(MsnDirectConn *directconn);
-void msn_directconn_send_handshake(MsnDirectConn *directconn);
+/* Outgoing attempt */
+#define DC_OUTGOING_TIMEOUT (5)
+/* Time for internal + external connection attempts */
+#define DC_INCOMING_TIMEOUT (DC_OUTGOING_TIMEOUT * 3)
+/* Timeout for lack of activity */
+#define DC_TIMEOUT (60)
+
+/*
+ * Queues an MSN message to be sent via direct connection.
+ */
+void
+msn_dc_enqueue_msg(MsnDirectConn *dc, MsnMessage *msg);
+
+/*
+ * Creates, initializes, and returns a new MsnDirectConn structure.
+ */
+MsnDirectConn *
+msn_dc_new(MsnSlpCall *slpcall);
+
+/*
+ * Destroys an MsnDirectConn structure. Frees every buffer allocated earlier
+ * restores saved callbacks, etc.
+ */
+void
+msn_dc_destroy(MsnDirectConn *dc);
+
+/*
+ * Fallback to switchboard connection. Used when neither side is able to
+ * create a listening socket.
+ */
+void
+msn_dc_fallback_to_sb(MsnDirectConn *dc);
+
+/*
+ * Increases the slpcall counter in DC. The direct connection remains open
+ * until all slpcalls using it are destroyed.
+ */
+void
+msn_dc_ref(MsnDirectConn *dc);
+
+/*
+ * Decrease the slpcall counter in DC. The direct connection remains open
+ * until all slpcalls using it are destroyed.
+ */
+void
+msn_dc_unref(MsnDirectConn *dc);
+
+/*
+ * Sends a direct connect INVITE message on the associated slplink
+ * with the corresponding connection type and information.
+ */
+void
+msn_dc_send_invite(MsnDirectConn *dc);
+
+/*
+ * Sends a direct connect OK message as a response to an INVITE received earliaer
+ * on the corresponding slplink.
+ */
+void
+msn_dc_send_ok(MsnDirectConn *dc);
+
+/*
+ * This callback will be called when we're successfully connected to
+ * the remote host.
+ */
+void
+msn_dc_connected_to_peer_cb(gpointer data, gint fd, const gchar *error_msg);
+
+/*
+ * This callback will be called when we're unable to connect to
+ * the remote host in DC_CONNECT_TIMEOUT seconds.
+ */
+gboolean
+msn_dc_outgoing_connection_timeout_cb(gpointer data);
+
+/*
+ * This callback will be called when the listening socket is successfully
+ * created and its parameters (IP/port) are available.
+ */
+void
+msn_dc_listen_socket_created_cb(int listenfd, gpointer data);
#endif /* MSN_DIRECTCONN_H */
diff -r 10a88716ae53 -r a288e9aa17f3 Frameworks/libpurple.framework/Versions/0/Headers/ft.h
--- a/Frameworks/libpurple.framework/Versions/0/Headers/ft.h Sun Feb 20 03:00:10 2011 +0100
+++ b/Frameworks/libpurple.framework/Versions/0/Headers/ft.h Mon Feb 21 06:47:09 2011 -0600
@@ -712,8 +712,8 @@
* @since 2.7.0
*/
const gchar *purple_xfer_get_thumbnail_mimetype(const PurpleXfer *xfer);
-
-
+
+
/**
* Sets the thumbnail data for a transfer
*
diff -r 10a88716ae53 -r a288e9aa17f3 Frameworks/libpurple.framework/Versions/0/Headers/irc.h
--- a/Frameworks/libpurple.framework/Versions/0/Headers/irc.h Sun Feb 20 03:00:10 2011 +0100
+++ b/Frameworks/libpurple.framework/Versions/0/Headers/irc.h Mon Feb 21 06:47:09 2011 -0600
@@ -55,9 +55,11 @@
char *server;
int fd;
guint timer;
+ guint who_channel_timer;
GHashTable *buddies;
gboolean ison_outstanding;
+ GList *buddies_outstanding;
char *inbuf;
int inbuflen;
@@ -72,7 +74,7 @@
char *name;
char *server;
char *serverinfo;
- char *channels;
+ GString *channels;
int ircop;
int identified;
int idle;
@@ -97,12 +99,16 @@
char *name;
gboolean online;
gboolean flag;
+ gboolean new_online_status;
+ int ref;
};
typedef int (*IRCCmdCallback) (struct irc_conn *irc, const char *cmd, const char *target, const char **args);
int irc_send(struct irc_conn *irc, const char *buf);
gboolean irc_blist_timeout(struct irc_conn *irc);
+gboolean irc_who_channel_timeout(struct irc_conn *irc);
+void irc_buddy_query(struct irc_conn *irc);
char *irc_escape_privmsg(const char *text, gssize length);
@@ -160,6 +166,7 @@
void irc_msg_unknown(struct irc_conn *irc, const char *name, const char *from, char **args);
void irc_msg_wallops(struct irc_conn *irc, const char *name, const char *from, char **args);
void irc_msg_whois(struct irc_conn *irc, const char *name, const char *from, char **args);
+void irc_msg_who(struct irc_conn *irc, const char *name, const char *from, char **args);
void irc_msg_ignore(struct irc_conn *irc, const char *name, const char *from, char **args);
diff -r 10a88716ae53 -r a288e9aa17f3 Frameworks/libpurple.framework/Versions/0/Headers/libgadu.h
--- a/Frameworks/libpurple.framework/Versions/0/Headers/libgadu.h Sun Feb 20 03:00:10 2011 +0100
+++ b/Frameworks/libpurple.framework/Versions/0/Headers/libgadu.h Mon Feb 21 06:47:09 2011 -0600
@@ -1,7 +1,2074 @@
-#ifdef __ppc__
-#include "libgadu-ppc.h"
-#elif defined(__i386__)
-#include "libgadu-i386.h"
+/* $Id: libgadu.h.in 878 2009-11-16 23:48:19Z wojtekka $ */
+
+/*
+ * (C) Copyright 2001-2009 Wojtek Kaniewski <wojtekka at irc.pl>
+ * Robert J. Woźny <speedy at ziew.org>
+ * Arkadiusz MiÅkiewicz <arekm at pld-linux.org>
+ * Tomasz ChiliÅski <chilek at chilan.com>
+ * Piotr Wysocki <wysek at linux.bydg.org>
+ * Dawid Jarosz <dawjar at poczta.onet.pl>
+ * Jakub Zawadzki <darkjames at darkjames.ath.cx>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License Version
+ * 2.1 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307,
+ * USA.
+ */
+
+/**
+ * \file libgadu.h
+ *
+ * \brief GÅówny plik nagÅówkowy biblioteki
+ */
+
+#ifndef __GG_LIBGADU_H
+#define __GG_LIBGADU_H
+
+#ifdef __cplusplus
+#ifdef _WIN32
+#pragma pack(push, 1)
+#endif
+extern "C" {
+#endif
+
+#include <sys/types.h>
+#include <stdio.h>
+#include <stdarg.h>
+
+/** \cond ignore */
+
+/* Defined if libgadu was compiled for bigendian machine. */
+#undef GG_CONFIG_BIGENDIAN
+
+/* Defined if this machine has gethostbyname_r(). */
+#undef GG_CONFIG_HAVE_GETHOSTBYNAME_R
+
+/* Defined if libgadu was compiled and linked with pthread support. */
+#undef GG_CONFIG_HAVE_PTHREAD
+
+/* Defined if pthread resolver is the default one. */
+#undef GG_CONFIG_PTHREAD_DEFAULT
+
+/* Defined if this machine has C99-compiliant vsnprintf(). */
+#undef GG_CONFIG_HAVE_C99_VSNPRINTF
+
+/* Defined if this machine has va_copy(). */
+#undef GG_CONFIG_HAVE_VA_COPY
+
+/* Defined if this machine has __va_copy(). */
+#undef GG_CONFIG_HAVE___VA_COPY
+
+/* Defined if this machine supports long long. */
+#undef GG_CONFIG_HAVE_LONG_LONG
+
+/* Defined if libgadu was compiled and linked with TLS support. */
+#undef GG_CONFIG_HAVE_OPENSSL
+
+/* Defined if uintX_t types are defined in <stdint.h>. */
+#undef GG_CONFIG_HAVE_STDINT_H
+
+/* Defined if uintX_t types are defined in <inttypes.h>. */
+#undef GG_CONFIG_HAVE_INTTYPES_H
+
+/* Defined if uintX_t types are defined in <sys/inttypes.h>. */
+#undef GG_CONFIG_HAVE_SYS_INTTYPES_H
+
+/* Defined if uintX_t types are defined in <sys/int_types.h>. */
+#undef GG_CONFIG_HAVE_SYS_INT_TYPES_H
+
+/* Defined if uintX_t types are defined in <sys/types.h>. */
+#undef GG_CONFIG_HAVE_SYS_TYPES_H
+
+#ifdef GG_CONFIG_HAVE_OPENSSL
+#include <openssl/ssl.h>
+#endif
+
+#ifdef GG_CONFIG_HAVE_STDINT_H
+#include <stdint.h>
#else
-#error This isn't a recognized platform.
+# ifdef GG_CONFIG_HAVE_INTTYPES_H
+# include <inttypes.h>
+# else
+# ifdef GG_CONFIG_HAVE_SYS_INTTYPES_H
+# include <sys/inttypes.h>
+# else
+# ifdef GG_CONFIG_HAVE_SYS_INT_TYPES_H
+# include <sys/int_types.h>
+# else
+# ifdef GG_CONFIG_HAVE_SYS_TYPES_H
+# include <sys/types.h>
+# else
+
+#ifndef __AC_STDINT_H
+#define __AC_STDINT_H
+
+/* ISO C 9X: 7.18 Integer types <stdint.h> */
+
+typedef unsigned char uint8_t;
+typedef unsigned short uint16_t;
+typedef unsigned int uint32_t;
+
+#if !defined(__CYGWIN__) && !defined(__SunOS)
+#define __int8_t_defined
+typedef signed char int8_t;
+typedef signed short int16_t;
+typedef signed int int32_t;
#endif
+
+#endif /* __AC_STDINT_H */
+
+# endif
+# endif
+# endif
+# endif
+#endif
+
+/** \endcond */
+
+/**
+ * Numer Gadu-Gadu.
+ */
+typedef uint32_t uin_t;
+
+/**
+ * Identyfikator poÅÄ
czenia bezpoÅredniego Gadu-Gadu 7.x.
+ */
+typedef struct {
+ uint8_t id[8];
+} gg_dcc7_id_t;
+
+/**
+ * Makro deklarujÄ
ce pola wspólne dla struktur sesji.
+ */
+#define gg_common_head(x) \
+ int fd; /**< Obserwowany deskryptor */ \
+ int check; /**< Informacja o żÄ
daniu odczytu/zapisu (patrz \ref gg_check_t) */ \
+ int state; /**< Aktualny stan poÅÄ
czenia (patrz \ref gg_state_t) */ \
+ int error; /**< Kod bÅÄdu dla \c GG_STATE_ERROR (patrz \ref gg_error_t) */ \
+ int type; /**< Rodzaj sesji (patrz \ref gg_session_t) */ \
+ int id; /**< Identyfikator sesji */ \
+ int timeout; /**< Czas pozostaÅy do zakoÅczenia stanu */ \
+ int (*callback)(x*); /**< Funkcja zwrotna */ \
+ void (*destroy)(x*); /**< Funkcja zwalniania zasobów */
+
+/**
+ * Struktura wspólna dla wszystkich sesji i poÅÄ
czeÅ. Pozwala na proste
+ * rzutowanie niezależne od rodzaju poÅÄ
czenia.
+ */
+struct gg_common {
+ gg_common_head(struct gg_common)
+};
+
+struct gg_image_queue;
+
+struct gg_dcc7;
+
+/**
+ * Sposób rozwiÄ
zywania nazw serwerów.
+ */
+typedef enum {
+ GG_RESOLVER_DEFAULT = 0, /**< DomyÅlny sposób rozwiÄ
zywania nazw (jeden z poniższych) */
+ GG_RESOLVER_FORK, /**< RozwiÄ
zywanie nazw bazujÄ
ce na procesach */
+ GG_RESOLVER_PTHREAD, /**< RozwiÄ
zywanie nazw bazujÄ
ce na wÄ
tkach */
+ GG_RESOLVER_WIN32,
+ GG_RESOLVER_CUSTOM, /**< Funkcje rozwiÄ
zywania nazw dostarczone przed aplikacjÄ */
+ GG_RESOLVER_INVALID = -1 /**< NieprawidÅowy sposób rozwiÄ
zywania nazw (wynik \c gg_session_get_resolver) */
+} gg_resolver_t;
+
+/**
+ * Rodzaj kodowania znaków.
+ */
+typedef enum {
+ GG_ENCODING_CP1250 = 0, /**< Kodowanie CP1250 */
+ GG_ENCODING_UTF8, /**< Kodowanie UTF-8 */
+ GG_ENCODING_INVALID = -1 /**< NieprawidÅowe kodowanie */
+} gg_encoding_t;
+
+/**
+ * Sesja Gadu-Gadu.
+ *
+ * Tworzona przez funkcjÄ \c gg_login(), zwalniana przez \c gg_free_session().
+ *
+ * \ingroup login
+ */
+struct gg_session {
+ gg_common_head(struct gg_session)
+
+ int async; /**< Flaga poÅÄ
czenia asynchronicznego */
+ int pid; /**< Numer procesu rozwiÄ
zujÄ
cego nazwÄ serwera */
+ int port; /**< Port serwera */
+ int seq; /**< Numer sekwencyjny ostatniej wiadomoÅci */
+ int last_pong; /**< Czas otrzymania ostatniej ramki utrzymaniowej */
+ int last_event; /**< Czas otrzymania ostatniego pakietu */
+
+ struct gg_event *event; /**< Zdarzenie po wywoÅaniu \c callback */
+
+ uint32_t proxy_addr; /**< Adres serwera poÅredniczÄ
cego */
+ uint16_t proxy_port; /**< Port serwera poÅredniczÄ
cego */
+
+ uint32_t hub_addr; /**< Adres huba po rozwiÄ
zaniu nazwy */
+ uint32_t server_addr; /**< Adres serwera otrzymany od huba */
+
+ uint32_t client_addr; /**< Adres gniazda dla poÅÄ
czeÅ bezpoÅrednich do wersji Gadu-Gadu 6.x */
+ uint16_t client_port; /**< Port gniazda dla poÅÄ
czeÅ bezpoÅrednich do wersji Gadu-Gadu 6.x */
+
+ uint32_t external_addr; /**< Publiczny adres dla poÅÄ
czeÅ bezpoÅrednich do wersji Gadu-Gadu 6.x */
+ uint16_t external_port; /**< Publiczny port dla poÅÄ
czeÅ bezpoÅrednich do wersji Gadu-Gadu 6.x */
+
+ uin_t uin; /**< WÅasny numer Gadu-Gadu */
+ char *password; /**< HasÅo (zwalniane po użyciu) */
+
+ int initial_status; /**< PoczÄ
tkowy status */
+ int status; /**< Aktualny status */
+
+ char *recv_buf; /**< Bufor na odbierany pakiety */
+ int recv_done; /**< Liczba wczytanych bajtów pakietu */
+ int recv_left; /**< Liczba pozostaÅych do wczytania bajtów pakietu */
+
+ int protocol_version; /**< Wersja protokoÅu (bez flag) */
+ char *client_version; /**< Wersja klienta */
+ int last_sysmsg; /**< Numer ostatniej wiadomoÅci systemowej */
+
+ char *initial_descr; /**< PoczÄ
tkowy opis statusu */
+
+ void *resolver; /**< Dane prywatne procesu lub wÄ
tku rozwiÄ
zujÄ
cego nazwÄ serwera */
+
+ char *header_buf; /**< Bufor na poczÄ
tek nagÅówka pakietu */
+ unsigned int header_done; /**< Liczba wczytanych bajtów nagÅówka pakietu */
+
+#ifdef GG_CONFIG_HAVE_OPENSSL
+ SSL *ssl; /**< Struktura TLS */
+ SSL_CTX *ssl_ctx; /**< Kontekst sesji TLS */
+#else
+ void *ssl; /**< Struktura TLS */
+ void *ssl_ctx; /**< Kontekst sesji TLS */
+#endif
+
+ int image_size; /**< Maksymalny rozmiar obsÅugiwanych obrazków w KiB */
+
+ char *userlist_reply; /**< Bufor z odbieranÄ
listÄ
kontaktów */
+
+ int userlist_blocks; /**< Liczba czÄÅci listy kontaktów */
+
+ struct gg_image_queue *images; /**< Lista wczytywanych obrazków */
+
+ int hash_type; /**< Rodzaj funkcji skrótu hasÅa (\c GG_LOGIN_HASH_GG32 lub \c GG_LOGIN_HASH_SHA1) */
+
+ char *send_buf; /**< Bufor z danymi do wysÅania */
+ int send_left; /**< Liczba bajtów do wysÅania */
+
+ struct gg_dcc7 *dcc7_list; /**< Lista poÅÄ
czeÅ bezpoÅrednich skojarzonych z sesjÄ
*/
+
+ int soft_timeout; /**< Flaga mówiÄ
ca, że po przekroczeniu \c timeout należy wywoÅaÄ \c gg_watch_fd() */
+
+ int protocol_flags; /**< Flagi protokoÅu */
+
+ gg_encoding_t encoding; /**< Rodzaj kodowania znaków */
+
+ gg_resolver_t resolver_type; /**< Sposób rozwiÄ
zywania nazw serwerów */
+ int (*resolver_start)(int *fd, void **private_data, const char *hostname); /**< Funkcja rozpoczynajÄ
ca rozwiÄ
zywanie nazwy */
+ void (*resolver_cleanup)(void **private_data, int force); /**< Funkcja zwalniajÄ
ca zasoby po rozwiÄ
zaniu nazwy */
+
+ int protocol_features; /**< Opcje protokoÅu */
+};
+
+/**
+ * PoÅÄ
czenie HTTP.
+ *
+ * Tworzone przez \c gg_http_connect(), zwalniane przez \c gg_http_free().
+ *
+ * \ingroup http
+ */
+struct gg_http {
+ gg_common_head(struct gg_http)
+
+ int async; /**< Flaga poÅÄ
czenia asynchronicznego */
+ int pid; /**< Identyfikator procesu rozwiÄ
zujÄ
cego nazwÄ serwera */
+ int port; /**< Port */
+
+ char *query; /**< Zapytanie HTTP */
+ char *header; /**< Odebrany nagÅówek */
+ int header_size; /**< Rozmiar wczytanego nagÅówka */
+ char *body; /**< Odebrana strona */
+ unsigned int body_size; /**< Rozmiar strony */
+
+ void *data; /**< Dane prywatne usÅugi HTTP */
+
+ char *user_data; /**< Dane prywatne użytkownika (nie sÄ
zwalniane) */
+
+ void *resolver; /**< Dane prywatne procesu lub wÄ
tku rozwiÄ
zujÄ
cego nazwÄ */
+
+ unsigned int body_done; /**< Liczba odebranych bajtów strony */
+
+ gg_resolver_t resolver_type; /**< Sposób rozwiÄ
zywania nazw serwerów */
+ int (*resolver_start)(int *fd, void **private_data, const char *hostname); /**< Funkcja rozpoczynajÄ
ca rozwiÄ
zywanie nazwy */
+ void (*resolver_cleanup)(void **private_data, int force); /**< Funkcja zwalniajÄ
ca zasoby po rozwiÄ
zaniu nazwy */
+};
+
+/** \cond ignore */
+
+#ifdef __GNUC__
+#define GG_PACKED __attribute__ ((packed))
+#ifndef GG_IGNORE_DEPRECATED
+#define GG_DEPRECATED __attribute__ ((deprecated))
+#else
+#define GG_DEPRECATED
+#endif
+#else
+#define GG_PACKED
+#define GG_DEPRECATED
+#endif
+
+/** \endcond */
+
+#define GG_MAX_PATH 276 /**< Maksymalny rozmiar nazwy pliku w strukturze \c gg_file_info */
+
+/**
+ * Odpowiednik struktury WIN32_FIND_DATA z API WIN32.
+ *
+ * Wykorzystywana przy poÅÄ
czeniach bezpoÅrednich do wersji Gadu-Gadu 6.x.
+ */
+struct gg_file_info {
+ uint32_t mode; /**< dwFileAttributes */
+ uint32_t ctime[2]; /**< ftCreationTime */
+ uint32_t atime[2]; /**< ftLastAccessTime */
+ uint32_t mtime[2]; /**< ftLastWriteTime */
+ uint32_t size_hi; /**< nFileSizeHigh */
+ uint32_t size; /**< nFileSizeLow */
+ uint32_t reserved0; /**< dwReserved0 */
+ uint32_t reserved1; /**< dwReserved1 */
+ unsigned char filename[GG_MAX_PATH - 14]; /**< cFileName */
+ unsigned char short_filename[14]; /**< cAlternateFileName */
+} /** \cond ignore */ GG_PACKED /** \endcond */;
+
+/**
+ * PoÅÄ
czenie bezpoÅrednie do wersji Gadu-Gadu 6.x.
+ *
+ * Tworzone przez \c gg_dcc_socket_create(), \c gg_dcc_get_file(),
+ * \c gg_dcc_send_file() lub \c gg_dcc_voice_chat(), zwalniane przez
+ * \c gg_dcc_free().
+ *
+ * \ingroup dcc6
+ */
+struct gg_dcc {
+ gg_common_head(struct gg_dcc)
+
+ struct gg_event *event; /**< Zdarzenie po wywoÅaniu \c callback */
+
+ int active; /**< Flaga poÅÄ
czenia aktywnego (nieużywana) */
+ int port; /**< Port gniazda nasÅuchujÄ
cego */
+ uin_t uin; /**< WÅasny numer Gadu-Gadu */
+ uin_t peer_uin; /**< Numer Gadu-Gadu drugiej strony poÅÄ
czenia */
+ int file_fd; /**< deskryptor pliku */
+ unsigned int offset; /**< PoÅożenie w pliku */
+ unsigned int chunk_size;
+ /**< Rozmiar kawaÅka pliku */
+ unsigned int chunk_offset;
+ /**< PoÅożenie w aktualnym kawaÅku pliku */
+ struct gg_file_info file_info;
+ /**< Informacje o pliku */
+ int established; /**< Flaga ustanowienia poÅÄ
czenia */
+ char *voice_buf; /**< Bufor na pakiet poÅÄ
czenia gÅosowego */
+ int incoming; /**< Flaga poÅÄ
czenia przychodzÄ
cego */
+ char *chunk_buf; /**< Bufor na fragment danych */
+ uint32_t remote_addr; /**< Adres drugiej strony */
+ uint16_t remote_port; /**< Port drugiej strony */
+};
+
+#define GG_DCC7_HASH_LEN 20 /**< Maksymalny rozmiar skrótu pliku w poÅÄ
czeniach bezpoÅrenich */
+#define GG_DCC7_FILENAME_LEN 255 /**< Maksymalny rozmiar nazwy pliku w poÅÄ
czeniach bezpoÅrednich */
+#define GG_DCC7_INFO_LEN 64 /**< Maksymalny rozmiar informacji o poÅÄ
czeniach bezpoÅrednich */
+
+/**
+ * PoÅÄ
czenie bezpoÅrednie od wersji Gadu-Gadu 7.x.
+ *
+ * \ingroup dcc7
+ */
+struct gg_dcc7 {
+ gg_common_head(struct gg_dcc7)
+
+ gg_dcc7_id_t cid; /**< Identyfikator poÅÄ
czenia */
+
+ struct gg_event *event; /**< Struktura zdarzenia */
+
+ uin_t uin; /**< WÅasny numer Gadu-Gadu */
+ uin_t peer_uin; /**< Numer Gadu-Gadu drugiej strony poÅÄ
czenia */
+
+ int file_fd; /**< Deskryptor przesyÅanego pliku */
+ unsigned int offset; /**< Aktualne poÅożenie w przesyÅanym pliku */
+ unsigned int size; /**< Rozmiar przesyÅanego pliku */
+ unsigned char filename[GG_DCC7_FILENAME_LEN + 1];
+ /**< Nazwa przesyÅanego pliku */
+ unsigned char hash[GG_DCC7_HASH_LEN];
+ /**< Skrót SHA1 przesyÅanego pliku */
+
+ int dcc_type; /**< Rodzaj poÅÄ
czenia bezpoÅredniego */
+ int established; /**< Flaga ustanowienia poÅÄ
czenia */
+ int incoming; /**< Flaga poÅÄ
czenia przychodzÄ
cego */
+ int reverse; /**< Flaga poÅÄ
czenia zwrotnego */
+
+ uint32_t local_addr; /**< Adres lokalny */
+ uint16_t local_port; /**< Port lokalny */
+
+ uint32_t remote_addr; /**< Adres drugiej strony */
+ uint16_t remote_port; /**< Port drugiej strony */
+
+ struct gg_session *sess;
+ /**< Sesja do której przypisano poÅÄ
czenie */
+ struct gg_dcc7 *next; /**< NastÄpne poÅÄ
czenie w liÅcie */
+
+ int soft_timeout; /**< Flaga mówiÄ
ca, że po przekroczeniu \c timeout należy wywoÅaÄ \c gg_dcc7_watch_fd() */
+ int seek; /**< Flaga mówiÄ
ca, że można zmieniaÄ poÅożenie w wysyÅanym pliku */
+};
+
+/**
+ * Rodzaj sesji.
+ */
+enum gg_session_t {
+ GG_SESSION_GG = 1, /**< PoÅÄ
czenie z serwerem Gadu-Gadu */
+ GG_SESSION_HTTP, /**< PoÅÄ
czenie HTTP */
+ GG_SESSION_SEARCH, /**< Wyszukiwanie w katalogu publicznym (nieaktualne) */
+ GG_SESSION_REGISTER, /**< Rejestracja nowego konta */
+ GG_SESSION_REMIND, /**< Przypominanie hasÅa */
+ GG_SESSION_PASSWD, /**< Zmiana hasÅa */
+ GG_SESSION_CHANGE, /**< Zmiana informacji w katalogu publicznym (nieaktualne) */
+ GG_SESSION_DCC, /**< PoÅÄ
czenie bezpoÅrednie (do wersji 6.x) */
+ GG_SESSION_DCC_SOCKET, /**< Gniazdo nasÅuchujÄ
ce (do wersji 6.x) */
+ GG_SESSION_DCC_SEND, /**< WysyÅanie pliku (do wersji 6.x) */
+ GG_SESSION_DCC_GET, /**< Odbieranie pliku (do wersji 6.x) */
+ GG_SESSION_DCC_VOICE, /**< Rozmowa gÅosowa (do wersji 6.x) */
+ GG_SESSION_USERLIST_GET, /**< Import listy kontaktów z serwera (nieaktualne) */
+ GG_SESSION_USERLIST_PUT, /**< Eksport listy kontaktów do serwera (nieaktualne) */
+ GG_SESSION_UNREGISTER, /**< Usuwanie konta */
+ GG_SESSION_USERLIST_REMOVE, /**< Usuwanie listy kontaktów z serwera (nieaktualne) */
+ GG_SESSION_TOKEN, /**< Pobieranie tokenu */
+ GG_SESSION_DCC7_SOCKET, /**< Gniazdo nasÅuchujÄ
ce (od wersji 7.x) */
+ GG_SESSION_DCC7_SEND, /**< WysyÅanie pliku (od wersji 7.x) */
+ GG_SESSION_DCC7_GET, /**< Odbieranie pliku (od wersji 7.x) */
+ GG_SESSION_DCC7_VOICE, /**< Rozmowa gÅosowa (od wersji 7.x) */
+
+ GG_SESSION_USER0 = 256, /**< Rodzaj zadeklarowany dla użytkownika */
+ GG_SESSION_USER1, /**< Rodzaj zadeklarowany dla użytkownika */
+ GG_SESSION_USER2, /**< Rodzaj zadeklarowany dla użytkownika */
+ GG_SESSION_USER3, /**< Rodzaj zadeklarowany dla użytkownika */
+ GG_SESSION_USER4, /**< Rodzaj zadeklarowany dla użytkownika */
+ GG_SESSION_USER5, /**< Rodzaj zadeklarowany dla użytkownika */
+ GG_SESSION_USER6, /**< Rodzaj zadeklarowany dla użytkownika */
+ GG_SESSION_USER7 /**< Rodzaj zadeklarowany dla użytkownika */
+};
+
+/**
+ * Aktualny stan sesji.
+ */
+enum gg_state_t {
+ /* wspólne */
+ GG_STATE_IDLE = 0, /**< Nie dzieje siÄ nic */
+ GG_STATE_RESOLVING, /**< Oczekiwanie na rozwiÄ
zanie nazwy serwera */
+ GG_STATE_CONNECTING, /**< Oczekiwanie na poÅÄ
czenie */
+ GG_STATE_READING_DATA, /**< Oczekiwanie na dane */
+ GG_STATE_ERROR, /**< Kod bÅÄdu w polu \c error */
+
+ /* gg_session */
+ GG_STATE_CONNECTING_HUB, /**< Oczekiwanie na poÅÄ
czenie z hubem */
+ GG_STATE_CONNECTING_GG, /**< Oczekiwanie na poÅÄ
czenie z serwerem */
+ GG_STATE_READING_KEY, /**< Oczekiwanie na klucz */
+ GG_STATE_READING_REPLY, /**< Oczekiwanie na odpowiedź serwera */
+ GG_STATE_CONNECTED, /**< PoÅÄ
czono z serwerem */
+
+ /* gg_http */
+ GG_STATE_SENDING_QUERY, /**< WysÅano zapytanie HTTP */
+ GG_STATE_READING_HEADER, /**< Oczekiwanie na nagÅówek HTTP */
+ GG_STATE_PARSING, /**< Przetwarzanie danych */
+ GG_STATE_DONE, /**< PoÅÄ
czenie zakoÅczone */
+
+ /* gg_dcc */
+ GG_STATE_LISTENING, /* czeka na poÅÄ
czenia */
+ GG_STATE_READING_UIN_1, /* czeka na uin peera */
+ GG_STATE_READING_UIN_2, /* czeka na swój uin */
+ GG_STATE_SENDING_ACK, /* wysyÅa potwierdzenie dcc */
+ GG_STATE_READING_ACK, /* czeka na potwierdzenie dcc */
+ GG_STATE_READING_REQUEST, /* czeka na komendÄ */
+ GG_STATE_SENDING_REQUEST, /* wysyÅa komendÄ */
+ GG_STATE_SENDING_FILE_INFO, /* wysyÅa informacje o pliku */
+ GG_STATE_READING_PRE_FILE_INFO, /* czeka na pakiet przed file_info */
+ GG_STATE_READING_FILE_INFO, /* czeka na informacje o pliku */
+ GG_STATE_SENDING_FILE_ACK, /* wysyÅa potwierdzenie pliku */
+ GG_STATE_READING_FILE_ACK, /* czeka na potwierdzenie pliku */
+ GG_STATE_SENDING_FILE_HEADER, /* wysyÅa nagÅówek pliku */
+ GG_STATE_READING_FILE_HEADER, /* czeka na nagÅówek */
+ GG_STATE_GETTING_FILE, /* odbiera plik */
+ GG_STATE_SENDING_FILE, /* wysyÅa plik */
+ GG_STATE_READING_VOICE_ACK, /* czeka na potwierdzenie voip */
+ GG_STATE_READING_VOICE_HEADER, /* czeka na rodzaj bloku voip */
+ GG_STATE_READING_VOICE_SIZE, /* czeka na rozmiar bloku voip */
+ GG_STATE_READING_VOICE_DATA, /* czeka na dane voip */
+ GG_STATE_SENDING_VOICE_ACK, /* wysyÅa potwierdzenie voip */
+ GG_STATE_SENDING_VOICE_REQUEST, /* wysyÅa żÄ
danie voip */
+ GG_STATE_READING_TYPE, /* czeka na typ poÅÄ
czenia */
+
+ /* nowe. bez sensu jest to API. */
+ GG_STATE_TLS_NEGOTIATION, /**< Negocjacja poÅÄ
czenia szyfrowanego */
+
+ GG_STATE_REQUESTING_ID, /**< Oczekiwanie na nadanie identyfikatora poÅÄ
czenia bezpoÅredniego */
+ GG_STATE_WAITING_FOR_ACCEPT, /**< Oczekiwanie na potwierdzenie lub odrzucenie poÅÄ
czenia bezpoÅredniego */
+ GG_STATE_WAITING_FOR_INFO, /**< Oczekiwanie na informacje o poÅÄ
czeniu bezpoÅrednim */
+
+ GG_STATE_READING_ID, /**< Odebranie identyfikatora poÅÄ
czenia bezpoÅredniego */
+ GG_STATE_SENDING_ID /**< WysÅano identyfikatora poÅÄ
czenia bezpoÅredniego */
+};
+
+/**
+ * Informacja o tym, czy biblioteka chce zapisywaÄ i/lub czytaÄ
+ * z deskryptora. Maska bitowa.
+ *
+ * \ingroup events
+ */
+enum gg_check_t {
+ GG_CHECK_NONE = 0, /**< Nie sprawdzaj niczego */
+ GG_CHECK_WRITE = 1, /**< Sprawdź możliwoÅÄ zapisu */
+ GG_CHECK_READ = 2 /**< Sprawdź możliwoÅÄ odczytu */
+};
+
+/**
+ * Parametry poÅÄ
czenia z serwerem Gadu-Gadu. Parametry zostaÅy przeniesione
+ * do struktury, by uniknÄ
Ä zmian API po rozszerzeniu protokoÅu i dodaniu
+ * kolejnych opcji poÅÄ
czenia. CzÄÅÄ parametrów, które nie sÄ
już aktualne
+ * lub nie majÄ
znaczenia, zostaÅa usuniÄta z dokumentacji.
+ *
+ * \ingroup login
+ */
+struct gg_login_params {
+ uin_t uin; /**< Numer Gadu-Gadu */
+ char *password; /**< HasÅo */
+ int async; /**< Flaga asynchronicznego poÅÄ
czenia (domyÅlnie nie) */
+ int status; /**< PoczÄ
tkowy status użytkownika (domyÅlnie \c GG_STATUS_AVAIL) */
+ char *status_descr; /**< PoczÄ
tkowy opis użytkownika (domyÅlnie brak) */
+ uint32_t server_addr; /**< Adres serwera Gadu-Gadu (domyÅlnie pobierany automatycznie) */
+ uint16_t server_port; /**< Port serwera Gadu-Gadu (domyÅlnie pobierany automatycznie) */
+#ifndef DOXYGEN
+ uint32_t client_addr; /**< Adres poÅÄ
czeÅ bezpoÅrednich (nieaktualne) */
+ uint16_t client_port; /**< Port poÅÄ
czeÅ bezpoÅrednich (nieaktualne) */
+#endif
+ int protocol_version; /**< Wersja protokoÅu wysyÅana do serwera (domyÅlnie najnowsza obsÅugiwana) */
+ char *client_version; /**< Wersja klienta wysyÅana do serwera (domyÅlnie najnowsza znana) */
+ int has_audio; /**< Flaga obsÅugi poÅÄ
czeÅ gÅosowych */
+ int last_sysmsg; /**< Numer ostatnio odebranej wiadomoÅci systemowej */
+ uint32_t external_addr; /**< Adres publiczny dla poÅÄ
czeÅ bezpoÅrednich (6.x) */
+ uint16_t external_port; /**< Port publiczny dla poÅÄ
czeÅ bezpoÅrednich (6.x) */
+#ifndef DOXYGEN
+ int tls; /**< Flaga poÅÄ
czenia szyfrowanego (nieaktualna) */
+#endif
+ int image_size; /**< Maksymalny rozmiar obsÅugiwanych obrazków w kilobajtach */
+#ifndef DOXYGEN
+ int era_omnix; /**< Flaga udawania klienta Era Omnix (nieaktualna) */
+#endif
+ int hash_type; /**< Rodzaj skrótu hasÅa (\c GG_LOGIN_HASH_GG32 lub \c GG_LOGIN_HASH_SHA1, domyÅlnie SHA1) */
+ gg_encoding_t encoding; /**< Rodzaj kodowania używanego w sesji (domyÅlnie CP1250) */
+ gg_resolver_t resolver; /**< Sposób rozwiÄ
zywania nazw (patrz \ref build-resolver) */
+ int protocol_features; /**< Opcje protokoÅu (flagi GG_FEATURE_*). */
+
+#ifndef DOXYGEN
+ char dummy[2 * sizeof(int)]; /**< \internal Miejsce na kilka kolejnych
+ parametrów, żeby wraz z dodawaniem kolejnych
+ parametrów nie zmieniaÅ siÄ rozmiar struktury */
+#endif
+
+};
+
+struct gg_session *gg_login(const struct gg_login_params *p);
+void gg_free_session(struct gg_session *sess);
+void gg_logoff(struct gg_session *sess);
+int gg_change_status(struct gg_session *sess, int status);
+int gg_change_status_descr(struct gg_session *sess, int status, const char *descr);
+int gg_change_status_descr_time(struct gg_session *sess, int status, const char *descr, int time);
+int gg_send_message(struct gg_session *sess, int msgclass, uin_t recipient, const unsigned char *message);
+int gg_send_message_richtext(struct gg_session *sess, int msgclass, uin_t recipient, const unsigned char *message, const unsigned char *format, int formatlen);
+int gg_send_message_confer(struct gg_session *sess, int msgclass, int recipients_count, uin_t *recipients, const unsigned char *message);
+int gg_send_message_confer_richtext(struct gg_session *sess, int msgclass, int recipients_count, uin_t *recipients, const unsigned char *message, const unsigned char *format, int formatlen);
+int gg_send_message_ctcp(struct gg_session *sess, int msgclass, uin_t recipient, const unsigned char *message, int message_len);
+int gg_ping(struct gg_session *sess);
+int gg_userlist_request(struct gg_session *sess, char type, const char *request);
+int gg_image_request(struct gg_session *sess, uin_t recipient, int size, uint32_t crc32);
+int gg_image_reply(struct gg_session *sess, uin_t recipient, const char *filename, const char *image, int size);
+
+uint32_t gg_crc32(uint32_t crc, const unsigned char *buf, int len);
+
+int gg_session_set_resolver(struct gg_session *gs, gg_resolver_t type);
+gg_resolver_t gg_session_get_resolver(struct gg_session *gs);
+int gg_session_set_custom_resolver(struct gg_session *gs, int (*resolver_start)(int*, void**, const char*), void (*resolver_cleanup)(void**, int));
+
+int gg_http_set_resolver(struct gg_http *gh, gg_resolver_t type);
+gg_resolver_t gg_http_get_resolver(struct gg_http *gh);
+int gg_http_set_custom_resolver(struct gg_http *gh, int (*resolver_start)(int*, void**, const char*), void (*resolver_cleanup)(void**, int));
+
+int gg_global_set_resolver(gg_resolver_t type);
+gg_resolver_t gg_global_get_resolver(void);
+int gg_global_set_custom_resolver(int (*resolver_start)(int*, void**, const char*), void (*resolver_cleanup)(void**, int));
+
+/**
+ * Rodzaj zdarzenia.
+ *
+ * \ingroup events
+ */
+enum gg_event_t {
+ GG_EVENT_NONE = 0, /**< Nie wydarzyÅo siÄ nic wartego uwagi */
+ GG_EVENT_MSG, /**< \brief Otrzymano wiadomoÅÄ. Przekazuje również wiadomoÅci systemowe od numeru 0. */
+ GG_EVENT_NOTIFY, /**< \brief Informacja o statusach osób z listy kontaktów (przed 6.0). Zdarzenie należy obsÅugiwaÄ, jeÅli planuje siÄ używaÄ protokoÅu w wersji starszej niż domyÅlna. */
+ GG_EVENT_NOTIFY_DESCR, /**< \brief Informacja o statusie opisowym osoby z listy kontaktów (przed 6.0). Zdarzenie należy obsÅugiwaÄ, jeÅli planuje siÄ używaÄ protokoÅu w wersji starszej niż domyÅlna. */
+ GG_EVENT_STATUS, /**< \brief Zmiana statusu osoby z listy kontaktów (przed 6.0). Zdarzenie należy obsÅugiwaÄ, jeÅli planuje siÄ używaÄ protokoÅu w wersji starszej niż domyÅlna. */
+ GG_EVENT_ACK, /**< Potwierdzenie dorÄczenia wiadomoÅci */
+ GG_EVENT_PONG, /**< \brief Utrzymanie poÅÄ
czenia. Obecnie serwer nie wysyÅa już do klienta ramek utrzymania poÅÄ
czenia, polega wyÅÄ
cznie na wysyÅaniu ramek przez klienta. */
+ GG_EVENT_CONN_FAILED, /**< \brief Nie udaÅo siÄ poÅÄ
czyÄ */
+ GG_EVENT_CONN_SUCCESS, /**< \brief PoÅÄ
czono z serwerem. PierwszÄ
rzeczÄ
, jakÄ
należy zrobiÄ jest wysÅanie listy kontaktów. */
+ GG_EVENT_DISCONNECT, /**< \brief Serwer zrywa poÅÄ
czenie. Zdarza siÄ, gdy równolegle do serwera podÅÄ
czy siÄ druga sesja i trzeba zerwaÄ poÅÄ
czenie z pierwszÄ
. */
+
+ GG_EVENT_DCC_NEW, /**< Nowe poÅÄ
czenie bezpoÅrednie (6.x) */
+ GG_EVENT_DCC_ERROR, /**< BÅÄ
d poÅÄ
czenia bezpoÅredniego (6.x) */
+ GG_EVENT_DCC_DONE, /**< ZakoÅczono poÅÄ
czenie bezpoÅrednie (6.x) */
+ GG_EVENT_DCC_CLIENT_ACCEPT, /**< Moment akceptacji klienta w poÅÄ
czeniu bezpoÅrednim (6.x) */
+ GG_EVENT_DCC_CALLBACK, /**< Zwrotne poÅÄ
czenie bezpoÅrednie (6.x) */
+ GG_EVENT_DCC_NEED_FILE_INFO, /**< Należy wypeÅniÄ \c file_info dla poÅÄ
czenia bezpoÅredniego (6.x) */
+ GG_EVENT_DCC_NEED_FILE_ACK, /**< Czeka na potwierdzenie pliku w poÅÄ
czeniu bezpoÅrednim (6.x) */
+ GG_EVENT_DCC_NEED_VOICE_ACK, /**< Czeka na potwierdzenie rozmowy w poÅÄ
czeniu bezpoÅrednim (6.x) */
+ GG_EVENT_DCC_VOICE_DATA, /**< Dane bezpoÅredniego poÅÄ
czenia gÅosowego (6.x) */
+
+ GG_EVENT_PUBDIR50_SEARCH_REPLY, /**< Odpowiedź katalogu publicznego */
+ GG_EVENT_PUBDIR50_READ, /**< Odczytano wÅasne dane z katalogu publicznego */
+ GG_EVENT_PUBDIR50_WRITE, /**< Zmieniono wÅasne dane w katalogu publicznym */
+
+ GG_EVENT_STATUS60, /**< Zmiana statusu osoby z listy kontaktów */
+ GG_EVENT_NOTIFY60, /**< Informacja o statusach osób z listy kontaktów */
+ GG_EVENT_USERLIST, /**< Wynik importu lub eksportu listy kontaktów */
+ GG_EVENT_IMAGE_REQUEST, /**< Å»Ä
danie przesÅania obrazka z wiadommoÅci */
+ GG_EVENT_IMAGE_REPLY, /**< PrzysÅano obrazek z wiadomoÅci */
+ GG_EVENT_DCC_ACK, /**< Potwierdzenie transmisji w poÅÄ
czeniu bezpoÅrednim (6.x) */
+
+ GG_EVENT_DCC7_NEW, /**< Nowe poÅÄ
czenie bezpoÅrednie (7.x) */
+ GG_EVENT_DCC7_ACCEPT, /**< Zaakceptowano poÅÄ
czenie bezpoÅrednie (7.x), nowy deskryptor */
+ GG_EVENT_DCC7_REJECT, /**< Odrzucono poÅÄ
czenie bezpoÅrednie (7.x) */
+ GG_EVENT_DCC7_CONNECTED, /**< Zestawiono poÅÄ
czenie bezpoÅrednie (7.x), nowy deskryptor */
+ GG_EVENT_DCC7_ERROR, /**< BÅÄ
d poÅÄ
czenia bezpoÅredniego (7.x) */
+ GG_EVENT_DCC7_DONE, /**< ZakoÅczono poÅÄ
czenie bezpoÅrednie (7.x) */
+ GG_EVENT_DCC7_PENDING, /**< Trwa próba poÅÄ
czenia bezpoÅredniego (7.x), nowy deskryptor */
+
+ GG_EVENT_XML_EVENT, /**< Otrzymano komunikat systemowy (7.7) */
+ GG_EVENT_DISCONNECT_ACK, /**< \brief Potwierdzenie zakoÅczenia sesji. Informuje o tym, że zmiana stanu na niedostÄpny z opisem dotarÅa do serwera i można zakoÅczyÄ poÅÄ
czenie TCP. */
+};
+
+#define GG_EVENT_SEARCH50_REPLY GG_EVENT_PUBDIR50_SEARCH_REPLY
+
+/**
+ * Powód nieudanego poÅÄ
czenia.
+ */
+enum gg_failure_t {
+ GG_FAILURE_RESOLVING = 1, /**< Nie znaleziono serwera */
+ GG_FAILURE_CONNECTING, /**< BÅÄ
d poÅÄ
czenia */
+ GG_FAILURE_INVALID, /**< Serwer zwróciÅ nieprawidÅowe dane */
+ GG_FAILURE_READING, /**< Zerwano poÅÄ
czenie podczas odczytu */
+ GG_FAILURE_WRITING, /**< Zerwano poÅÄ
czenie podczas zapisu */
+ GG_FAILURE_PASSWORD, /**< NieprawidÅowe hasÅo */
+ GG_FAILURE_404, /**< Nieużywane */
+ GG_FAILURE_TLS, /**< BÅÄ
d negocjacji szyfrowanego poÅÄ
czenia */
+ GG_FAILURE_NEED_EMAIL, /**< Serwer rozÅÄ
czyÅ nas z proÅbÄ
o zmianÄ adresu e-mail */
+ GG_FAILURE_INTRUDER, /**< Zbyt wiele prób poÅÄ
czenia z nieprawidÅowym hasÅem */
+ GG_FAILURE_UNAVAILABLE /**< Serwery sÄ
wyÅÄ
czone */
+};
+
More information about the commits
mailing list