# include <winsock2.h>
#endif
-#include "Ecore.h"
-#include "ecore_private.h"
-#include "Ecore_Con.h"
-#include "ecore_ipc_private.h"
+#if USE_GNUTLS_OPENSSL
+# include <gnutls/openssl.h>
+#elif USE_OPENSSL
+# include <openssl/ssl.h>
+#endif
+
+#include <Ecore.h>
+#include <ecore_private.h>
+#include <Ecore_Con.h>
+
#include "Ecore_Ipc.h"
+#include "ecore_ipc_private.h"
#define DLT_ZERO 0
#define DLT_ONE 1
int _ecore_ipc_log_dom = -1;
-/* byte swappers - for dealing with big vs little endian machines */
EAPI unsigned short
_ecore_ipc_swap_16(unsigned short v)
{
if (--_ecore_ipc_init_count != 0)
return _ecore_ipc_init_count;
- while (servers) ecore_ipc_server_del(eina_list_data_get(servers));
+ Eina_List *l, *l2;
+ Ecore_Ipc_Server *svr;
+ EINA_LIST_FOREACH_SAFE(servers, l, l2, svr)
+ ecore_ipc_server_del(svr);
for (i = 0; i < 6; i++)
ecore_event_handler_del(handler[i]);
/**
* Retrieves whether the given IPC server is currently connected.
* @param svr The given IPC server.
- * @return #EINA_TRUE if the server is connected. #EINA_FALSE otherwise.
+ * @return @c EINA_TRUE if the server is connected, @c EINA_FALSE otherwise.
* @ingroup Ecore_IPC_Server_Group
*/
EAPI Eina_Bool
"ecore_ipc_client_server_get");
return NULL;
}
- if (!ecore_con_client_server_get(cl->client)) return NULL;
- return ecore_con_server_data_get(ecore_con_client_server_get(cl->client));
+ return (ecore_con_server_data_get(ecore_con_client_server_get(cl->client)));
}
/**
cl->delete_me = 1;
if (cl->event_count == 0)
{
- Ecore_Con_Server *s;
-
- ecore_con_client_del(cl->client);
- s = ecore_con_client_server_get(cl->client);
- if (s)
- {
- svr = ecore_con_server_data_get(s);
- svr->clients = eina_list_remove(svr->clients, cl);
- }
+ svr = ecore_con_server_data_get(ecore_con_client_server_get(cl->client));
+ ecore_con_client_unref(cl->client);
+ svr->clients = eina_list_remove(svr->clients, cl);
if (cl->buf) free(cl->buf);
ECORE_MAGIC_SET(cl, ECORE_MAGIC_NONE);
free(cl);
/**
* Sets the max data payload size for an Ipc message in bytes
*
- * @param client The given client.
+ * @param cl The given client.
* @param size The maximum data payload size in bytes.
* @ingroup Ecore_Ipc_Client_Group
*/
}
/**
- * Sets the max data payload size for an Ipc message in bytes
+ * Gets the max data payload size for an Ipc message in bytes
*
* @param cl The given client.
- * @param size The maximum data payload size in bytes.
+ * @return The maximum data payload size in bytes on success, @c -1 on failure.
* @ingroup Ecore_Ipc_Client_Group
*/
EAPI int
* @return A pointer to an internal string that contains the IP address of
* the connected server in the form "XXX.YYY.ZZZ.AAA" IP notation.
* This string should not be modified or trusted to stay valid after
- * deletion for the @p cl object. If no IP is known NULL is returned.
+ * deletion for the @p cl object. If no IP is known @c NULL is
+ * returned.
* @ingroup Ecore_Ipc_Client_Group
*/
EAPI const char *
_ecore_ipc_event_client_add(void *data __UNUSED__, int ev_type __UNUSED__, void *ev)
{
Ecore_Con_Event_Client_Add *e;
- Ecore_Con_Server *s;
- Ecore_Ipc_Server *svr;
e = ev;
- s = ecore_con_client_server_get(e->client);
- if (!s) return ECORE_CALLBACK_RENEW;
- svr = ecore_con_server_data_get(s);
- if (!svr) return ECORE_CALLBACK_RENEW;
- if (!eina_list_data_find(servers, svr)) return ECORE_CALLBACK_RENEW;
+ if (!eina_list_data_find(servers, ecore_con_server_data_get(ecore_con_client_server_get(e->client)))) return ECORE_CALLBACK_RENEW;
/* handling code here */
{
Ecore_Ipc_Client *cl;
+ Ecore_Ipc_Server *svr;
cl = calloc(1, sizeof(Ecore_Ipc_Client));
if (!cl) return ECORE_CALLBACK_CANCEL;
+ svr = ecore_con_server_data_get(ecore_con_client_server_get(e->client));
ECORE_MAGIC_SET(cl, ECORE_MAGIC_IPC_CLIENT);
cl->client = e->client;
+ ecore_con_client_ref(cl->client);
cl->max_buf_size = 32 * 1024;
ecore_con_client_data_set(cl->client, (void *)cl);
svr->clients = eina_list_append(svr->clients, cl);
_ecore_ipc_event_client_del(void *data __UNUSED__, int ev_type __UNUSED__, void *ev)
{
Ecore_Con_Event_Client_Del *e;
- Ecore_Con_Server *s;
- Ecore_Ipc_Server *svr;
e = ev;
- s = ecore_con_client_server_get(e->client);
- if (!s) return ECORE_CALLBACK_RENEW;
- svr = ecore_con_server_data_get(s);
- if (!svr) return ECORE_CALLBACK_RENEW;
- if (!eina_list_data_find(servers, svr)) return ECORE_CALLBACK_RENEW;
+ if (!eina_list_data_find(servers, ecore_con_server_data_get(ecore_con_client_server_get(e->client)))) return ECORE_CALLBACK_RENEW;
/* handling code here */
{
Ecore_Ipc_Client *cl;
cl = ecore_con_client_data_get(e->client);
{
Ecore_Ipc_Event_Client_Del *e2;
+ Ecore_Ipc_Server *svr;
+ svr = ecore_con_server_data_get(ecore_con_client_server_get(e->client));
svr->client_list = eina_list_remove(svr->client_list, cl);
if (!cl->delete_me)
{
_ecore_ipc_event_server_add(void *data __UNUSED__, int ev_type __UNUSED__, void *ev)
{
Ecore_Con_Event_Server_Add *e;
- Ecore_Ipc_Server *svr;
e = ev;
- svr = ecore_con_server_data_get(e->server);
- if (!eina_list_data_find(servers, svr)) return ECORE_CALLBACK_RENEW;
+ if (!eina_list_data_find(servers, ecore_con_server_data_get(e->server))) return ECORE_CALLBACK_RENEW;
/* handling code here */
- if (!svr->delete_me)
{
- Ecore_Ipc_Event_Server_Add *e2;
+ Ecore_Ipc_Server *svr;
- e2 = calloc(1, sizeof(Ecore_Ipc_Event_Server_Add));
- if (e2)
+ svr = ecore_con_server_data_get(e->server);
+ if (!svr->delete_me)
{
- svr->event_count++;
- e2->server = svr;
- ecore_event_add(ECORE_IPC_EVENT_SERVER_ADD, e2,
- _ecore_ipc_event_server_add_free, NULL);
+ Ecore_Ipc_Event_Server_Add *e2;
+
+ e2 = calloc(1, sizeof(Ecore_Ipc_Event_Server_Add));
+ if (e2)
+ {
+ svr->event_count++;
+ e2->server = svr;
+ ecore_event_add(ECORE_IPC_EVENT_SERVER_ADD, e2,
+ _ecore_ipc_event_server_add_free, NULL);
+ }
}
}
return ECORE_CALLBACK_CANCEL;
_ecore_ipc_event_server_del(void *data __UNUSED__, int ev_type __UNUSED__, void *ev)
{
Ecore_Con_Event_Server_Del *e;
- Ecore_Ipc_Server *svr;
e = ev;
- svr = ecore_con_server_data_get(e->server);
- if (!eina_list_data_find(servers, svr)) return ECORE_CALLBACK_RENEW;
+ if (!eina_list_data_find(servers, ecore_con_server_data_get(e->server))) return ECORE_CALLBACK_RENEW;
/* handling code here */
- if (!svr->delete_me)
{
- Ecore_Ipc_Event_Server_Del *e2;
+ Ecore_Ipc_Server *svr;
- e2 = calloc(1, sizeof(Ecore_Ipc_Event_Server_Del));
- if (e2)
+ svr = ecore_con_server_data_get(e->server);
+ if (!svr->delete_me)
{
- svr->event_count++;
- e2->server = svr;
- ecore_event_add(ECORE_IPC_EVENT_SERVER_DEL, e2,
- _ecore_ipc_event_server_del_free, NULL);
+ Ecore_Ipc_Event_Server_Del *e2;
+
+ e2 = calloc(1, sizeof(Ecore_Ipc_Event_Server_Del));
+ if (e2)
+ {
+ svr->event_count++;
+ e2->server = svr;
+ ecore_event_add(ECORE_IPC_EVENT_SERVER_DEL, e2,
+ _ecore_ipc_event_server_del_free, NULL);
+ }
}
}
return ECORE_CALLBACK_CANCEL;
_ecore_ipc_event_client_data(void *data __UNUSED__, int ev_type __UNUSED__, void *ev)
{
Ecore_Con_Event_Client_Data *e;
- Ecore_Con_Server *svr;
- Ecore_Ipc_Client *cl;
e = ev;
- svr = ecore_con_client_server_get(e->client);
- cl = ecore_con_server_data_get(svr);
- if (!eina_list_data_find(servers, cl)) return ECORE_CALLBACK_RENEW;
+ if (!eina_list_data_find(servers, ecore_con_server_data_get(ecore_con_client_server_get(e->client)))) return ECORE_CALLBACK_RENEW;
/* handling code here */
{
+ Ecore_Ipc_Client *cl;
Ecore_Ipc_Msg_Head msg;
int offset = 0;
unsigned char *buf;
+ cl = ecore_con_client_data_get(e->client);
if (!cl->buf)
{
{
Ecore_Ipc_Event_Client_Data *e2;
Ecore_Ipc_Server *svr;
- Ecore_Con_Server *sv;
int max, max2;
buf = NULL;
- sv = ecore_con_client_server_get(cl->client);
- if (!sv) return ECORE_CALLBACK_CANCEL;
- svr = ecore_con_server_data_get(sv);
+ svr = ecore_con_server_data_get(ecore_con_client_server_get(cl->client));
max = svr->max_buf_size;
max2 = cl->max_buf_size;
if ((max >= 0) && (max2 >= 0))
_ecore_ipc_event_server_data(void *data __UNUSED__, int ev_type __UNUSED__, void *ev)
{
Ecore_Con_Event_Server_Data *e;
- Ecore_Ipc_Server *svr;
e = ev;
- svr = ecore_con_server_data_get(e->server);
- if (!eina_list_data_find(servers, svr)) return ECORE_CALLBACK_RENEW;
+ if (!eina_list_data_find(servers, ecore_con_server_data_get(e->server))) return ECORE_CALLBACK_RENEW;
/* handling code here */
{
+ Ecore_Ipc_Server *svr;
Ecore_Ipc_Msg_Head msg;
int offset = 0;
unsigned char *buf;
+ svr = ecore_con_server_data_get(e->server);
+
if (!svr->buf)
{
svr->buf_size = e->size;