Skip to content

Commit e958b02

Browse files
committed
event_virtual: Fix several missing lock_release() ops
Credits to @ryancaicse for the report in #2714
1 parent 3db06b9 commit e958b02

1 file changed

Lines changed: 6 additions & 1 deletion

File tree

modules/event_virtual/event_virtual.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -466,6 +466,7 @@ static int failover_raise(struct sip_msg *msg, str *ev_name,
466466

467467
cb_param->evi_params = evi_dup_shm_params(params);
468468
if (!cb_param->evi_params) {
469+
lock_release(cur_sock->lock);
469470
LM_ERR("Failed to dup evi params in shm\n");
470471
shm_free(cb_param);
471472
return -1;
@@ -616,13 +617,15 @@ static int virtual_raise(struct sip_msg *msg, str* ev_name, evi_reply_sock *sock
616617
LM_ERR("unable to parse socket %.*s\n",
617618
vsock->current_sock->sock_str.len,
618619
vsock->current_sock->sock_str.s);
620+
lock_release(rrobin_lock);
619621
return -1;
620622
}
621623

622624
if (vsock->current_sock->trans_mod->raise(msg, ev_name,
623625
vsock->current_sock->sock, params, &async_status)) {
624626
LM_ERR("unable to raise socket %.*s\n",
625627
vsock->current_sock->sock_str.len, vsock->current_sock->sock_str.s);
628+
lock_release(rrobin_lock);
626629
return -1;
627630
}
628631

@@ -650,8 +653,10 @@ static void virtual_free(evi_reply_sock *sock) {
650653
lock_get(global_lock);
651654

652655
vsock = (struct virtual_socket *)sock->params;
653-
if (!vsock)
656+
if (!vsock) {
657+
lock_release(global_lock);
654658
return;
659+
}
655660

656661
/* free the list of sockets for this virtual socket */
657662
sub_list = vsock->list_sockets;

0 commit comments

Comments
 (0)