[asterisk-commits] tilghman: branch 1.6.1 r171190 - in /branches/1.6.1: ./ channels/chan_oss.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Sun Jan 25 18:04:28 CST 2009


Author: tilghman
Date: Sun Jan 25 18:04:28 2009
New Revision: 171190

URL: http://svn.digium.com/svn-view/asterisk?view=rev&rev=171190
Log:
Merged revisions 171188 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/trunk

................
  r171188 | tilghman | 2009-01-25 17:58:00 -0600 (Sun, 25 Jan 2009) | 13 lines
  
  Merged revisions 171187 via svnmerge from 
  https://origsvn.digium.com/svn/asterisk/branches/1.4
  
  ........
    r171187 | tilghman | 2009-01-25 17:44:01 -0600 (Sun, 25 Jan 2009) | 6 lines
    
    Correctly track the hookstate
    (closes issue #13686)
     Reported by: itiliti
     Patches: 
           20081013__bug13686.diff.txt uploaded by Corydon76 (license 14)
  ........
................

Modified:
    branches/1.6.1/   (props changed)
    branches/1.6.1/channels/chan_oss.c

Propchange: branches/1.6.1/
------------------------------------------------------------------------------
Binary property 'trunk-merged' - no diff available.

Modified: branches/1.6.1/channels/chan_oss.c
URL: http://svn.digium.com/svn-view/asterisk/branches/1.6.1/channels/chan_oss.c?view=diff&rev=171190&r1=171189&r2=171190
==============================================================================
--- branches/1.6.1/channels/chan_oss.c (original)
+++ branches/1.6.1/channels/chan_oss.c Sun Jan 25 18:04:28 2009
@@ -255,9 +255,9 @@
 	int total_blocks;			/*!< total blocks in the output device */
 	int sounddev;
 	enum { M_UNSET, M_FULL, M_READ, M_WRITE } duplex;
-	int autoanswer;
-	int autohangup;
-	int hookstate;
+	int autoanswer;             /*!< Boolean: whether to answer the immediately upon calling */
+	int autohangup;             /*!< Boolean: whether to hangup the call when the remote end hangs up */
+	int hookstate;              /*!< Boolean: 1 if offhook; 0 if onhook */
 	char *mixer_cmd;			/*!< initial command to issue to the mixer */
 	unsigned int queuesize;		/*!< max fragments in queue */
 	unsigned int frags;			/*!< parameter for SETFRAGMENT */
@@ -289,8 +289,8 @@
 	char ext[AST_MAX_EXTENSION];
 	char ctx[AST_MAX_CONTEXT];
 	char language[MAX_LANGUAGE];
-	char cid_name[256];			/*XXX */
-	char cid_num[256];			/*XXX */
+	char cid_name[256];         /*!< Initial CallerID name */
+	char cid_num[256];          /*!< Initial CallerID number  */
 	char mohinterpret[MAX_MUSICCLASS];
 
 	/*! buffers used in oss_write */
@@ -332,8 +332,7 @@
 
 static int setformat(struct chan_oss_pvt *o, int mode);
 
-static struct ast_channel *oss_request(const char *type, int format, void *data
-, int *cause);
+static struct ast_channel *oss_request(const char *type, int format, void *data, int *cause);
 static int oss_digit_begin(struct ast_channel *c, char digit);
 static int oss_digit_end(struct ast_channel *c, char digit, unsigned int duration);
 static int oss_text(struct ast_channel *c, const char *text);
@@ -622,6 +621,7 @@
 		f.frametype = AST_FRAME_CONTROL;
 		f.subclass = AST_CONTROL_ANSWER;
 		ast_queue_frame(c, &f);
+		o->hookstate = 1;
 	} else {
 		ast_verbose("<< Type 'answer' to answer, or use 'autoanswer' for future calls >> \n");
 		f.frametype = AST_FRAME_CONTROL;
@@ -637,8 +637,10 @@
  */
 static int oss_answer(struct ast_channel *c)
 {
+	struct chan_oss_pvt *o = c->tech_pvt;
 	ast_verbose(" << Console call has been answered >> \n");
 	ast_setstate(c, AST_STATE_UP);
+	o->hookstate = 1;
 	return 0;
 }
 
@@ -821,7 +823,6 @@
 			ast_log(LOG_WARNING, "Unable to start PBX on %s\n", c->name);
 			ast_hangup(c);
 			o->owner = c = NULL;
-			/* XXX what about the channel itself ? */
 		}
 	}
 	console_video_start(get_video_desc(c), c); /* XXX cleanup */
@@ -1067,7 +1068,7 @@
 		return CLI_FAILURE;
 	}
 	o->hookstate = 0;
-	if (o->owner)				/* XXX must be true, right ? */
+	if (o->owner)
 		ast_queue_frame(o->owner, &f);
 	return CLI_SUCCESS;
 }
@@ -1480,7 +1481,7 @@
 		close(o->sounddev);
 		if (o->owner)
 			ast_softhangup(o->owner, AST_SOFTHANGUP_APPUNLOAD);
-		if (o->owner)			/* XXX how ??? */
+		if (o->owner)
 			return -1;
 		next = o->next;
 		ast_free(o->name);




More information about the asterisk-commits mailing list