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