diff options
author | Tony Vroon <chainsaw@gentoo.org> | 2009-04-03 15:23:44 +0000 |
---|---|---|
committer | Tony Vroon <chainsaw@gentoo.org> | 2009-04-03 15:23:44 +0000 |
commit | 937a9849fbe110fb83abbe865196677b2e52fe65 (patch) | |
tree | b041774c4fd7560d84776f68cca9c90ecf6b8bf6 /net-misc/asterisk | |
parent | whitespace (diff) | |
download | gentoo-2-937a9849fbe110fb83abbe865196677b2e52fe65.tar.gz gentoo-2-937a9849fbe110fb83abbe865196677b2e52fe65.tar.bz2 gentoo-2-937a9849fbe110fb83abbe865196677b2e52fe65.zip |
Remove vulnerable 1.6 branch ebuild and now obsolete patches.
(Portage version: 2.1.6.11/cvs/Linux x86_64)
Diffstat (limited to 'net-misc/asterisk')
6 files changed, 9 insertions, 780 deletions
diff --git a/net-misc/asterisk/ChangeLog b/net-misc/asterisk/ChangeLog index 3b7b7c35cdcf..3ee5a3eaaec9 100644 --- a/net-misc/asterisk/ChangeLog +++ b/net-misc/asterisk/ChangeLog @@ -1,6 +1,14 @@ # ChangeLog for net-misc/asterisk # Copyright 2002-2009 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/net-misc/asterisk/ChangeLog,v 1.195 2009/04/03 15:16:44 chainsaw Exp $ +# $Header: /var/cvsroot/gentoo-x86/net-misc/asterisk/ChangeLog,v 1.196 2009/04/03 15:23:44 chainsaw Exp $ + + 03 Apr 2009; <chainsaw@gentoo.org> + -files/1.6.0/asterisk-1.6.0.6-dahdiras.patch, + -files/1.6.0/asterisk-1.6.0.6-sip-use-specified-port.patch, + -files/1.6.0/asterisk-1.6.0.6-socket-details.patch, + -files/1.6.0/asterisk-1.6.0.6-spandsp-api-change.patch, + -asterisk-1.6.0.6.ebuild: + Remove vulnerable 1.6 branch ebuild and now obsolete patches. *asterisk-1.6.0.8 (03 Apr 2009) diff --git a/net-misc/asterisk/asterisk-1.6.0.6.ebuild b/net-misc/asterisk/asterisk-1.6.0.6.ebuild deleted file mode 100644 index db4d6c9442dc..000000000000 --- a/net-misc/asterisk/asterisk-1.6.0.6.ebuild +++ /dev/null @@ -1,489 +0,0 @@ -# Copyright 1999-2009 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/net-misc/asterisk/asterisk-1.6.0.6.ebuild,v 1.2 2009/03/16 13:45:00 chainsaw Exp $ - -EAPI=1 -inherit eutils autotools - -MY_P="${PN}-${PV/_/-}" - -DESCRIPTION="Asterisk: A Modular Open Source PBX System" -HOMEPAGE="http://www.asterisk.org/" -SRC_URI="http://downloads.digium.com/pub/asterisk/releases/${MY_P}.tar.gz" -LICENSE="GPL-2" -SLOT="0" -KEYWORDS="~amd64 ~x86" - -IUSE="alsa +caps curl dahdi debug freetds h323 iconv imap jabber ldap keepsrc misdn newt nosamples odbc oss postgres radius snmp span speex ssl sqlite static vorbis" - -RDEPEND="virtual/libc - sys-libs/ncurses - dev-libs/popt - sys-libs/zlib - alsa? ( media-libs/alsa-lib ) - caps? ( sys-libs/libcap ) - curl? ( net-misc/curl ) - dahdi? ( >=net-libs/libpri-1.4.7 - net-misc/dahdi-tools ) - freetds? ( dev-db/freetds ) - h323? ( dev-libs/pwlib - net-libs/openh323 ) - iconv? ( virtual/libiconv ) - imap? ( virtual/imap-c-client ) - jabber? ( dev-libs/iksemel ) - ldap? ( net-nds/openldap ) - misdn? ( net-dialup/misdnuser ) - newt? ( dev-libs/newt ) - odbc? ( dev-db/unixODBC ) - postgres? ( virtual/postgresql-base ) - radius? ( net-dialup/radiusclient-ng ) - snmp? ( net-analyzer/net-snmp ) - span? ( media-libs/spandsp ) - speex? ( media-libs/speex ) - sqlite? ( dev-db/sqlite ) - ssl? ( dev-libs/openssl ) - vorbis? ( media-libs/libvorbis )" - -DEPEND="${RDEPEND} - !<net-misc/asterisk-addons-1.6" - -S="${WORKDIR}/${MY_P}" - -# -# shortcuts -# - -# update from asterisk-1.0.x -is_ast10update() { - return $(has_version "=net-misc/asterisk-1.0*") -} - -# update from asterisk-1.2.x -is_ast12update() { - return $(has_version "=net-misc/asterisk-1.2*") -} - -# update from asterisk 1.4.x -is_ast14update() { - return $(has_version "=net-misc/asterisk-1.4*") -} - -# update in the asterisk-1.6.x line -is_astupdate() { - if ! is_ast10update && ! is_ast12update && !is_ast14update; then - return $(has_version "<net-misc/asterisk-${PV}") - fi - return 0 -} - -get_available_modules() { - local modules mod x - - # build list of available modules... - for x in app cdr codec format func pbx res; do - - for mod in $(find "${S}" -type f -name "${x}_*.c*" -print) - do - modules="${modules} $(basename ${mod/%.c*})" - done - done - - echo "${modules}" -} - -pkg_setup() { - local checkfailed=0 waitaftermsg=0 - - if is_ast10update || is_ast12update || is_ast14update ; then - ewarn " Asterisk UPGRADE Warning" - ewarn "" - ewarn "- Please read "${ROOT}"usr/share/doc/${PF}/UPGRADE.txt.bz2 after the installation!" - ewarn "" - ewarn " Asterisk UPGRADE Warning" - echo - waitaftermsg=1 - fi - - if [[ $waitaftermsg -eq 1 ]]; then - einfo "Press Ctrl+C to abort" - echo - ebeep 10 - fi - - # - # Regular checks - # - einfo "Running some pre-flight checks..." - echo - - # imap requires ssl if imap-c-client was built with ssl, - # conversely if ssl and imap are both on then imap-c-client needs ssl - if use imap; then - if use ssl && ! built_with_use virtual/imap-c-client ssl; then - eerror - eerror "IMAP with SSL requested, but your IMAP C-Client libraries" - eerror "are built without SSL!" - eerror - die "Please recompile the IMAP C-Client libraries with SSL support enabled" - elif ! use ssl && built_with_use virtual/imap-c-client ssl; then - eerror - eerror "IMAP without SSL requested, but your IMAP C-Client" - eerror "libraries are built with SSL!" - eerror - die "Please recompile the IMAP C-Client libraries without SSL support enabled" - fi - fi - - if [[ -n "${ASTERISK_MODULES}" ]] ; then - ewarn "You are overriding ASTERISK_MODULES. We will assume you know what you are doing. There is no support for this option, try without if you see breakage." - fi -} - -src_unpack() { - unpack ${A} - cd "${S}" - - # - # comment about h323 issues - # - if use h323 ; then - ewarn "h323 useflag: It is known that the h323 module doesn't compile - the \"normal\" way: For a workaround, asterisk will be built two times - without cleaning the build dir." - fi - - # - # put pid file(s) into /var/run/asterisk - # - epatch "${FILESDIR}"/1.6.0/${PN}-1.6.0-var_rundir.patch || die "patch failed" - - # - # fix gsm codec cflags (e.g. i586 core epias) and disable - # assembler optimizations - # - epatch "${FILESDIR}"/1.6.0/${PN}-1.6.0-gsm-pic.patch || die "patch failed" - - # - # add missing LIBS for uclibc - # - epatch "${FILESDIR}"/1.6.0/${PN}-1.6.0-uclibc.patch || die "patch failed" - - # - # do not ignore TCP transport setting for SIP, remove for 1.6.0.7 as it is upstream - # http://bugs.digium.com/view.php?id=14480 - # - epatch "${FILESDIR}"/1.6.0/${P}-socket-details.patch || die "patch failed" - - # - # allow dahdiras application to actually build, remove for 1.6.0.7 as it is upstream - # http://bugs.digium.com/view.php?id=14516 - # - epatch "${FILESDIR}"/1.6.0/${P}-dahdiras.patch || die "patch failed" - - # - # allow fax application to build against new spandsp, remove for 1.6.0.7 as it is upstream - # http://bugs.digium.com/view.php?id=14620 - # - epatch "${FILESDIR}"/1.6.0/${P}-spandsp-api-change.patch || die "patch failed" - - # - # do not ignore TCP port setting for SIP, remove for 1.6.0.7 as it is upstream - # http://bugs.digium.com/view.php?id=14626 - # - epatch "${FILESDIR}"/1.6.0/${P}-sip-use-specified-port.patch || die "patch failed" - - # - # try to tame the custom build system a little so make likes it better - # patch credit: Diego E. 'Flameeyes' Pettenò <flameeyes@entoo.org> - # - epatch "${FILESDIR}"/1.6.0/${P}-parallelmake.patch || die "patch failed" - - # - # do not try to pass libraries in ldflags but use libs properly - # keeps NET-SNMP configure test from failing horribly on --as-needed - # patch credit: Diego E. 'Flameeyes' Pettenò <flameeyes@entoo.org> - # - epatch "${FILESDIR}"/1.6.0/${P}-toolcheck-libs-not-ldflags.patch || die "patch failed" - - # - # the build system didn't handle >= autoconf-2.62 before - # from upstream SVN commit rev 180946 by qwell - # - epatch "${FILESDIR}"/1.6.0/${P}-autoconf-263.patch || die "patch failed" - - # - # link UW-IMAP with Kerberos5 if necessary - # - epatch "${FILESDIR}"/1.6.0/${P}-imap-kerberos.patch || die "patch failed" - - AT_M4DIR=autoconf eautoreconf - - # parse modules list - if [[ -n "${ASTERISK_MODULES}" ]]; then - local x modules="$(get_available_modules)" - - einfo "Custom list of modules specified, checking..." - - use debug && { - einfo "Available modules: ${modules}" - einfo " Selected modules: ${ASTERISK_MODULES}" - } - - for x in ${ASTERISK_MODULES}; do - if [[ "${x}" = "-*" ]]; then - MODULES_LIST="" - else - if has ${x} ${modules} - then - MODULES_LIST="${MODULES_LIST} ${x}" - else - eerror "Unknown module: ${x}" - fi - fi - done - - export MODULES_LIST - fi -} - -src_compile() { - # - # start with configure - # - econf \ - --libdir="/usr/$(get_libdir)" \ - --localstatedir="/var" \ - --with-gsm=internal \ - --with-popt \ - --with-z \ - $(use_with alsa asound) \ - $(use_with caps cap) \ - $(use_with curl) \ - $(use_with dahdi pri) \ - $(use_with dahdi tonezone) \ - $(use_with dahdi) \ - $(use_with freetds tds) \ - $(use_with h323 h323 "/usr/share/openh323") \ - $(use_with h323 pwlib "/usr/share/pwlib") \ - $(use_with iconv) \ - $(use_with imap) \ - $(use_with jabber iksemel) \ - $(use_with misdn isdnnet) \ - $(use_with misdn suppserv) \ - $(use_with misdn) \ - $(use_with newt) \ - $(use_with odbc) \ - $(use_with oss) \ - $(use_with postgres) \ - $(use_with radius) \ - $(use_with snmp netsnmp) \ - $(use_with span spandsp) \ - $(use_with speex) \ - $(use_with speex speexdsp) \ - $(use_with sqlite sqlite3) \ - $(use_with ssl crypto) \ - $(use_with ssl) \ - $(use_with vorbis ogg) \ - $(use_with vorbis) || die "econf failed" - - # - # custom module filter - # run menuselect to evaluate the list of modules - # and rewrite the list afterwards - # - if [[ -n "${MODULES_LIST}" ]] - then - local mod category tmp_list failed_list - - ### - # run menuselect - - emake menuselect.makeopts || die "emake menuselect.makeopts failed" - - ### - # get list of modules with failed dependencies - - failed_list="$(awk -F= '/^MENUSELECT_DEPSFAILED=/{ print $3 }' menuselect.makeopts)" - - ### - # traverse our list of modules - - for category in app cdr codec format func pbx res; do - tmp_list="" - - # search list of modules for matching ones first... - for mod in ${MODULES_LIST}; do - # module is from current category? - if [[ "${mod/%_*}" = "${category}" ]] - then - # check menuselect thinks the dependencies are met - if has ${mod} ${failed_list} - then - eerror "${mod}: dependencies required to build this module are not met, NOT BUILDING!" - else - tmp_list="${tmp_list} ${mod}" - fi - fi - done - - use debug && echo "${category} tmp: ${tmp_list}" - - # replace the module list for $category with our custom one - if [[ -n "${tmp_list}" ]] - then - category="$(echo ${category} | tr '[:lower:]' '[:upper:]')" - sed -i -e "s:^\(MENUSELECT_${category}S?\):\1=${tmp_list}:" \ - menuselect.makeopts || die "failed to set list of ${category} applications" - fi - done - fi - - # - # fasten your seatbelts (and start praying) - # - if use h323 ; then - # emake one time to get h323 to make.... yea not "clean" but works - emake - fi - - emake || die "emake failed" -} - -src_install() { - # setup directory structure - # - mkdir -p "${D}"usr/lib/pkgconfig - - emake DESTDIR="${D}" install || die "emake install failed" - emake DESTDIR="${D}" samples || die "emake samples failed" - - # remove installed sample files if nosamples flag is set - if use nosamples; then - einfo "Skipping installation of sample files..." - rm -f "${D}"var/lib/asterisk/mohmp3/* - rm -f "${D}"var/lib/asterisk/sounds/demo-* - rm -f "${D}"var/lib/asterisk/agi-bin/* - else - einfo "Sample files have been installed" - fi - rm -rf "${D}"var/spool/asterisk/voicemail/default - - # move sample configuration files to doc directory - if is_ast10update || is_ast12update || is_ast14update; then - einfo "Updating from old (pre-1.6) asterisk version, new configuration files have been installed" - einfo "into "${ROOT}"etc/asterisk, use etc-update or dispatch-conf to update them" - fi - - einfo "Configuration samples have been moved to: "${ROOT}"/usr/share/doc/${PF}/conf" - insinto /usr/share/doc/${PF}/conf - doins "${D}"etc/asterisk/*.conf* - - # keep directories - keepdir /var/spool/asterisk/{system,tmp,meetme,monitor,dictate,voicemail} - keepdir /var/log/asterisk/{cdr-csv,cdr-custom} - - newinitd "${FILESDIR}"/1.6.0/asterisk.rc6 asterisk - newconfd "${FILESDIR}"/1.6.0/asterisk.confd asterisk - - # some people like to keep the sources around for custom patching - # copy the whole source tree to /usr/src/asterisk-${PVF} and run make clean there - if use keepsrc - then - einfo "keepsrc useflag enabled, copying source..." - dodir /usr/src - - cp -dPR "${S}" "${D}"/usr/src/${PF} || die "copying source tree failed" - - ebegin "running make clean..." - emake -C "${D}"/usr/src/${PF} clean >/dev/null || die "make clean failed" - eend $? - - einfo "Source files have been saved to "${ROOT}"usr/src/${PF}" - fi - - # install the upgrade documentation - # - dodoc README UPGRADE* BUGS CREDITS - - # install snmp mib files - # - if use snmp - then - insinto /usr/share/snmp/mibs/ - doins doc/digium-mib.txt doc/asterisk-mib.txt - fi -} - -pkg_preinst() { - enewgroup asterisk - enewuser asterisk -1 -1 /var/lib/asterisk "asterisk,dialout" -} - -pkg_postinst() { - ebegin "Fixing up permissions" - chown -R asterisk:asterisk "${ROOT}"var/log/asterisk - chmod -R u=rwX,g=rX,o= "${ROOT}"var/log/asterisk - - for x in lib run spool; do - chown -R asterisk:asterisk "${ROOT}"var/${x}/asterisk - chmod -R u=rwX,g=rwX,o= "${ROOT}"var/${x}/asterisk - done - - chown asterisk:asterisk "${ROOT}"etc/asterisk/ - chown asterisk:asterisk "${ROOT}"etc/asterisk/*.adsi - chown asterisk:asterisk "${ROOT}"etc/asterisk/extensions.ael - chmod u=rwX,g=rwX,o= "${ROOT}"etc/asterisk/ - chmod u=rwX,g=rwX,o= "${ROOT}"etc/asterisk/*.adsi - chmod u=rwX,g=rwX,o= "${ROOT}"etc/asterisk/extensions.ael - eend $? - - # - # Announcements, warnings, reminders... - # - einfo "Asterisk has been installed" - echo - elog "If you want to know more about asterisk, visit these sites:" - elog "http://www.asteriskdocs.org/" - elog "http://www.voip-info.org/wiki-Asterisk" - echo - elog "http://www.automated.it/guidetoasterisk.htm" - echo - elog "Gentoo VoIP IRC Channel:" - elog "#gentoo-voip @ irc.freenode.net" - echo - echo - - # - # Warning about 1.x -> 1.6 changes... - # - if is_ast10update || is_ast12update || is_ast14update; then - ewarn "" - ewarn "- Please read "${ROOT}"usr/share/doc/${PF}/UPGRADE.txt.bz2 before continuing" - ewarn "" - fi -} - -pkg_config() { - einfo "Do you want to reset file permissions and ownerships (y/N)?" - - read tmp - tmp="$(echo $tmp | tr '[:upper:]' '[:lower:]')" - - if [[ "$tmp" = "y" ]] ||\ - [[ "$tmp" = "yes" ]] - then - einfo "Resetting permissions to defaults..." - - for x in spool run lib log; do - chown -R asterisk:asterisk "${ROOT}"var/${x}/asterisk - chmod -R u=rwX,g=rwX,o= "${ROOT}"var/${x}/asterisk - done - - chown -R root:asterisk "${ROOT}"etc/asterisk - chmod -R u=rwX,g=rwX,o= "${ROOT}"etc/asterisk - - einfo "done" - else - einfo "skipping" - fi -} diff --git a/net-misc/asterisk/files/1.6.0/asterisk-1.6.0.6-dahdiras.patch b/net-misc/asterisk/files/1.6.0/asterisk-1.6.0.6-dahdiras.patch deleted file mode 100644 index 74f35394909c..000000000000 --- a/net-misc/asterisk/files/1.6.0/asterisk-1.6.0.6-dahdiras.patch +++ /dev/null @@ -1,19 +0,0 @@ -diff -uNr asterisk-1.6.0.6.ORIG/apps/app_dahdiras.c asterisk-1.6.0.6/apps/app_dahdiras.c ---- asterisk-1.6.0.6.ORIG/apps/app_dahdiras.c 2009-03-03 15:20:24.000000000 +0000 -+++ asterisk-1.6.0.6/apps/app_dahdiras.c 2009-02-24 18:05:03.000000000 +0000 -@@ -42,13 +42,13 @@ - #include <signal.h> - #endif /* __linux__ */ - -+#include <dahdi/user.h> -+ - #include <fcntl.h> - #ifdef HAVE_CAP - #include <sys/capability.h> - #endif /* HAVE_CAP */ - --#include <dahdi/user.h> -- - #include "asterisk/lock.h" - #include "asterisk/file.h" - #include "asterisk/channel.h" diff --git a/net-misc/asterisk/files/1.6.0/asterisk-1.6.0.6-sip-use-specified-port.patch b/net-misc/asterisk/files/1.6.0/asterisk-1.6.0.6-sip-use-specified-port.patch deleted file mode 100644 index bd55fe00656d..000000000000 --- a/net-misc/asterisk/files/1.6.0/asterisk-1.6.0.6-sip-use-specified-port.patch +++ /dev/null @@ -1,14 +0,0 @@ ---- branches/1.6.0/channels/chan_sip.c 2009/03/09 20:14:05 180718 -+++ branches/1.6.0/channels/chan_sip.c 2009/03/10 13:32:58 180799 -@@ -4175,6 +4175,11 @@ - } - res = create_addr_from_peer(dialog, peer); - unref_peer(peer); -+ if (!ast_strlen_zero(port)) { -+ if ((portno = atoi(port))) { -+ dialog->sa.sin_port = dialog->recv.sin_port = htons(portno); -+ } -+ } - return res; - } - diff --git a/net-misc/asterisk/files/1.6.0/asterisk-1.6.0.6-socket-details.patch b/net-misc/asterisk/files/1.6.0/asterisk-1.6.0.6-socket-details.patch deleted file mode 100644 index edbd6bf81f05..000000000000 --- a/net-misc/asterisk/files/1.6.0/asterisk-1.6.0.6-socket-details.patch +++ /dev/null @@ -1,69 +0,0 @@ ---- branches/1.6.0/channels/chan_sip.c 2009/03/02 23:15:51 179473 -+++ branches/1.6.0/channels/chan_sip.c 2009/03/09 20:14:05 180718 -@@ -2020,7 +2020,7 @@ - static const struct sockaddr_in *sip_real_dst(const struct sip_pvt *p); - static void build_via(struct sip_pvt *p); - static int create_addr_from_peer(struct sip_pvt *r, struct sip_peer *peer); --static int create_addr(struct sip_pvt *dialog, const char *opeer); -+static int create_addr(struct sip_pvt *dialog, const char *opeer, int newdialog); - static char *generate_random_string(char *buf, size_t size); - static void build_callid_pvt(struct sip_pvt *pvt); - static void build_callid_registry(struct sip_registry *reg, struct in_addr ourip, const char *fromdomain); -@@ -4149,7 +4149,7 @@ - /*! \brief create address structure from peer name - * Or, if peer not found, find it in the global DNS - * returns TRUE (-1) on failure, FALSE on success */ --static int create_addr(struct sip_pvt *dialog, const char *opeer) -+static int create_addr(struct sip_pvt *dialog, const char *opeer, int newdialog) - { - struct hostent *hp; - struct ast_hostent ahp; -@@ -4169,7 +4169,11 @@ - peer = find_peer(peername, NULL, 1, 0); - - if (peer) { -- int res = create_addr_from_peer(dialog, peer); -+ int res; -+ if (newdialog) { -+ dialog->socket.type = 0; -+ } -+ res = create_addr_from_peer(dialog, peer); - unref_peer(peer); - return res; - } -@@ -9549,7 +9553,7 @@ - p->outboundproxy = obproxy_get(p, NULL); - - /* Find address to hostname */ -- if (create_addr(p, r->hostname)) { -+ if (create_addr(p, r->hostname, 0)) { - /* we have what we hope is a temporary network error, - * probably DNS. We need to reschedule a registration try */ - sip_destroy(p); -@@ -14236,7 +14240,7 @@ - return CLI_FAILURE; - } - -- if (create_addr(p, a->argv[i])) { -+ if (create_addr(p, a->argv[i], 0)) { - /* Maybe they're not registered, etc. */ - sip_destroy(p); - ast_cli(a->fd, "Could not create address for '%s'\n", a->argv[i]); -@@ -16941,7 +16945,7 @@ - if ((peerorhost = strchr(uri, ':'))) { - *peerorhost++ = '\0'; - } -- create_addr(p, peerorhost); -+ create_addr(p, peerorhost, 0); - ast_string_field_set(p, theirtag, NULL); - for (pkt = p->packets; pkt; pkt = pkt->next) { - if (pkt->seqno == p->icseq && pkt->method == SIP_INVITE) { -@@ -20072,7 +20076,7 @@ - ext = extension (user part of URI) - dnid = destination of the call (applies to the To: header) - */ -- if (create_addr(p, host)) { -+ if (create_addr(p, host, 1)) { - *cause = AST_CAUSE_UNREGISTERED; - ast_debug(3, "Cant create SIP call - target device not registered\n"); - sip_destroy(p); diff --git a/net-misc/asterisk/files/1.6.0/asterisk-1.6.0.6-spandsp-api-change.patch b/net-misc/asterisk/files/1.6.0/asterisk-1.6.0.6-spandsp-api-change.patch deleted file mode 100644 index 9fcdf811d4b4..000000000000 --- a/net-misc/asterisk/files/1.6.0/asterisk-1.6.0.6-spandsp-api-change.patch +++ /dev/null @@ -1,188 +0,0 @@ -diff -uNr asterisk-1.6.0.6.ORIG/apps/app_fax.c asterisk-1.6.0.6/apps/app_fax.c ---- asterisk-1.6.0.6.ORIG/apps/app_fax.c 2009-03-20 13:47:53.000000000 +0000 -+++ asterisk-1.6.0.6/apps/app_fax.c 2009-03-20 13:48:56.000000000 +0000 -@@ -32,6 +32,7 @@ - #ifdef HAVE_SPANDSP_EXPOSE_H - #include <spandsp/expose.h> - #endif -+#include <spandsp/version.h> - - #include "asterisk/lock.h" - #include "asterisk/file.h" -@@ -160,6 +161,7 @@ - char buf[20]; - fax_session *s = (fax_session *) user_data; - t30_stats_t stat; -+ int pages_transferred; - - ast_debug(1, "Fax phase E handler. result=%d\n", result); - -@@ -185,7 +187,12 @@ - pbx_builtin_setvar_helper(s->chan, "FAXSTATUS", "SUCCESS"); - pbx_builtin_setvar_helper(s->chan, "FAXERROR", NULL); - pbx_builtin_setvar_helper(s->chan, "REMOTESTATIONID", far_ident); -- snprintf(buf, sizeof(buf), "%d", stat.pages_transferred); -+#if SPANDSP_RELEASE_DATE >= 20090220 -+ pages_transferred = (s->direction) ? stat.pages_tx : stat.pages_rx; -+#else -+ pages_transferred = stat.pages_transferred; -+#endif -+ snprintf(buf, sizeof(buf), "%d", pages_transferred); - pbx_builtin_setvar_helper(s->chan, "FAXPAGES", buf); - snprintf(buf, sizeof(buf), "%d", stat.y_resolution); - pbx_builtin_setvar_helper(s->chan, "FAXRESOLUTION", buf); -@@ -194,7 +201,7 @@ - - ast_debug(1, "Fax transmitted successfully.\n"); - ast_debug(1, " Remote station ID: %s\n", far_ident); -- ast_debug(1, " Pages transferred: %d\n", stat.pages_transferred); -+ ast_debug(1, " Pages transferred: %d\n", pages_transferred); - ast_debug(1, " Image resolution: %d x %d\n", stat.x_resolution, stat.y_resolution); - ast_debug(1, " Transfer Rate: %d\n", stat.bit_rate); - -@@ -214,7 +221,7 @@ - S_OR(s->chan->cid.cid_num, ""), - far_ident, - local_ident, -- stat.pages_transferred, -+ pages_transferred, - stat.y_resolution, - stat.bit_rate, - s->file_name); -@@ -313,6 +320,7 @@ - int original_read_fmt = AST_FORMAT_SLINEAR; - int original_write_fmt = AST_FORMAT_SLINEAR; - fax_state_t fax; -+ t30_state_t *t30state; - struct ast_dsp *dsp = NULL; - int detect_tone = 0; - struct ast_frame *inf = NULL; -@@ -321,6 +329,14 @@ - struct timeval now, start, state_change; - enum ast_control_t38 t38control; - -+#if SPANDSP_RELEASE_DATE >= 20081012 -+ /* for spandsp shaphots 0.0.6 and higher */ -+ t30state = &fax.t30; -+#else -+ /* for spandsp release 0.0.5 */ -+ t30state = &fax.t30_state; -+#endif -+ - original_read_fmt = s->chan->readformat; - if (original_read_fmt != AST_FORMAT_SLINEAR) { - res = ast_set_read_format(s->chan, AST_FORMAT_SLINEAR); -@@ -344,16 +360,16 @@ - - /* Setup logging */ - set_logging(&fax.logging); -- set_logging(&fax.t30_state.logging); -+ set_logging(&t30state->logging); - - /* Configure terminal */ -- set_local_info(&fax.t30_state, s); -- set_file(&fax.t30_state, s); -- set_ecm(&fax.t30_state, TRUE); -+ set_local_info(t30state, s); -+ set_file(t30state, s); -+ set_ecm(t30state, TRUE); - - fax_set_transmit_on_idle(&fax, TRUE); - -- t30_set_phase_e_handler(&fax.t30_state, phase_e_handler, s); -+ t30_set_phase_e_handler(t30state, phase_e_handler, s); - - if (s->t38state == T38_STATE_UNAVAILABLE) { - ast_debug(1, "T38 is unavailable on %s\n", s->chan->name); -@@ -418,9 +434,9 @@ - } - - /* Watchdog */ -- if (last_state != fax.t30_state.state) { -+ if (last_state != t30state->state) { - state_change = ast_tvnow(); -- last_state = fax.t30_state.state; -+ last_state = t30state->state; - } - } else if (inf->frametype == AST_FRAME_CONTROL && inf->subclass == AST_CONTROL_T38 && - inf->datalen == sizeof(enum ast_control_t38)) { -@@ -459,10 +475,10 @@ - by t30_terminate, display diagnostics and set status variables although no transmittion - has taken place yet. */ - if (res > 0) { -- t30_set_phase_e_handler(&fax.t30_state, NULL, NULL); -+ t30_set_phase_e_handler(t30state, NULL, NULL); - } - -- t30_terminate(&fax.t30_state); -+ t30_terminate(t30state); - fax_release(&fax); - - done: -@@ -489,6 +505,19 @@ - struct timeval now, start, state_change, last_frame; - enum ast_control_t38 t38control; - -+ t30_state_t *t30state; -+ t38_core_state_t *t38state; -+ -+#if SPANDSP_RELEASE_DATE >= 20081012 -+ /* for spandsp shaphots 0.0.6 and higher */ -+ t30state = &t38.t30; -+ t38state = &t38.t38_fe.t38; -+#else -+ /* for spandsp releases 0.0.5 */ -+ t30state = &t38.t30_state; -+ t38state = &t38.t38; -+#endif -+ - /* Initialize terminal */ - memset(&t38, 0, sizeof(t38)); - if (t38_terminal_init(&t38, s->caller_mode, t38_tx_packet_handler, s->chan) == NULL) { -@@ -498,15 +527,15 @@ - - /* Setup logging */ - set_logging(&t38.logging); -- set_logging(&t38.t30_state.logging); -- set_logging(&t38.t38.logging); -+ set_logging(&t30state->logging); -+ set_logging(&t38state->logging); - - /* Configure terminal */ -- set_local_info(&t38.t30_state, s); -- set_file(&t38.t30_state, s); -- set_ecm(&t38.t30_state, TRUE); -+ set_local_info(t30state, s); -+ set_file(t30state, s); -+ set_ecm(t30state, TRUE); - -- t30_set_phase_e_handler(&t38.t30_state, phase_e_handler, s); -+ t30_set_phase_e_handler(t30state, phase_e_handler, s); - - now = start = state_change = ast_tvnow(); - -@@ -532,12 +561,12 @@ - ast_debug(10, "frame %d/%d, len=%d\n", inf->frametype, inf->subclass, inf->datalen); - - if (inf->frametype == AST_FRAME_MODEM && inf->subclass == AST_MODEM_T38) { -- t38_core_rx_ifp_packet(&t38.t38, inf->data, inf->datalen, inf->seqno); -+ t38_core_rx_ifp_packet(t38state, inf->data, inf->datalen, inf->seqno); - - /* Watchdog */ -- if (last_state != t38.t30_state.state) { -+ if (last_state != t30state->state) { - state_change = ast_tvnow(); -- last_state = t38.t30_state.state; -+ last_state = t30state->state; - } - } else if (inf->frametype == AST_FRAME_CONTROL && inf->subclass == AST_CONTROL_T38 && - inf->datalen == sizeof(enum ast_control_t38)) { -@@ -567,7 +596,7 @@ - if (inf) - ast_frfree(inf); - -- t30_terminate(&t38.t30_state); -+ t30_terminate(t30state); - t38_terminal_release(&t38); - - return res; |