Setting up a TCP connection:
struct uvClientData
{
bool assoc;
uint fnpno;
uint lineno;
/* telnet_t */ void * telnetp;
// Work buffet for processLineInput
char buffer [1024];
size_t nPos;
};
typedef struct uvClientData uvClientData;
linep->client = (uv_tcp_t *) malloc (sizeof (uv_tcp_t));
uv_tcp_init (loop, linep->client);
uvClientData * p = (uvClientData *) malloc (sizeof (uvClientData));
p->fnpno = fnpno;
p->lineno = lineno;
linep->client->data = p;
uv_tcp_connect (& linep->doConnect, linep->client, (const struct
sockaddr *) & dest, on_do_connect);
static void on_do_connect (uv_connect_t * server, int status)
{
uvClientData * p = (uvClientData *) server->handle->data;
struct t_line * linep = & fnpUnitData[p->fnpno].MState.line[p->lineno];
....
}
I managed to invoke a connection failure, leading to an application
crash....
(gdb) where
#0 on_do_connect (server=0x182f7e8 <fnpUnitData+412168>, status=-125)
at fnpuv.c:755
#1 0x00007f616eb77e1c in uv.stream_destroy () from /lib64/libuv.so.1
#2 0x00007f616eb6e3e6 in uv_run () from /lib64/libuv.so.1
(gdb) p status
$10 = -125
'status' shows the connection failure.
(gdb) p server->handle->data
$9 = (void *) 0x0
However, it appears that the 'data' field is NULL, which means that my
callback handler has no way to find the data it needs to handle the failure.
I am unsure if this is a bug in my code, or if stream_destroy is failing
to pass the callback the data it needs.
--
You received this message because you are subscribed to the Google Groups
"libuv" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/libuv.
For more options, visit https://groups.google.com/d/optout.