| 49 | |
| 50 | |
| 51 | evi_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 | |
| 94 | void scriptroute_free(evi_reply_sock *sock) |
| 95 | { |
nothing calls this directly
no test coverage detected