64 bit goodies
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@897 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
parent
ce72c5d1c8
commit
0e76b6355c
|
@ -1,13 +1,13 @@
|
|||
#CFLAGS += -I/usr/src/common/src
|
||||
CFLAGS += -I.
|
||||
LDFLAGS += -leXosip2 -ljrtp
|
||||
|
||||
OBJS=osip_rfc3264.o
|
||||
ifeq ($(OSARCH),Darwin)
|
||||
LINKER=g++
|
||||
else
|
||||
LINKER=$(CC)
|
||||
endif
|
||||
|
||||
all: depends $(MODNAME).$(DYNAMIC_LIB_EXTEN)
|
||||
all: depends $(OBJS) $(MODNAME).$(DYNAMIC_LIB_EXTEN)
|
||||
|
||||
depends:
|
||||
MAKE=$(MAKE) $(BASE)/build/buildlib.sh $(BASE) install jrtplib --prefix=$(PREFIX) --disable-gst
|
||||
|
@ -15,9 +15,12 @@ depends:
|
|||
MAKE=$(MAKE) $(BASE)/build/buildlib.sh $(BASE) install libeXosip2-2.2.2.tar.gz --disable-josua --prefix=$(PREFIX)
|
||||
|
||||
|
||||
%.o: %.c
|
||||
$(CC) -fPIC $(CFLAGS) -c -o $@ $<
|
||||
|
||||
$(MODNAME).$(DYNAMIC_LIB_EXTEN): $(MODNAME).c
|
||||
$(CC) $(CFLAGS) -fPIC -c $(MODNAME).c -o $(MODNAME).o
|
||||
$(LINKER) $(SOLINK) -o $(MODNAME).$(DYNAMIC_LIB_EXTEN) $(MODNAME).o $(LDFLAGS)
|
||||
$(LINKER) $(SOLINK) -o $(MODNAME).$(DYNAMIC_LIB_EXTEN) $(OBJS) $(MODNAME).o $(LDFLAGS)
|
||||
|
||||
clean:
|
||||
rm -fr *.$(DYNAMIC_LIB_EXTEN) *.o *~
|
||||
|
|
|
@ -35,8 +35,9 @@
|
|||
#include <jrtplib3/jrtp4c.h>
|
||||
#include <eXosip2/eXosip.h>
|
||||
#include <osip2/osip_mt.h>
|
||||
#include <osipparser2/osip_rfc3264.h>
|
||||
#include <osip_rfc3264.h>
|
||||
#include <osipparser2/osip_port.h>
|
||||
#define ENABLE_TRACE
|
||||
|
||||
static const char modname[] = "mod_exosip";
|
||||
#define STRLEN 15
|
||||
|
@ -951,6 +952,9 @@ SWITCH_MOD_DECLARE(switch_status) switch_module_load(const switch_loadable_modul
|
|||
{
|
||||
/* NOTE: **interface is **_interface because the common lib redefines interface to struct in some situations */
|
||||
|
||||
|
||||
osip_trace_initialize(10, stdout);
|
||||
|
||||
if (switch_core_new_memory_pool(&module_pool) != SWITCH_STATUS_SUCCESS) {
|
||||
switch_console_printf(SWITCH_CHANNEL_CONSOLE, "OH OH no pool\n");
|
||||
return SWITCH_STATUS_TERM;
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,309 @@
|
|||
/*
|
||||
The oSIP library implements the Session Initiation Protocol (SIP -rfc3261-)
|
||||
Copyright (C) 2001,2002,2003,2004 Aymeric MOIZARD jack@atosc.org
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#ifndef __SDP_RFC3264_H__
|
||||
#define __SDP_RFC3264_H__
|
||||
|
||||
#include <osipparser2/osip_list.h>
|
||||
#include <osipparser2/sdp_message.h>
|
||||
|
||||
/**
|
||||
* @file osip_rfc3264.h
|
||||
* @brief oSIP sdp negotiation facility.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @defgroup oSIP_rfc3264 oSIP sdp negotiation facility.
|
||||
* @ingroup osip2_sdp
|
||||
* @{
|
||||
*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Structure to hold support for codecs.
|
||||
* @struct osip_rfc3264
|
||||
*/
|
||||
struct osip_rfc3264;
|
||||
|
||||
/**
|
||||
* Maximum number of supported audio payload.
|
||||
* @def MAX_AUDIO_CODECS
|
||||
*/
|
||||
#define MAX_AUDIO_CODECS 100
|
||||
/**
|
||||
* Maximum number of supported video payload.
|
||||
* @def MAX_VIDEO_CODECS
|
||||
*/
|
||||
#define MAX_VIDEO_CODECS 100
|
||||
/**
|
||||
* Maximum number of supported t38 config.
|
||||
* @def MAX_T38_CODECS
|
||||
*/
|
||||
#define MAX_T38_CODECS 2
|
||||
/**
|
||||
* Maximum number of supported application config.
|
||||
* @def MAX_APP_CODECS
|
||||
*/
|
||||
#define MAX_APP_CODECS 100
|
||||
|
||||
/**
|
||||
* Initialize negotiation facility..
|
||||
* @param config The element to work on.
|
||||
*/
|
||||
int osip_rfc3264_init (struct osip_rfc3264 **config);
|
||||
|
||||
/**
|
||||
* Free negotiation facility.
|
||||
* @param config The element to work on.
|
||||
*/
|
||||
void osip_rfc3264_free (struct osip_rfc3264 *config);
|
||||
|
||||
/**
|
||||
* Test if a media exist in the configuration.
|
||||
* @param config The element to work on.
|
||||
* @param pos The index of the media element.
|
||||
*/
|
||||
int osip_rfc3264_endof_media (struct osip_rfc3264 *config, int pos);
|
||||
|
||||
/**
|
||||
* Get a media from the configuration.
|
||||
* @param config The element to work on.
|
||||
* @param pos The index of the media element to get.
|
||||
*/
|
||||
sdp_media_t *osip_rfc3264_get (struct osip_rfc3264 *config, int pos);
|
||||
|
||||
/**
|
||||
* Remove a media from the configuration.
|
||||
* @param config The element to work on.
|
||||
* @param pos The index of the media element to remove.
|
||||
*/
|
||||
int osip_rfc3264_remove (struct osip_rfc3264 *config, int pos);
|
||||
|
||||
/**
|
||||
* Remove all medias from the configuration.
|
||||
* @param config The element to work on.
|
||||
*/
|
||||
int osip_rfc3264_reset_media (struct osip_rfc3264 *config);
|
||||
|
||||
/**
|
||||
* Add a media in the configuration.
|
||||
* @param config The element to work on.
|
||||
* @param med The media element to add.
|
||||
* @param pos The index of the media element to add.
|
||||
*/
|
||||
int osip_rfc3264_add_audio_media (struct osip_rfc3264 *config,
|
||||
sdp_media_t * med, int pos);
|
||||
|
||||
/**
|
||||
* Remove a media in the configuration.
|
||||
* @param config The element to work on.
|
||||
* @param pos The index of the media element to remove.
|
||||
*/
|
||||
int osip_rfc3264_del_audio_media (struct osip_rfc3264 *config, int pos);
|
||||
|
||||
/**
|
||||
* Add a media (for T.38) in the configuration.
|
||||
* @param config The element to work on.
|
||||
* @param med The media element to add.
|
||||
* @param pos The index of the media element to add.
|
||||
*/
|
||||
int osip_rfc3264_add_t38_media (struct osip_rfc3264 *config,
|
||||
sdp_media_t * med, int pos);
|
||||
|
||||
/**
|
||||
* Remove a media (for T.38) in the configuration.
|
||||
* @param config The element to work on.
|
||||
* @param pos The index of the media element to remove.
|
||||
*/
|
||||
int osip_rfc3264_del_t38_media (struct osip_rfc3264 *config, int pos);
|
||||
|
||||
/**
|
||||
* Add a media (for video) in the configuration.
|
||||
* @param config The element to work on.
|
||||
* @param med The media element to add.
|
||||
* @param pos The index of the media element to add.
|
||||
*/
|
||||
int osip_rfc3264_add_video_media (struct osip_rfc3264 *config,
|
||||
sdp_media_t * med, int pos);
|
||||
|
||||
/**
|
||||
* Remove a media in the configuration.
|
||||
* @param config The element to work on.
|
||||
* @param pos The index of the media element to remove.
|
||||
*/
|
||||
int osip_rfc3264_del_video_media (struct osip_rfc3264 *config, int pos);
|
||||
|
||||
|
||||
/**
|
||||
* Search for support of a special codec.
|
||||
* @param config The element to work on.
|
||||
*/
|
||||
sdp_media_t *osip_rfc3264_find_audio (struct osip_rfc3264 *config,
|
||||
char *payload, char *rtpmap);
|
||||
|
||||
/**
|
||||
* Search for support of a special codec.
|
||||
* @param config The element to work on.
|
||||
* @param payload The payload to find.
|
||||
* @param rtpmap The rtpmap for the payload.
|
||||
*/
|
||||
sdp_media_t *osip_rfc3264_find_video (struct osip_rfc3264 *config,
|
||||
char *payload, char *rtpmap);
|
||||
|
||||
/**
|
||||
* Search for support of a special codec.
|
||||
* @param config The element to work on.
|
||||
* @param payload The payload to find.
|
||||
*/
|
||||
sdp_media_t *osip_rfc3264_find_t38 (struct osip_rfc3264 *config, char *payload);
|
||||
|
||||
/**
|
||||
* Search for support of a special codec.
|
||||
* @param config The element to work on.
|
||||
* @param payload The payload to find.
|
||||
*/
|
||||
sdp_media_t *osip_rfc3264_find_app (struct osip_rfc3264 *config, char *payload);
|
||||
|
||||
/**
|
||||
* Compare remote sdp packet against local supported media.
|
||||
* Only one media line is checked.
|
||||
*
|
||||
* @param config The element to work on.
|
||||
* @param remote_sdp The remote SDP packet.
|
||||
* @param audio_tab The local list of media supported by both side.
|
||||
* @param video_tab The local list of media supported by both side.
|
||||
* @param t38_tab The local list of media supported by both side.
|
||||
* @param app_tab The local list of media supported by both side.
|
||||
* @param pos_media The position of the media line to match.
|
||||
*/
|
||||
int osip_rfc3264_match (struct osip_rfc3264 *config,
|
||||
sdp_message_t * remote_sdp,
|
||||
sdp_media_t * audio_tab[],
|
||||
sdp_media_t * video_tab[],
|
||||
sdp_media_t * t38_tab[],
|
||||
sdp_media_t * app_tab[], int pos_media);
|
||||
|
||||
/**
|
||||
* Compare remote sdp packet against local supported media for audio.
|
||||
* @param config The element to work on.
|
||||
* @param remote_sdp The remote SDP packet.
|
||||
* @param remote_med The remote Media SDP line.
|
||||
* @param audio_tab The local list of media supported by both side.
|
||||
*/
|
||||
int osip_rfc3264_match_audio (struct osip_rfc3264 *config,
|
||||
sdp_message_t * remote_sdp,
|
||||
sdp_media_t * remote_med,
|
||||
sdp_media_t * audio_tab[]);
|
||||
|
||||
/**
|
||||
* Compare remote sdp packet against local supported media for video.
|
||||
* @param config The element to work on.
|
||||
* @param remote_sdp The remote SDP packet.
|
||||
* @param remote_med The remote Media SDP line.
|
||||
* @param video_tab The local list of media supported by both side.
|
||||
*/
|
||||
int osip_rfc3264_match_video (struct osip_rfc3264 *config,
|
||||
sdp_message_t * remote_sdp,
|
||||
sdp_media_t * remote_med,
|
||||
sdp_media_t * video_tab[]);
|
||||
|
||||
/**
|
||||
* Compare remote sdp packet against local supported media for t38.
|
||||
* @param config The element to work on.
|
||||
* @param remote_sdp The remote SDP packet.
|
||||
* @param remote_med The remote Media SDP line.
|
||||
* @param t38_tab The local list of media supported by both side.
|
||||
*/
|
||||
int osip_rfc3264_match_t38 (struct osip_rfc3264 *config,
|
||||
sdp_message_t * remote_sdp,
|
||||
sdp_media_t * remote_med, sdp_media_t * t38_tab[]);
|
||||
|
||||
/**
|
||||
* Compare remote sdp packet against local supported media for application.
|
||||
* @param config The element to work on.
|
||||
* @param remote_sdp The remote SDP packet.
|
||||
* @param remote_med The remote Media SDP line.
|
||||
* @param app_tab The local list of media supported by both side.
|
||||
*/
|
||||
int osip_rfc3264_match_app (struct osip_rfc3264 *config,
|
||||
sdp_message_t * remote_sdp,
|
||||
sdp_media_t * remote_med, sdp_media_t * app_tab[]);
|
||||
|
||||
|
||||
/**
|
||||
* Prepare an uncomplete answer.
|
||||
* @param config The element to work on.
|
||||
* @param remote_sdp The remote SDP packet.
|
||||
* @param local_sdp The local SDP packet to prepare.
|
||||
* @param length The local SDP packet's length.
|
||||
*/
|
||||
int osip_rfc3264_prepare_answer (struct osip_rfc3264 *config,
|
||||
sdp_message_t * remote_sdp,
|
||||
char *local_sdp, int length);
|
||||
|
||||
/**
|
||||
* Agree to support a specific codec.
|
||||
* This method should be called for each codec returned by
|
||||
* osip_rfc3264_match(...) that the calle agree to support.
|
||||
*
|
||||
* @param config The element to work on.
|
||||
* @param remote_sdp The remote SDP packet.
|
||||
* @param local_sdp The local SDP packet to complete.
|
||||
* @param med One of the media returned by osip_rfc3264_match.
|
||||
* @param mline The position of the media line to complete.
|
||||
*/
|
||||
int
|
||||
osip_rfc3264_complete_answer (struct osip_rfc3264 *config,
|
||||
sdp_message_t * remote_sdp,
|
||||
sdp_message_t * local_sdp,
|
||||
sdp_media_t * med, int mline);
|
||||
|
||||
/**
|
||||
* Agree to support a specific codec.
|
||||
* This method should be called for each codec returned by
|
||||
* osip_rfc3264_match(...)
|
||||
*
|
||||
* @param config The element to work on.
|
||||
* @param med One of the media returned by osip_rfc3264_match
|
||||
* @param remote_sdp The remote SDP packet.
|
||||
* @param local_sdp The local SDP packet to prepare.
|
||||
*/
|
||||
int osip_rfc3264_accept_codec (struct osip_rfc3264 *config,
|
||||
sdp_media_t * med,
|
||||
sdp_message_t * remote_sdp,
|
||||
sdp_message_t * local_sdp);
|
||||
|
||||
|
||||
/**
|
||||
* List supported codecs. (for debugging purpose only)
|
||||
*
|
||||
* @param config The element to work on.
|
||||
*/
|
||||
int __osip_rfc3264_print_codecs (struct osip_rfc3264 *config);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
|
@ -0,0 +1,41 @@
|
|||
/*
|
||||
The oSIP library implements the Session Initiation Protocol (SIP -rfc3261-)
|
||||
Copyright (C) 2001,2002,2003,2004,2005 Aymeric MOIZARD jack@atosc.org
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#ifndef __SDP_RFC3264I_H__
|
||||
#define __SDP_RFC3264I_H__
|
||||
|
||||
#include <osipparser2/osip_list.h>
|
||||
#include <osipparser2/sdp_message.h>
|
||||
#include <osipparser2/osip_rfc3264.h>
|
||||
|
||||
#ifndef DOXYGEN
|
||||
|
||||
typedef struct osip_rfc3264 osip_rfc3264_t;
|
||||
|
||||
struct osip_rfc3264
|
||||
{
|
||||
sdp_media_t *audio_medias[MAX_AUDIO_CODECS];
|
||||
sdp_media_t *video_medias[MAX_VIDEO_CODECS];
|
||||
sdp_media_t *t38_medias[MAX_T38_CODECS];
|
||||
sdp_media_t *app_medias[MAX_APP_CODECS];
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
|
@ -1,5 +1,5 @@
|
|||
CFLAGS +=-I/usr/local/include -I/usr/src/libpri -I/usr/src/linux/include -I. -I/usr/include
|
||||
CFLAGS +=-D__LINUX__ -D_REENTRANT -D_GNU_SOURCE -O6 -march=i686 -DAFT_A104
|
||||
CFLAGS +=-D__LINUX__ -D_REENTRANT -D_GNU_SOURCE -DAFT_A104
|
||||
LDFLAGS += -lsangoma
|
||||
|
||||
|
||||
|
@ -12,6 +12,7 @@ endif
|
|||
all: depends $(MODNAME).$(DYNAMIC_LIB_EXTEN)
|
||||
|
||||
depends:
|
||||
MAKE=$(MAKE) $(BASE)/build/buildlib.sh $(BASE) install libsangoma --prefix=$(PREFIX)
|
||||
|
||||
$(MODNAME).$(DYNAMIC_LIB_EXTEN): $(MODNAME).c
|
||||
$(CC) $(CFLAGS) -fPIC -c $(MODNAME).c -o $(MODNAME).o
|
||||
|
|
|
@ -395,7 +395,9 @@ SWITCH_DECLARE(switch_channel_state) switch_channel_set_state(switch_channel *ch
|
|||
switch_console_printf(SWITCH_CHANNEL_CONSOLE, "%s State Change %s -> %s\n", channel->name,
|
||||
state_names[last_state], state_names[state]);
|
||||
channel->state = state;
|
||||
switch_core_session_signal_state_change(channel->session);
|
||||
if (state < CS_DONE) {
|
||||
switch_core_session_signal_state_change(channel->session);
|
||||
}
|
||||
} else {
|
||||
switch_console_printf(SWITCH_CHANNEL_CONSOLE, "%s Invalid State Change %s -> %s\n", channel->name,
|
||||
state_names[last_state], state_names[state]);
|
||||
|
@ -560,6 +562,7 @@ SWITCH_DECLARE(switch_status) switch_channel_hangup(switch_channel *channel)
|
|||
if (channel->state < CS_HANGUP) {
|
||||
channel->times.hungup = switch_time_now();
|
||||
channel->state = CS_HANGUP;
|
||||
switch_core_session_kill_channel(channel->session, SWITCH_SIG_KILL);
|
||||
switch_core_session_signal_state_change(channel->session);
|
||||
}
|
||||
return channel->state;
|
||||
|
|
|
@ -1723,13 +1723,13 @@ SWITCH_DECLARE(void) switch_core_session_run(switch_core_session *session)
|
|||
|
||||
switch (state) {
|
||||
case CS_NEW: /* Just created, Waiting for first instructions */
|
||||
switch_console_printf(SWITCH_CHANNEL_CONSOLE, "State NEW\n");
|
||||
switch_console_printf(SWITCH_CHANNEL_CONSOLE, "(%s) State NEW\n", switch_channel_get_name(session->channel));
|
||||
break;
|
||||
case CS_DONE:
|
||||
continue;
|
||||
break;
|
||||
case CS_HANGUP: /* Deactivate and end the thread */
|
||||
switch_console_printf(SWITCH_CHANNEL_CONSOLE, "State HANGUP\n");
|
||||
switch_console_printf(SWITCH_CHANNEL_CONSOLE, "(%s) State HANGUP\n", switch_channel_get_name(session->channel));
|
||||
if (!driver_state_handler->on_hangup ||
|
||||
(driver_state_handler->on_hangup &&
|
||||
driver_state_handler->on_hangup(session) == SWITCH_STATUS_SUCCESS &&
|
||||
|
@ -1768,7 +1768,7 @@ SWITCH_DECLARE(void) switch_core_session_run(switch_core_session *session)
|
|||
midstate = switch_channel_get_state(session->channel);
|
||||
break;
|
||||
case CS_INIT: /* Basic setup tasks */
|
||||
switch_console_printf(SWITCH_CHANNEL_CONSOLE, "State INIT\n");
|
||||
switch_console_printf(SWITCH_CHANNEL_CONSOLE, "(%s) State INIT\n", switch_channel_get_name(session->channel));
|
||||
if (!driver_state_handler->on_init ||
|
||||
(driver_state_handler->on_init &&
|
||||
driver_state_handler->on_init(session) == SWITCH_STATUS_SUCCESS &&
|
||||
|
@ -1804,7 +1804,7 @@ SWITCH_DECLARE(void) switch_core_session_run(switch_core_session *session)
|
|||
}
|
||||
break;
|
||||
case CS_RING: /* Look for a dialplan and find something to do */
|
||||
switch_console_printf(SWITCH_CHANNEL_CONSOLE, "State RING\n");
|
||||
switch_console_printf(SWITCH_CHANNEL_CONSOLE, "(%s) State RING\n", switch_channel_get_name(session->channel));
|
||||
if (!driver_state_handler->on_ring ||
|
||||
(driver_state_handler->on_ring &&
|
||||
driver_state_handler->on_ring(session) == SWITCH_STATUS_SUCCESS &&
|
||||
|
@ -1840,7 +1840,7 @@ SWITCH_DECLARE(void) switch_core_session_run(switch_core_session *session)
|
|||
}
|
||||
break;
|
||||
case CS_EXECUTE: /* Execute an Operation */
|
||||
switch_console_printf(SWITCH_CHANNEL_CONSOLE, "State EXECUTE\n");
|
||||
switch_console_printf(SWITCH_CHANNEL_CONSOLE, "(%s) State EXECUTE\n", switch_channel_get_name(session->channel));
|
||||
if (!driver_state_handler->on_execute ||
|
||||
(driver_state_handler->on_execute &&
|
||||
driver_state_handler->on_execute(session) == SWITCH_STATUS_SUCCESS &&
|
||||
|
@ -1876,7 +1876,7 @@ SWITCH_DECLARE(void) switch_core_session_run(switch_core_session *session)
|
|||
}
|
||||
break;
|
||||
case CS_LOOPBACK: /* loop all data back to source */
|
||||
switch_console_printf(SWITCH_CHANNEL_CONSOLE, "State LOOPBACK\n");
|
||||
switch_console_printf(SWITCH_CHANNEL_CONSOLE, "(%s) State LOOPBACK\n", switch_channel_get_name(session->channel));
|
||||
if (!driver_state_handler->on_loopback ||
|
||||
(driver_state_handler->on_loopback &&
|
||||
driver_state_handler->on_loopback(session) == SWITCH_STATUS_SUCCESS &&
|
||||
|
@ -1912,7 +1912,7 @@ SWITCH_DECLARE(void) switch_core_session_run(switch_core_session *session)
|
|||
}
|
||||
break;
|
||||
case CS_TRANSMIT: /* send/recieve data to/from another channel */
|
||||
switch_console_printf(SWITCH_CHANNEL_CONSOLE, "State TRANSMIT\n");
|
||||
switch_console_printf(SWITCH_CHANNEL_CONSOLE, "(%s) State TRANSMIT\n", switch_channel_get_name(session->channel));
|
||||
if (!driver_state_handler->on_transmit ||
|
||||
(driver_state_handler->on_transmit &&
|
||||
driver_state_handler->on_transmit(session) == SWITCH_STATUS_SUCCESS &&
|
||||
|
@ -1957,12 +1957,11 @@ SWITCH_DECLARE(void) switch_core_session_run(switch_core_session *session)
|
|||
laststate = midstate;
|
||||
}
|
||||
|
||||
|
||||
if (state < CS_DONE && midstate == switch_channel_get_state(session->channel)) {
|
||||
switch_thread_cond_wait(session->cond, session->mutex);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
session->thread_running = 0;
|
||||
}
|
||||
|
||||
|
@ -2071,9 +2070,8 @@ static void *SWITCH_THREAD_FUNC switch_core_session_thread(switch_thread *thread
|
|||
switch_core_hash_insert(runtime.session_table, session->uuid_str, session);
|
||||
switch_core_session_run(session);
|
||||
switch_core_hash_delete(runtime.session_table, session->uuid_str);
|
||||
switch_console_printf(SWITCH_CHANNEL_CONSOLE, "Session %ld (%s) Ended\n", id, switch_channel_get_name(session->channel));
|
||||
switch_core_session_destroy(&session);
|
||||
switch_console_printf(SWITCH_CHANNEL_CONSOLE, "Session %ld Ended\n", id);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue