| 207 | } |
| 208 | |
| 209 | int add_to_fss_sockets(fs_evs *sock, const str *event_name) |
| 210 | { |
| 211 | struct list_head *_; |
| 212 | struct fs_evs_list *sock_list; |
| 213 | str_list *slist, *event; |
| 214 | |
| 215 | LM_DBG("adding event: %.*s\n", event_name->len, event_name->s); |
| 216 | |
| 217 | list_for_each(_, fss_sockets) { |
| 218 | sock_list = list_entry(_, struct fs_evs_list, list); |
| 219 | if (sock_list->sock != sock) |
| 220 | continue; |
| 221 | |
| 222 | for (event = sock_list->events; event; event = event->next) |
| 223 | if (str_strcmp(&event->s, event_name) == 0) |
| 224 | return 0; |
| 225 | |
| 226 | goto alloc_event; |
| 227 | } |
| 228 | |
| 229 | LM_BUG("add_to_fss_sockets sock not found"); |
| 230 | return -1; |
| 231 | |
| 232 | alloc_event: |
| 233 | slist = shm_malloc(sizeof *slist); |
| 234 | if (!slist) { |
| 235 | LM_ERR("oom\n"); |
| 236 | return -1; |
| 237 | } |
| 238 | memset(slist, 0, sizeof *slist); |
| 239 | |
| 240 | if (shm_nt_str_dup(&slist->s, event_name) != 0) { |
| 241 | shm_free(slist); |
| 242 | LM_ERR("oom\n"); |
| 243 | return -1; |
| 244 | } |
| 245 | |
| 246 | slist->next = sock_list->events; |
| 247 | sock_list->events = slist; |
| 248 | |
| 249 | return 1; |
| 250 | } |
| 251 | |
| 252 | int del_from_fss_sockets(fs_evs *sock, const str *event_name) |
| 253 | { |
no test coverage detected