summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnton <anton@picapica>2016-09-25 00:59:40 +0400
committerAnton <anton@picapica>2016-09-25 00:59:40 +0400
commit076f242539c57cc4f3ccec388c0f09403aa43227 (patch)
tree2466f56e79101553c07fc59140f2f172c66c1d0b
parent7a394a9baf4863ab2c5b8f60eefb98688ee96a7c (diff)
downloadpica-pica-076f242539c57cc4f3ccec388c0f09403aa43227.tar.gz
pica-pica-076f242539c57cc4f3ccec388c0f09403aa43227.zip
direct c2c packet handlers
-rw-r--r--PICA_client.c32
1 files changed, 30 insertions, 2 deletions
diff --git a/PICA_client.c b/PICA_client.c
index 1f026a7..63ed3eb 100644
--- a/PICA_client.c
+++ b/PICA_client.c
@@ -47,7 +47,10 @@ static unsigned int procmsg_DENIEDFILE(unsigned char*, unsigned int, void*);
static unsigned int procmsg_FILEFRAGMENT(unsigned char*, unsigned int, void*);
static unsigned int procmsg_FILECONTROL(unsigned char*, unsigned int, void*);
static unsigned int procmsg_INITRESP_c2c(unsigned char*, unsigned int, void*);
-static unsigned int procmsg_C2CCONNREQ(unsigned char* buf, unsigned int nb, void* p);
+static unsigned int procmsg_C2CCONNREQ(unsigned char*, unsigned int, void*);
+static unsigned int procmsg_PICA_PROTO_C2CDIRECT_ADDRLIST(unsigned char*, unsigned int, void*);
+static unsigned int procmsg_PICA_PROTO_C2CDIRECT_FAILED(unsigned char*, unsigned int, void*);
+
static struct PICA_proto_msg* c2n_writebuf_push(struct PICA_c2n *ci, unsigned int msgid, unsigned int size);
static struct PICA_proto_msg* c2c_writebuf_push(struct PICA_c2c *chn, unsigned int msgid, unsigned int size);
@@ -79,7 +82,9 @@ const struct PICA_msginfo c2c_messages[] =
{PICA_PROTO_ACCEPTEDFILE, PICA_MSG_FIXED_SIZE, PICA_PROTO_ACCEPTEDFILE_SIZE, procmsg_ACCEPTEDFILE},
{PICA_PROTO_DENIEDFILE, PICA_MSG_FIXED_SIZE, PICA_PROTO_DENIEDFILE_SIZE, procmsg_DENIEDFILE},
{PICA_PROTO_FILEFRAGMENT, PICA_MSG_VAR_SIZE, PICA_MSG_VARSIZE_INT16, procmsg_FILEFRAGMENT},
- {PICA_PROTO_FILECONTROL, PICA_MSG_FIXED_SIZE, PICA_PROTO_FILECONTROL_SIZE, procmsg_FILECONTROL}
+ {PICA_PROTO_FILECONTROL, PICA_MSG_FIXED_SIZE, PICA_PROTO_FILECONTROL_SIZE, procmsg_FILECONTROL},
+ {PICA_PROTO_C2CDIRECT_ADDRLIST, PICA_MSG_VAR_SIZE, PICA_MSG_VARSIZE_INT16, procmsg_PICA_PROTO_C2CDIRECT_ADDRLIST},
+ {PICA_PROTO_C2CDIRECT_FAILED, PICA_MSG_FIXED_SIZE, PICA_PROTO_C2CDIRECT_FAILED_SIZE, procmsg_PICA_PROTO_C2CDIRECT_FAILED}
};
struct PICA_msginfo c2n_init_messages[] =
@@ -510,6 +515,16 @@ static unsigned int procmsg_INITRESP_c2c(unsigned char* buf, unsigned int nb, vo
return 1;
}
+static unsigned int procmsg_PICA_PROTO_C2CDIRECT_ADDRLIST(unsigned char* buf, unsigned int nb, void* p)
+{
+ --
+}
+
+static unsigned int procmsg_PICA_PROTO_C2CDIRECT_FAILED(unsigned char* buf, unsigned int nb, void* p)
+{
+ --
+}
+
static unsigned int procmsg_INITRESP(unsigned char* buf, unsigned int nb, void* p)
{
struct PICA_c2n *ci = (struct PICA_c2n *)p;
@@ -1865,6 +1880,19 @@ static int process_c2c(struct PICA_c2c *c2c, fd_set *rfds, fd_set *wfds)
static int process_listener(struct PICA_listener *lst, fd_set *rfds)
{
+ if (FD_ISSET(lst->sck_listener, rfds))
+ {
+ SOCKET s;
+ struct sockaddr_in addr;
+ int addrsize = sizeof(struct sockaddr_in);
+
+ s = accept(lst->sck_listener, (struct sockaddr*)&addr, &addrsize);
+
+ if (s >= 0)
+ {
+
+ }
+ }
return PICA_OK;
}