diff --git a/libs/freetdm/patches/oz.diff b/libs/freetdm/patches/oz.diff deleted file mode 100644 index 2e9c558b7c..0000000000 --- a/libs/freetdm/patches/oz.diff +++ /dev/null @@ -1,134 +0,0 @@ -Index: src/ozmod/ozmod_wanpipe/ozmod_wanpipe.c -=================================================================== ---- src/ozmod/ozmod_wanpipe/ozmod_wanpipe.c (revision 745) -+++ src/ozmod/ozmod_wanpipe/ozmod_wanpipe.c (working copy) -@@ -98,19 +98,21 @@ - * so we can have one analong handler thread that will deal with all the idle analog channels for events - * the alternative would be for the driver to provide one socket for all of the oob events for all analog channels - */ --static __inline__ int tdmv_api_wait_socket(sng_fd_t fd, int timeout, int *flags) -+static __inline__ int tdmv_api_wait_socket(zap_channel_t *zchan, int timeout, int *flags) - { - - #ifdef LIBSANGOMA_VERSION - int err; -- sangoma_wait_obj_t sangoma_wait_obj; -+ sangoma_wait_obj_t *sangoma_wait_obj = zchan->mod_data; - -- sangoma_init_wait_obj(&sangoma_wait_obj, fd, 1, 1, *flags, SANGOMA_WAIT_OBJ); -+ sangoma_init_wait_obj(sangoma_wait_obj, zchan->sockfd, 1, 1, 0, SANGOMA_WAIT_OBJ); - -- err=sangoma_socket_waitfor_many(&sangoma_wait_obj,1 , timeout); -+ err = sangoma_socket_waitfor_many(&sangoma_wait_obj, 1, timeout); -+ - if (err > 0) { -- *flags=sangoma_wait_obj.flags_out; -+ *flags = sangoma_wait_obj.flags_out; - } -+ - return err; - - #else -@@ -118,7 +120,7 @@ - int res; - - memset(&pfds[0], 0, sizeof(pfds[0])); -- pfds[0].fd = fd; -+ pfds[0].fd = zchan->sockfd; - pfds[0].events = *flags; - res = poll(pfds, 1, timeout); - *flags = 0; -@@ -200,6 +202,15 @@ - - if (sockfd != WP_INVALID_SOCKET && zap_span_add_channel(span, sockfd, type, &chan) == ZAP_SUCCESS) { - wanpipe_tdm_api_t tdm_api; -+#ifdef LIBSANGOMA_VERSION -+ sangoma_wait_obj_t *sangoma_wait_obj; -+ -+ sangoma_wait_obj = malloc(sizeof(*sangoma_wait_obj)); -+ memset(sangoma_wait_obj, 0, sizeof(*sangoma_wait_obj)); -+ sangoma_init_wait_obj(sangoma_wait_obj, sockfd, 1, 1, 0, SANGOMA_WAIT_OBJ); -+ chan->mod_data = sangoma_wait_obj; -+#endif -+ - memset(&tdm_api,0,sizeof(tdm_api)); - - chan->physical_span_id = spanno; -@@ -211,7 +222,7 @@ - - dtmf = "software"; - -- /* FIXME: Handle Error Conditino Check for return code */ -+ /* FIXME: Handle Error Condition Check for return code */ - err= sangoma_tdm_get_hw_coding(chan->sockfd, &tdm_api); - - if (tdm_api.wp_tdm_cmd.hw_tdm_coding) { -@@ -606,7 +617,7 @@ - inflags |= POLLPRI; - } - -- result = tdmv_api_wait_socket(zchan->sockfd, to, &inflags); -+ result = tdmv_api_wait_socket(zchan, to, &inflags); - - *flags = ZAP_NO_FLAGS; - -@@ -643,26 +654,30 @@ - ZIO_SPAN_POLL_EVENT_FUNCTION(wanpipe_poll_event) - { - #ifdef LIBSANGOMA_VERSION -- sangoma_wait_obj_t pfds[ZAP_MAX_CHANNELS_SPAN]; -+ sangoma_wait_obj_t *pfds[ZAP_MAX_CHANNELS_SPAN] = { 0 }; - #else - struct pollfd pfds[ZAP_MAX_CHANNELS_SPAN]; - #endif - - uint32_t i, j = 0, k = 0, l = 0; -- int objects=0; - int r; - - for(i = 1; i <= span->chan_count; i++) { - zap_channel_t *zchan = span->channels[i]; - -+ - #ifdef LIBSANGOMA_VERSION -- sangoma_init_wait_obj(&pfds[j], zchan->sockfd , 1, 1, POLLPRI, SANGOMA_WAIT_OBJ); -+ if (!zchan->mod_data) { -+ continue; -+ } -+ pfds[j] = zchan->mod_data; -+ - #else - memset(&pfds[j], 0, sizeof(pfds[j])); - pfds[j].fd = span->channels[i]->sockfd; - pfds[j].events = POLLPRI; - #endif -- objects++; -+ - /* The driver probably should be able to do this wink/flash/ringing by itself this is sort of a hack to make it work! */ - - if (zap_test_flag(zchan, ZAP_CHANNEL_WINK) || zap_test_flag(zchan, ZAP_CHANNEL_FLASH)) { -@@ -703,7 +718,7 @@ - ms = l; - } - #ifdef LIBSANGOMA_VERSION -- r = sangoma_socket_waitfor_many(pfds,objects,ms); -+ r = sangoma_socket_waitfor_many(pfds, j, ms); - #else - r = poll(pfds, j, ms); - #endif -@@ -935,6 +950,15 @@ - */ - static ZIO_CHANNEL_DESTROY_FUNCTION(wanpipe_channel_destroy) - { -+ sangoma_wait_obj_t *sangoma_wait_obj; -+ -+ if (zchan->mod_data) { -+ sangoma_wait_obj = zchan->mod_data; -+ zchan->mod_data = NULL; -+ sangoma_release_wait_obj(sangoma_wait_obj); -+ free(sangoma_wait_obj); -+ } -+ - if (zchan->sockfd > -1) { - close(zchan->sockfd); - zchan->sockfd = WP_INVALID_SOCKET;