asterisk 1.8 made some API changes which have broken appkonference;
if you need conferences in asterisk the simplest option is probably
to switch to ConfBridge instead; this was added in 1.6.2 and is
fully internal to Asterisk (as opposed to the old MeetMe system
which used a kernel module to mix audio and as a clocking source;
this wasn't supported on OpenBSD).

example:
exten => *91,1,Answer
exten => *91,n,ConfBridge(123,c,M)

more info:
http://www.voip-info.org/wiki/view/Asterisk+cmd+ConfBridge

if you need some feature that's only possilbe with appkonference,
you could try the diff below which updates to 1.5 and adds a diff
I tracked down for 1.8 support (tested lightly on amd64).

Index: Makefile
===================================================================
RCS file: /cvs/ports/telephony/appkonference/Makefile,v
retrieving revision 1.5
diff -u -p -r1.5 Makefile
--- Makefile    20 Nov 2010 19:56:47 -0000      1.5
+++ Makefile    22 Jan 2011 20:29:46 -0000
@@ -3,9 +3,8 @@
 SHARED_ONLY=   Yes
 COMMENT=       conferencing application for asterisk
 
-V=             1.2
+V=             1.5
 DISTNAME=      appkonference-$V
-REVISION=      0
 
 CATEGORIES=    telephony
 
@@ -23,7 +22,7 @@ NO_REGRESS=   Yes
 USE_GMAKE=     Yes
 
 BUILD_DEPENDS= ${RUN_DEPENDS}
-RUN_DEPENDS=   telephony/asterisk>=1.6
+RUN_DEPENDS=   telephony/asterisk>=1.8,<1.9
 
 MAKE_ENV+=     LOCALBASE=${LOCALBASE} \
                ASTERISK_INCLUDE_DIR=${LOCALBASE}/include
Index: distinfo
===================================================================
RCS file: /cvs/ports/telephony/appkonference/distinfo,v
retrieving revision 1.2
diff -u -p -r1.2 distinfo
--- distinfo    13 Dec 2009 12:52:32 -0000      1.2
+++ distinfo    22 Jan 2011 20:29:46 -0000
@@ -1,5 +1,5 @@
-MD5 (appkonference-1.2.tar.gz) = C8Nxp8X0W8mgyzJE/e/t7w==
-RMD160 (appkonference-1.2.tar.gz) = owDW6KAbOGHh0tJKI86pQtNzP/0=
-SHA1 (appkonference-1.2.tar.gz) = mE5vcMlNmrUM4QMXEKj+Ynb+ltI=
-SHA256 (appkonference-1.2.tar.gz) = 
lyjOcwDKqvNluS0LY4pEV7JviNZ0AE49X4VsF793gKg=
-SIZE (appkonference-1.2.tar.gz) = 170127
+MD5 (appkonference-1.5.tar.gz) = OhFqcaCPI871EPoLR9cFyw==
+RMD160 (appkonference-1.5.tar.gz) = N2x81Zq3CZHmdD3AMDET8EHxPcE=
+SHA1 (appkonference-1.5.tar.gz) = Qwf7j2tkErGB7JifSzhltpBGRIo=
+SHA256 (appkonference-1.5.tar.gz) = 
ZHDMOLB6FLJ5k7wealxjaUOuNufiOFo+E2s7xVqHryc=
+SIZE (appkonference-1.5.tar.gz) = 186882
Index: patches/patch-Makefile
===================================================================
RCS file: /cvs/ports/telephony/appkonference/patches/patch-Makefile,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 patch-Makefile
--- patches/patch-Makefile      13 Dec 2009 12:24:49 -0000      1.1.1.1
+++ patches/patch-Makefile      22 Jan 2011 20:29:46 -0000
@@ -1,7 +1,7 @@
 $OpenBSD: patch-Makefile,v 1.1.1.1 2009/12/13 12:24:49 sthen Exp $
---- konference/Makefile.orig   Wed Jul 22 16:27:32 2009
-+++ konference/Makefile        Mon Sep 21 22:35:02 2009
-@@ -60,7 +60,7 @@ INSTALL = install
+--- konference/Makefile.orig   Wed Aug 18 17:02:38 2010
++++ konference/Makefile        Sat Jan 22 20:19:21 2011
+@@ -66,7 +66,7 @@ INSTALL = install
  INCLUDE = -I$(ASTERISK_INCLUDE_DIR)
  DEBUG := -g
  
@@ -10,7 +10,7 @@ $OpenBSD: patch-Makefile,v 1.1.1.1 2009/
  CPPFLAGS = $(INCLUDE) -D_REENTRANT -D_GNU_SOURCE -DRELEASE=\"$(RELEASE)\"
  #CFLAGS += -O2
  #CFLAGS += -O3 -march=pentium3 -msse -mfpmath=sse,387 -ffast-math
-@@ -72,7 +72,7 @@ CPPFLAGS = $(INCLUDE) -D_REENTRANT -D_GNU_SOURCE -DREL
+@@ -78,7 +78,7 @@ CPPFLAGS = $(INCLUDE) -D_REENTRANT -D_GNU_SOURCE -DREL
  # adding -msse -mfpmath=sse has little effect.
  #CFLAGS += -O3 -msse -mfpmath=sse
  #CFLAGS += $(shell if $(CC) -march=$(PROC) -S -o /dev/null -xc /dev/null 
>/dev/null 2>&1; then echo "-march=$(PROC)"; fi)
@@ -19,7 +19,7 @@ $OpenBSD: patch-Makefile,v 1.1.1.1 2009/
  CFLAGS += -fPIC
  CPPFLAGS += -DCRYPTO
  CPPFLAGS += -DCHANNEL_TABLE_SIZE=$(CHANNEL_TABLE_SIZE)
-@@ -116,7 +116,7 @@ OSARCH=$(shell uname -s)
+@@ -137,7 +137,7 @@ OSARCH=$(shell uname -s)
  ifeq (${OSARCH},Darwin)
  SOLINK=-dynamic -bundle -undefined suppress -force_flat_namespace
  else
@@ -28,7 +28,7 @@ $OpenBSD: patch-Makefile,v 1.1.1.1 2009/
  endif
  
  DEPS += $(subst .o,.d,$(OBJS))
-@@ -136,7 +136,7 @@ distclean: clean
+@@ -157,7 +157,7 @@ distclean: clean
        $(RM) $(TARGET)
  
  $(TARGET): $(OBJS)
Index: patches/patch-konference_conference_c
===================================================================
RCS file: patches/patch-konference_conference_c
diff -N patches/patch-konference_conference_c
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-konference_conference_c       22 Jan 2011 20:29:46 -0000
@@ -0,0 +1,58 @@
+$OpenBSD$
+
+asterisk 1.8 support; https://gist.github.com/661206
+
+--- konference/conference.c.orig       Wed Aug 18 15:56:23 2010
++++ konference/conference.c    Sat Jan 22 20:19:21 2011
+@@ -1213,7 +1213,7 @@ void remove_member( struct ast_conf_member* member, st
+ #endif
+       ast_rwlock_unlock( &conf->lock );
+ 
+-      DEBUG("removed member from conference, name => %s, remaining => %d\n", 
member->conf_name, membercount) ;
++      DEBUG("removed member from conference, name => %s, remaining => %d\n", 
conf->name, membercount) ;
+ 
+       // remove member from channel table
+       if ( member->bucket != NULL )
+@@ -1221,7 +1221,7 @@ void remove_member( struct ast_conf_member* member, st
+               AST_LIST_LOCK (member->bucket ) ;
+               AST_LIST_REMOVE (member->bucket, member, hash_entry) ;
+               AST_LIST_UNLOCK (member->bucket ) ;
+-              DEBUG("Removed %s from the channel table, bucket => %ld\n", 
member->chan->name, member->bucket - channel_table) ;
++              DEBUG("Removed %s from the channel table, bucket => %d\n", 
member->chan->name, member->bucket - channel_table) ;
+       }
+ 
+       // output to manager...
+@@ -1245,8 +1245,8 @@ void remove_member( struct ast_conf_member* member, st
+               member->id,
+               member->flags,
+               member->chan->name,
+-              member->chan->cid.cid_num ? member->chan->cid.cid_num : 
"unknown",
+-              member->chan->cid.cid_name ? member->chan->cid.cid_name: 
"unknown",
++              member->chan->caller.id.number.str ? 
member->chan->caller.id.number.str : "unknown",
++              member->chan->caller.id.name.str ? 
member->chan->caller.id.name.str: "unknown",
+               tt,
+               moderators,
+               membercount
+@@ -1469,8 +1469,8 @@ int manager_conference_list( struct mansession *s, con
+                                               conf->name,
+                                               member->id,
+                                               member->chan->name,
+-                                              member->chan->cid.cid_num ? 
member->chan->cid.cid_num : "unknown",
+-                                              member->chan->cid.cid_name ? 
member->chan->cid.cid_name : "unknown",
++                                              
member->chan->caller.id.number.str ? member->chan->caller.id.number.str : 
"unknown",
++                                              
member->chan->caller.id.name.str ? member->chan->caller.id.name.str : "unknown",
+                                               member->mute_audio ? "YES" : 
"NO",
+ #ifdef        VIDEO
+                                               member->mute_video ? "YES" : 
"NO",
+@@ -2081,9 +2081,11 @@ static void do_VAD_switching(struct ast_conference *co
+             member != NULL ;
+             member = member->next )
+       {
++#if ( SILDET == 2 )
+               // If a member connects via telephone, they don't have video
+               if ( member->via_telephone )
+                       continue;
++#endif
+ 
+               // We check for no VAD switching, video-muted or camera disabled
+               // If yes, this member will not be considered as a candidate 
for switching
Index: patches/patch-konference_frame_c
===================================================================
RCS file: patches/patch-konference_frame_c
diff -N patches/patch-konference_frame_c
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-konference_frame_c    22 Jan 2011 20:29:46 -0000
@@ -0,0 +1,42 @@
+$OpenBSD$
+
+asterisk 1.8 support; https://gist.github.com/661206
+
+--- konference/frame.c.orig    Tue Aug 17 15:58:07 2010
++++ konference/frame.c Sat Jan 22 20:19:21 2011
+@@ -398,9 +398,9 @@ struct ast_frame* convert_frame_to_slinear( struct ast
+       // the normal translation would free it anyway, so
+       // we'll just pretend we free'd and malloc'd a new one.
+ #ifndef       AC_USE_G722
+-      if ( fr->subclass == AST_FORMAT_SLINEAR )
++      if ( fr->subclass.integer == AST_FORMAT_SLINEAR )
+ #else
+-      if ( fr->subclass == AST_FORMAT_SLINEAR16 )
++      if ( fr->subclass.integer == AST_FORMAT_SLINEAR16 )
+ #endif
+               return fr ;
+ 
+@@ -433,9 +433,9 @@ struct ast_frame* convert_frame_from_slinear( struct a
+ 
+       // if the frame is not slinear, return an error
+ #ifndef       AC_USE_G722
+-      if ( fr->subclass != AST_FORMAT_SLINEAR )
++      if ( fr->subclass.integer != AST_FORMAT_SLINEAR )
+ #else
+-      if ( fr->subclass != AST_FORMAT_SLINEAR16 )
++      if ( fr->subclass.integer != AST_FORMAT_SLINEAR16 )
+ #endif
+       {
+               ast_log( LOG_ERROR, "unable to translate non-slinear frame\n" ) 
;
+@@ -647,9 +647,9 @@ struct ast_frame* create_slinear_frame( char* data )
+ 
+       f->frametype = AST_FRAME_VOICE ;
+ #ifndef       AC_USE_G722
+-      f->subclass = AST_FORMAT_SLINEAR ;
++      f->subclass.integer = AST_FORMAT_SLINEAR ;
+ #else
+-      f->subclass = AST_FORMAT_SLINEAR16 ;
++      f->subclass.integer = AST_FORMAT_SLINEAR16 ;
+ #endif
+       f->samples = AST_CONF_BLOCK_SAMPLES ;
+       f->offset = AST_FRIENDLY_OFFSET ;
Index: patches/patch-konference_member_c
===================================================================
RCS file: patches/patch-konference_member_c
diff -N patches/patch-konference_member_c
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-konference_member_c   22 Jan 2011 20:29:46 -0000
@@ -0,0 +1,147 @@
+$OpenBSD$
+
+asterisk 1.8 support; https://gist.github.com/661206
+
+--- konference/member.c.orig   Tue Aug 17 19:16:35 2010
++++ konference/member.c        Sat Jan 22 20:19:21 2011
+@@ -49,7 +49,7 @@ static int process_incoming(struct ast_conf_member *me
+               if (member->dtmf_switch)
+               {
+                       ast_mutex_lock( &member->lock ) ;
+-                      switch (f->subclass) {
++                      switch (f->subclass.integer) {
+                       case '0' :member->req_id=0;
+                               break;
+                       case '1' :member->req_id=1;
+@@ -107,9 +107,9 @@ static int process_incoming(struct ast_conf_member *me
+                               member->type,
+                               member->chan->uniqueid,
+                               member->chan->name,
+-                              member->chan->cid.cid_num ? 
member->chan->cid.cid_num : "unknown",
+-                              member->chan->cid.cid_name ? 
member->chan->cid.cid_name : "unknown",
+-                              f->subclass,
++                              member->chan->caller.id.number.str ? 
member->chan->caller.id.number.str : "unknown",
++                              member->chan->caller.id.name.str ? 
member->chan->caller.id.name.str : "unknown",
++                              f->subclass.integer,
+                               conf->membercount,
+                               member->flags,
+                               member->mute_audio
+@@ -207,9 +207,9 @@ static int process_incoming(struct ast_conf_member *me
+               if (
+                       member->dsp != NULL
+ #ifndef       AC_USE_G722
+-                      && f->subclass == AST_FORMAT_SLINEAR
++                      && f->subclass.integer == AST_FORMAT_SLINEAR
+ #else
+-                      && f->subclass == AST_FORMAT_SLINEAR16
++                      && f->subclass.integer == AST_FORMAT_SLINEAR16
+ #endif
+                       && f->datalen == AST_CONF_FRAME_DATA_SIZE
+                       )
+@@ -233,9 +233,11 @@ static int process_incoming(struct ast_conf_member *me
+                                               manager_event(
+                                                       EVENT_FLAG_CALL,
+                                                       "ConferenceState",
++                                                      "ConferenceName: %s\r\n"
+                                                       "Channel: %s\r\n"
+                                                       "Flags: %s\r\n"
+                                                       "State: %s\r\n",
++                                                      conf->name,
+                                                       member->chan->name,
+                                                       member->flags,
+                                                       "silent"
+@@ -254,9 +256,11 @@ static int process_incoming(struct ast_conf_member *me
+                                       manager_event(
+                                               EVENT_FLAG_CALL,
+                                               "ConferenceState",
++                                              "ConferenceName: %s\r\n"
+                                               "Channel: %s\r\n"
+                                               "Flags: %s\r\n"
+                                               "State: %s\r\n",
++                                              conf->name,
+                                               member->chan->name,
+                                               member->flags,
+                                               "speaking"
+@@ -288,7 +292,7 @@ static int process_incoming(struct ast_conf_member *me
+ #endif
+       else if (
+               f->frametype == AST_FRAME_CONTROL
+-              && f->subclass == AST_CONTROL_HANGUP
++              && f->subclass.integer == AST_CONTROL_HANGUP
+               )
+       {
+               // hangup received
+@@ -303,7 +307,7 @@ static int process_incoming(struct ast_conf_member *me
+ #ifdef        VIDEO
+       else if (
+               f->frametype == AST_FRAME_CONTROL
+-              && f->subclass == AST_CONTROL_VIDUPDATE
++              && f->subclass.integer == AST_CONTROL_VIDUPDATE
+               )
+       {
+               // say we have switched to cause a FIR to
+@@ -761,8 +765,8 @@ int member_exec( struct ast_channel* chan, void* data 
+               member->id,
+               member->flags,
+               member->chan->name,
+-              member->chan->cid.cid_num ? member->chan->cid.cid_num : 
"unknown",
+-              member->chan->cid.cid_name ? member->chan->cid.cid_name: 
"unknown",
++              member->chan->caller.id.number.str ? 
member->chan->caller.id.number.str : "unknown",
++              member->chan->caller.id.name.str ? 
member->chan->caller.id.name.str: "unknown",
+               conf->stats.moderators,
+               conf->membercount
+       ) ;
+@@ -2129,7 +2133,7 @@ DEBUG("SMOOTH:Feeding frame into inSmoother, timestamp
+               while( ( sfr = ast_smoother_read( member->inSmoother ) ) ){
+ 
+                       ++i;
+-DEBUG("\treading new frame [%d] from smoother, inFramesCount[%d], 
\n\tsfr->frametype -> %d , sfr->subclass -> %d , sfr->datalen => %d 
sfr->samples => %d\n", i , member->inFramesCount , sfr->frametype, 
sfr->subclass, sfr->datalen, sfr->samples) ;
++DEBUG("\treading new frame [%d] from smoother, inFramesCount[%d], 
\n\tsfr->frametype -> %d , sfr->subclass.integer -> %d , sfr->datalen => %d 
sfr->samples => %d\n", i , member->inFramesCount , sfr->frametype, 
sfr->subclass.integer, sfr->datalen, sfr->samples) ;
+ DEBUG("SMOOTH:Reading frame from inSmoother, i=>%d, timestamp => 
%ld.%ld\n",i, sfr->delivery.tv_sec, sfr->delivery.tv_usec);
+                       conf_frame* cfr = create_conf_frame( member, 
member->inFrames, sfr ) ;
+                       if ( cfr == NULL )
+@@ -2763,10 +2767,10 @@ int ast_packer_feed(struct ast_packer *s, const struct
+               return -1;
+       }
+       if (!s->format) {
+-              s->format = f->subclass;
++              s->format = f->subclass.integer;
+               s->samples=0;
+-      } else if (s->format != f->subclass) {
+-              ast_log(LOG_WARNING, "Packer was working on %d format frames, 
now trying to feed %d?\n", s->format, f->subclass);
++      } else if (s->format != f->subclass.integer) {
++              ast_log(LOG_WARNING, "Packer was working on %d format frames, 
now trying to feed %d?\n", s->format, f->subclass.integer);
+               return -1;
+       }
+       if (s->len + f->datalen > PACKER_SIZE) {
+@@ -2815,7 +2819,7 @@ struct ast_frame *ast_packer_read(struct ast_packer *s
+               len = s->len;
+       /* Make frame */
+       s->f.frametype = AST_FRAME_VOICE;
+-      s->f.subclass = s->format;
++      s->f.subclass.integer = s->format;
+       SETDATA2PTR(s->f.data, s->framedata + AST_FRIENDLY_OFFSET);
+       s->f.offset = AST_FRIENDLY_OFFSET;
+       s->f.datalen = len;
+@@ -3029,7 +3033,7 @@ int queue_frame_for_speaker(
+               // short-cut pointer to the ast_frame
+               qf = frame->fr ;
+ 
+-              if ( (qf->subclass == member->write_format) && 
(member->listen_volume == 0) )
++              if ( (qf->subclass.integer == member->write_format) && 
(member->listen_volume == 0) )
+               {
+                       // frame is already in correct format, so just queue it
+ 
+@@ -3377,8 +3381,11 @@ int is_video_eligible(struct ast_conf_member *member)
+ {
+       if ( member == NULL )
+               return 0;
+-      
++#if ( SILDET == 2 )
+       return !member->no_camera && !member->mute_video && 
!member->via_telephone;
++#else
++      return !member->no_camera && !member->mute_video;
++#endif
+ }
+ 
+ // Member start and stop video methods


Reply via email to