e638fd4aa2
FossilOrigin-Name: 2a80ff74e83e1f6e99aba589ec8cec08d640199362326c61959aff81e93c5e0c
41 lines
720 B
C
41 lines
720 B
C
|
|
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <errno.h>
|
|
|
|
#include "conn.h"
|
|
#include "cwrmsg.h"
|
|
|
|
|
|
|
|
static int pmessage(void *w, struct cwrmsg * cwrmsg)
|
|
{
|
|
uint8_t * buffer;
|
|
buffer = malloc( sizeof (struct cwrmsg) + cwrmsg->msgelems_len);
|
|
|
|
memcpy(buffer,cwrmsg,sizeof(struct cwrmsg));
|
|
memcpy(buffer+sizeof(struct cwrmsg),cwrmsg->msgelems,cwrmsg->msgelems_len);
|
|
((struct cwrmsg*)(buffer))->msgelems=buffer+sizeof(struct cwrmsg);
|
|
*((void**)w) = (void*)buffer;
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
|
|
struct cwrmsg * conn_get_message(struct conn * conn)
|
|
{
|
|
struct cwrmsg * cwrmsg=0;
|
|
|
|
uint8_t buf[2048];
|
|
int len=2048;
|
|
|
|
int n = conn->read(conn,buf,len);
|
|
if (n>0)
|
|
conn_process_packet(conn,buf,n,pmessage,&cwrmsg);
|
|
|
|
return cwrmsg;
|
|
}
|
|
|