1--[[[
2-- Just a test for UDP API
3--]]
4
5local rspamd_udp = require "rspamd_udp"
6local logger = require "rspamd_logger"
7
8-- [[ old fashioned callback api ]]
9local function simple_udp_async_symbol(task)
10  logger.errx(task, 'udp_symbol: begin')
11  local function udp_cb(success, data)
12    logger.errx(task, 'udp_cb: got reply: %s', data)
13
14    if success then
15      task:insert_result('UDP_SUCCESS', 1.0, data)
16    else
17      task:insert_result('UDP_FAIL', 1.0, data)
18    end
19  end
20  rspamd_udp:sendto({
21    task = task,
22    callback = udp_cb,
23    host = '127.0.0.1',
24    data = {'hello', 'world'},
25    port = 5005,
26  })
27end
28
29rspamd_config:register_symbol({
30  name = 'UDP_SUCCESS',
31  score = 0.0,
32  callback = simple_udp_async_symbol,
33})
34
35local function send_only_udp(task)
36  logger.errx(task, 'udp_symbol_sendonly: begin')
37  if rspamd_udp:sendto({
38    task = task,
39    host = '127.0.0.1',
40    data = {'hoho'},
41    port = 5005,
42  }) then
43
44    task:insert_result('UDP_SENDTO', 1.0)
45  end
46end
47
48rspamd_config:register_symbol({
49  name = 'UDP_SENDTO',
50  score = 0.0,
51  callback = send_only_udp,
52})
53
54local function udp_failed_cb(task)
55  logger.errx(task, 'udp_failed_cb: begin')
56  local function udp_cb(success, data)
57    logger.errx(task, 'udp_failed_cb: got reply: %s', data)
58
59    if success then
60      task:insert_result('UDP_SUCCESS', 1.0, data)
61    else
62      task:insert_result('UDP_FAIL', 1.0, data)
63    end
64  end
65  rspamd_udp:sendto({
66    task = task,
67    callback = udp_cb,
68    host = '127.0.0.1',
69    data = {'hello', 'world'},
70    port = 5006,
71    retransmits = 2,
72    timeout = 0.1,
73  })
74end
75
76rspamd_config:register_symbol({
77  name = 'UDP_FAIL',
78  score = 0.0,
79  callback = udp_failed_cb,
80})
81-- ]]
82