44 lines
885 B
C
44 lines
885 B
C
#include "udp-test.h"
|
|
|
|
static int read_cb(struct osmo_dgram *conn)
|
|
{
|
|
struct msgb *msg = print_recv(conn);
|
|
if (!msg)
|
|
return -1;
|
|
|
|
if (msgb_length(msg))
|
|
if (msgb_data(msg)[0] >= NUM_MSG - 1)
|
|
please_dont_die = false; /* end test: */
|
|
|
|
msgb_free(msg);
|
|
|
|
return 0;
|
|
}
|
|
|
|
int main(int argc, char **argv)
|
|
{
|
|
uint8_t i;
|
|
|
|
if (!dgram_init(THOST, CPORT, SPORT, read_cb))
|
|
exit(EXIT_FAILURE);
|
|
|
|
for(i = 0; i < NUM_MSG + 1; i++) {
|
|
/* N. B: moving this alocation outside of the loop will result in segfault */
|
|
struct msgb *msg = msgb_alloc(MAX_MSG, "UDP/client");
|
|
if (!msg) {
|
|
LOGP(DUDP_TEST, LOGL_ERROR, "cann't allocate message\n");
|
|
return EXIT_FAILURE;
|
|
}
|
|
|
|
if (!mtrim(msg, i, i))
|
|
return EXIT_FAILURE;
|
|
|
|
LOGP(DUDP_TEST, LOGL_NOTICE, "queue [%u] %s\n", msgb_length(msg), msgb_hexdump(msg));
|
|
osmo_dgram_send(conn, msg);
|
|
}
|
|
|
|
main_loop(THOST, CPORT, SPORT);
|
|
|
|
return 0;
|
|
}
|