Errata

Asterisk: The Definitive Guide

Errata for Asterisk: The Definitive Guide

Submit your own errata for this product.

The errata list is a list of errors and their corrections that were found after the product was released.

The following errata were submitted by our customers and have not yet been approved or disproved by the author or editor. They solely represent the opinion of the customer.

Color Key: Serious technical mistake Minor technical mistake Language or formatting error Typo Question Note Update

Version Location Description Submitted by Date submitted
PDF Page 54
Code at the top

The code for RHLinux 64 bit if followed will result in an error because the dahdi linux program must be loaded BEFORE loading the tools program. The modified procedure is as follows:

$ cd linux
$ make
$ sudo make install
$ cd ../tools
$ ./configure --libdir=/usr/lib64
$ make
$ sudo make install
$ cd ..
$ sudo make config

This code loads the executable first then the tools and the issue loading the tools is solved.

Peter Beauregard  Oct 30, 2013 
Printed Page 56
Setting File Permissions - near the end - setting dahdi.rules

The test says "change the last line....". When doing this on Ubuntu server 14.04, it is the first line of the file which needs to be changed, not the last.

William Colls  Jul 07, 2014 
PDF, Mobi Page 58
Tip section at the bottom of the page

The tip states:
We are specifying the full path to the asterisk binary, but if you modify your PATH system variable to include the /usr/sbin directory you don?t need to specify the full path. See ?Adding a system user? on page 44 for information about modifying the $PATH environment variable.

As far as I can see, this info isn't on page 44 (or any other page).
Page numbers here are for the PDF version.
Same problem in the Mobi file, but I'm not sure of the page numbers.

Phil Sharpe  May 23, 2013 
ePub Page 87
Tip around Figure 3-1

"minimum screen size ... is 80x27 pixels" should be "characters" or "cells".

Jörg Sonnenberger  Jul 08, 2015 
Printed Page 103
IPv6 in sip.conf

The book says:
":: Bind to all IPv4 and IPv6 addresses"

But it does not mention the following:
"Note that using bindaddr=:: will show only a single IPv6 socket in netstat. IPv4 is supported at the same time using IPv4-mapped IPv6 addresses."

I think there is a big difference between binding all IPv4 addresses and binding all mapped IPv4 addresses.

Lukas Hauser  Jan 28, 2015 
Printed Page 110
6th paragraph

This paragraph, beginning, "Following the type option, we've set host to dynamic..." is technically incorrect. The example it refers to on page 109 does not contain a 'type=dynamic' entry.

Proposed solution: Delete this paragraph entirely.

bgilmer  Dec 02, 2016 
PDF Page 111
botton

On the botton legend:

14. The LocalSets context has been used in this example in order to simplify things. In a production environment, you would typically

The sentence is incomplete! Would typically what?

Alberto Lorenzo Pulido  Jun 07, 2013 
ePub Page 128
Password tip

The tip for generating a random password uses /dev/random, which is nowadays considered bad practice. It provides no security advantage over /dev/urandom, except to waste resources by "draining" the entropy pool. It might be useful to also reference pwgen or apg, which can be often found.

Jörg Sonnenberger  Jul 08, 2015 
Printed Page 130
Second and third lines of code sample from the top of the page

The example lines with the errors are:

exten => 100,1,Dial(SIP/0000FFFF0001)
exten => 101,1,Dial(SIP/0000FFFF0002)

These lines are supposed to be from sample code that was previously entered from page 118 under the section, "A Basic Dialplan to Test Your Devices". On page 118, the lines above are as follows:

exten => 101,1,Dial(SIP/0000FFFF0001)
exten => 102,1,Dial(SIP/0000FFFF0002)

The original example makes a lot more sense, and so I would suggest the following.

Solution:
Change the second and third lines of the sample code near the top of pahge 130 to:

exten => 101,1,Dial(SIP/0000FFFF0001)
exten => 102,1,Dial(SIP/0000FFFF0002)

bgilmer  Dec 03, 2016 
PDF Page 439
In the box, 4rth paragraph

Shouldn't

readsql=SELECT pin,status FROM ast_hotdesk WHERE extension = '${E}'

be instead

readsql=SELECT pin,status FROM ast_hotdesk WHERE extension = '${ARG1}'

since inside the func_odbc.conf the variable ${E} is not available?

Shafique Jamal  Dec 19, 2013 
PDF Page 442
In the box, code under [SQL]

If you use the ${SQL_ESC()} function to escape all the sql that you send to the GENERIC_SQL function, then you won't be able to do something like WHERE column='m', because any way you do that (e.g. WHERE column='m'; or WHERE column=\'m\') the quotes will show up twice. It is better to do the escaping outside of the func_odbc.conf file.

Shafique Jamal  Dec 20, 2013 
PDF Page 443
In the box, 2nd paragraph

You have:

GENERIC_SSQL()

Shouldn't it be

GENERIC_SQL()

?

Shafique Jamal  Dec 19, 2013 
PDF Page 459
last paragraph - the part with the SQL commands to create the cdr table

The line

calldate datetime NOT NULL default '0000-00-00 00:00:00',

is not consistent with table 24-2. Instead, shouldn't you have the following lines:

start datetime NOT NULL default '0000-00-00 00:00:00',
answer datetime NOT NULL default '0000-00-00 00:00:00',
end datetime NOT NULL default '0000-00-00 00:00:00',

?

Shafique Jamal  Dec 19, 2013 
Printed Page 468
1st paragraph

This table structure definition doesn't appear to work with Digium's DPMA when fetching voicemails. The only way I was able to get the phone interface to actually fetch voicemails without throwing errors was to add the keywords NOT NULL next to the label field definition.

Currently the line reads:

label varchar(30),

Suggested change:

label varchar(30) NOT NULL,

David Martin  Feb 22, 2014 
Other Digital Version 999
Table 24.2. Default CDR fields

Noticed today while doing some review, that some fields are missing from the table on CDR records. As of 1.8 the values have existed, but not been documented in the CDR() function.

These missing fields include:

* linkedid
* sequence
* peeraccount

The linkedid is a CDR field that is based on the uniqueid, but remains static across other channels such as transfers and dials. Use of the linkedid allows grouping of multiple CDR records.

The sequence field can be used along with the linkedid and uniqueid fields in order to uniquely identify a CDR from a set.

I have no idea what peeraccount does...

Leif Madsen
Leif Madsen
 
Mar 20, 2013