MCPcopy Create free account
hub / github.com/OpenSIPS/opensips / scriptroute_parse

Function scriptroute_parse

evi/event_route.c:51–92  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

49
50
51evi_reply_sock* scriptroute_parse(str socket)
52{
53 evi_reply_sock *sock = NULL;
54 struct script_route_ref *ref;
55
56 if (!socket.len || !socket.s) {
57 LM_ERR("no socket specified\n");
58 return NULL;
59 }
60
61 /* try to "resolve" the name of the route */
62 ref = ref_script_route_by_name_str( &socket, sroutes->event, EVENT_RT_NO,
63 EVENT_ROUTE, 1 /*in_shm*/);
64 if (!ref_script_route_is_valid(ref)) {
65 LM_ERR("cannot find route %.*s\n", socket.len, socket.s);
66 return NULL;
67 }
68
69 sock = shm_malloc(sizeof(evi_reply_sock) + socket.len + 1);
70 if (!sock) {
71 LM_ERR("no more memory for socket\n");
72 return NULL;
73 }
74 memset(sock, 0, sizeof(evi_reply_sock));
75
76 sock->address.s = (char *)(sock + 1);
77
78 memcpy(sock->address.s, socket.s, socket.len);
79 sock->address.len = socket.len;
80 sock->address.s[socket.len] = 0;
81
82 sock->params = (void *)ref;
83 sock->flags |= EVI_PARAMS;
84
85 LM_DBG("route is <%.*s> idx %d\n", sock->address.len, sock->address.s,
86 ref->idx);
87 sock->flags |= EVI_ADDRESS;
88
89 sock->flags |= SCRIPTROUTE_FLAG;
90
91 return sock;
92}
93
94void scriptroute_free(evi_reply_sock *sock)
95{

Callers

nothing calls this directly

Calls 2

shm_mallocFunction · 0.85

Tested by

no test coverage detected