Browse code

Merge pull request #2375 from sergey-safarov/dipatcher-frmating

dipatcher: dockbook and config formatting

Daniel-Constantin Mierla authored on 29/06/2020 05:48:13 • GitHub committed on 29/06/2020 05:48:13
Showing 4 changed files
... ...
@@ -209,36 +209,39 @@ route[REQINIT] {
209 209
 
210 210
 # Handle requests within SIP dialogs
211 211
 route[WITHINDLG] {
212
-	if (has_totag()) {
213
-		# sequential request withing a dialog should
214
-		# take the path determined by record-routing
215
-		if (loose_route()) {
216
-			if (is_method("BYE")) {
217
-				setflag(FLT_ACC); # do accounting ...
218
-				setflag(FLT_ACCFAILED); # ... even if the transaction fails
219
-			}
220
-			route(RELAY);
212
+	if (!has_totag()) {
213
+		return;
214
+	}
215
+
216
+	# sequential request withing a dialog should
217
+	# take the path determined by record-routing
218
+	if (loose_route()) {
219
+		if (is_method("BYE")) {
220
+			setflag(FLT_ACC); # do accounting ...
221
+			setflag(FLT_ACCFAILED); # ... even if the transaction fails
222
+		}
223
+		route(RELAY);
224
+	}
225
+
226
+	if (is_method("SUBSCRIBE") && uri == myself) {
227
+		# in-dialog subscribe requests
228
+		route(PRESENCE);
229
+	}
230
+
231
+	if ( is_method("ACK") ) {
232
+		if ( t_check_trans() ) {
233
+			# non loose-route, but stateful ACK;
234
+			# must be ACK after a 487 or e.g. 404 from upstream server
235
+			t_relay();
236
+			exit;
221 237
 		} else {
222
-			if (is_method("SUBSCRIBE") && uri == myself) {
223
-				# in-dialog subscribe requests
224
-				route(PRESENCE);
225
-				exit;
226
-			}
227
-			if ( is_method("ACK") ) {
228
-				if ( t_check_trans() ) {
229
-					# non loose-route, but stateful ACK;
230
-					# must be ACK after a 487 or e.g. 404 from upstream server
231
-					t_relay();
232
-					exit;
233
-				} else {
234
-					# ACK without matching transaction ... ignore and discard.
235
-					exit;
236
-				}
237
-			}
238
-			sl_send_reply("404","Not here");
238
+			# ACK without matching transaction ... ignore and discard.
239
+			exit;
239 240
 		}
240
-		exit;
241 241
 	}
242
+
243
+	sl_send_reply("404","Not here");
244
+	exit;
242 245
 }
243 246
 
244 247
 # Handle SIP registrations
... ...
@@ -6,97 +6,98 @@
6 6
 <!ENTITY % docentities SYSTEM "../../../../doc/docbook/entities.xml">
7 7
 %docentities;
8 8
 
9
+<!ENTITY % xinclude SYSTEM "http://www.docbook.org/xml/4.4/xinclude.mod" >
10
+%xinclude;
11
+
9 12
 ]>
10 13
 
11 14
 <book xmlns:xi="http://www.w3.org/2001/XInclude">
12
-    <bookinfo>
13
-	<title>DISPATCHER Module</title>
14
-	<productname class="trade">&kamailioname;</productname>
15
-	<authorgroup>
16
-	    <author>
17
-		<firstname>Daniel-Constantin</firstname>
18
-		<surname>Mierla</surname>
19
-		<email>miconda@gmail.com</email>
20
-	    </author>
21
-	    <editor>
22
-		<firstname>Daniel-Constantin</firstname>
23
-		<surname>Mierla</surname>
24
-		<email>miconda@gmail.com</email>
25
-	    </editor>
26
-            <editor>
27
-                <firstname>Carsten</firstname>
28
-                <surname>Bock</surname>
29
-                <affiliation><orgname>ng-voice GmbH</orgname></affiliation>
30
-                <address>
31
-                <email>carsten@ng-voice.com</email>
32
-                </address>
33
-            </editor>
34
-            <editor>
35
-                <firstname>Olle E.</firstname>
36
-                <surname>Johansson</surname>
37
-                <affiliation><orgname>Edvina AB</orgname></affiliation>
38
-                <address>
39
-                <email>oej@edvina.net</email>
40
-                </address>
41
-            </editor>
42
-            <editor>
43
-                <firstname>Alessandro</firstname>
44
-                <surname>Arrichiello</surname>
45
-                <affiliation><orgname>Hewlett Packard</orgname></affiliation>
46
-                <address>
47
-                <email>alezzandro@gmail.com</email>
48
-                </address>
49
-            </editor>
50
-            <editor>
51
-                <firstname>Luis</firstname>
52
-                <surname>Martin</surname>
53
-                <address>
54
-                <email>martingil.luis@gmail.com</email>
55
-                </address>
56
-            </editor>
57
-            <editor>
58
-                <firstname>Julien</firstname>
59
-                <surname>Chavanton</surname>
60
-                <email>jchavanton@gmail.com</email>
61
-            </editor>
62
-            <editor>
63
-                <firstname>Federico</firstname>
64
-                <surname>Cabiddu</surname>
65
-                <email>federico.cabiddu@gmail.com</email>
66
-            </editor>
67
-	</authorgroup>
68
-	<copyright>
69
-	    <year>2004</year>
70
-	    <holder>&fhg;</holder>
71
-	</copyright>
72
-	<copyright>
73
-	    <year>2005</year>
74
-	    <holder>Voice Sistem</holder>
75
-	</copyright>
76
- 	<copyright>
77
-	    <year>2010</year>
78
-	    <holder>Daniel-Constantin Mierla (asipto.com)</holder>
79
-	</copyright>
80
- 	<copyright>
81
-	    <year>2014</year>
82
-	    <holder>Olle E. Johansson, Edvina AB</holder>
83
-	</copyright>
84
-	<copyright>
85
-            <year>2015</year>
86
-            <holder>Alessandro Arrichiello, Hewlett Packard</holder>
87
-        </copyright>
88
-	<copyright>
89
-            <year>2017, 2018</year>
90
-            <holder>Julien chavanton, Flowroute</holder>
91
-        </copyright>
92
-	<copyright>
93
-        <year>2020</year>
94
-        <holder>Federico Cabiddu, Libon</holder>
95
-   </copyright>
96
-   </bookinfo>
97
-    <toc></toc>
98
-    
99
-    <xi:include href="dispatcher_admin.xml"/>
100
-    <xi:include href="dispatcher_faq.xml"/>
15
+	<bookinfo>
16
+		<title>DISPATCHER Module</title>
17
+		<productname class="trade">&kamailioname;</productname>
18
+		<authorgroup>
19
+			<author>
20
+				<firstname>Daniel-Constantin</firstname>
21
+				<surname>Mierla</surname>
22
+				<email>miconda@gmail.com</email>
23
+			</author>
24
+			<editor>
25
+				<firstname>Daniel-Constantin</firstname>
26
+				<surname>Mierla</surname>
27
+				<email>miconda@gmail.com</email>
28
+			</editor>
29
+			<editor>
30
+				<firstname>Carsten</firstname>
31
+				<surname>Bock</surname>
32
+				<affiliation>
33
+					<orgname>ng-voice GmbH</orgname>
34
+				</affiliation>
35
+				<address><email>carsten@ng-voice.com</email></address>
36
+			</editor>
37
+			<editor>
38
+				<firstname>Olle E.</firstname>
39
+				<surname>Johansson</surname>
40
+				<affiliation>
41
+					<orgname>Edvina AB</orgname>
42
+				</affiliation>
43
+				<address><email>oej@edvina.net</email></address>
44
+			</editor>
45
+			<editor>
46
+				<firstname>Alessandro</firstname>
47
+				<surname>Arrichiello</surname>
48
+				<affiliation>
49
+					<orgname>Hewlett Packard</orgname>
50
+				</affiliation>
51
+				<address><email>alezzandro@gmail.com</email></address>
52
+			</editor>
53
+			<editor>
54
+				<firstname>Luis</firstname>
55
+				<surname>Martin</surname>
56
+				<address><email>martingil.luis@gmail.com</email></address>
57
+			</editor>
58
+			<editor>
59
+				<firstname>Julien</firstname>
60
+				<surname>Chavanton</surname>
61
+				<email>jchavanton@gmail.com</email>
62
+			</editor>
63
+			<editor>
64
+				<firstname>Federico</firstname>
65
+				<surname>Cabiddu</surname>
66
+				<email>federico.cabiddu@gmail.com</email>
67
+			</editor>
68
+		</authorgroup>
69
+		<copyright>
70
+			<year>2004</year>
71
+			<holder>&fhg;</holder>
72
+		</copyright>
73
+		<copyright>
74
+			<year>2005</year>
75
+			<holder>Voice Sistem</holder>
76
+		</copyright>
77
+		<copyright>
78
+			<year>2010</year>
79
+			<holder>Daniel-Constantin Mierla (asipto.com)</holder>
80
+		</copyright>
81
+		<copyright>
82
+			<year>2014</year>
83
+			<holder>Olle E. Johansson, Edvina AB</holder>
84
+		</copyright>
85
+		<copyright>
86
+			<year>2015</year>
87
+			<holder>Alessandro Arrichiello, Hewlett Packard</holder>
88
+		</copyright>
89
+		<copyright>
90
+			<year>2017, 2018</year>
91
+			<holder>Julien chavanton, Flowroute</holder>
92
+		</copyright>
93
+		<copyright>
94
+			<year>2020</year>
95
+			<holder>Federico Cabiddu, Libon</holder>
96
+		</copyright>
97
+	</bookinfo>
98
+	<toc/>
99
+
100
+	<xi:include href="dispatcher_admin.xml"/>
101
+	<xi:include href="dispatcher_faq.xml"/>
101 102
 
102 103
 </book>
... ...
@@ -1,11 +1,14 @@
1 1
 <?xml version="1.0" encoding='ISO-8859-1'?>
2
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
2
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
3 3
 "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
4 4
  
5 5
 <!-- Include general documentation entities -->
6 6
 <!ENTITY % docentities SYSTEM "../../../../doc/docbook/entities.xml">
7 7
 %docentities;
8 8
 
9
+<!ENTITY % xinclude SYSTEM "http://www.docbook.org/xml/4.4/xinclude.mod" >
10
+%xinclude;
11
+
9 12
 ]>
10 13
 <!-- Module User's Guide -->
11 14
 
... ...
@@ -96,14 +99,14 @@ modparam("dispatcher", "list_file", "/run/kamailio/dispatcher.list")
96 99
 	</section>
97 100
 
98 101
 	<section id="dispatcher.p.db_url">
99
- 		<title><varname>db_url</varname> (string)</title>
100
- 		<para>
102
+		<title><varname>db_url</varname> (string)</title>
103
+		<para>
101 104
 		If you want to load the list of gateways from the database you must set
102 105
 		this parameter.
103
- 		</para>
104
- 		<para>
105
- 		<emphasis>
106
- 			Default value is <quote>NULL</quote> (disable DB support).
106
+		</para>
107
+		<para>
108
+		<emphasis>
109
+			Default value is <quote>NULL</quote> (disable DB support).
107 110
 		</emphasis>
108 111
 		</para>
109 112
 		<example>
... ...
@@ -263,131 +266,132 @@ modparam("dispatcher", "force_dst", 1)
263 266
 </programlisting>
264 267
 		</example>
265 268
 	</section>
266
- 	<section id="dispatcher.p.flags">
267
- 		<title><varname>flags</varname> (int)</title>
268
- 		<para>
269
- 		Various flags that affect dispatcher's behaviour. The flags are defined
269
+	<section id="dispatcher.p.flags">
270
+		<title><varname>flags</varname> (int)</title>
271
+		<para>
272
+		Various flags that affect dispatcher's behaviour. The flags are defined
270 273
 		as a bitmask on an integer value.
271
- 		If flag 1 is set only the username
272
- 		part of the URI will be used when computing an URI based hash.
273
- 		If no flags are set the username, hostname and port will be used.
274
- 		The port is used only if different from 5060 (normal sip URI) or 5061
275
- 		(in the sips: case).
276
- 		</para>
277
- 		<para>
274
+		If flag 1 is set only the username
275
+		part of the URI will be used when computing an URI based hash.
276
+		If no flags are set the username, hostname and port will be used.
277
+		The port is used only if different from 5060 (normal sip URI) or 5061
278
+		(in the sips: case).
279
+		</para>
280
+		<para>
278 281
 		If flag 2 is set, then failover support is enabled. The functions
279 282
 		exported by the module will store the rest of addresses from the
280 283
 		destination set in XAPVs, and use these XAVPs to try next address if
281 284
 		the current-tried destination fails.
282
- 		</para>
283
- 		<para>
284
- 		<emphasis>
285
- 			Default value is <quote>0</quote>.
286
- 		</emphasis>
287
- 		</para>
288
- 		<example>
289
- 		<title>Set the <quote>flags</quote> parameter</title>
290
- <programlisting format="linespecific">
291
- ...
292
- modparam("dispatcher", "flags", 3)
293
- ...
294
- </programlisting>
295
- 		</example>
296
- 	</section>
297
- 	<section id="dispatcher.p.use_default">
298
- 		<title><varname>use_default</varname> (int)</title>
299
- 		<para>
300
- 		If the parameter is set to 1, the last address in destination set
285
+		</para>
286
+		<para>
287
+		<emphasis>
288
+			Default value is <quote>0</quote>.
289
+		</emphasis>
290
+		</para>
291
+		<example>
292
+		<title>Set the <quote>flags</quote> parameter</title>
293
+<programlisting format="linespecific">
294
+...
295
+modparam("dispatcher", "flags", 3)
296
+...
297
+</programlisting>
298
+		</example>
299
+	</section>
300
+	<section id="dispatcher.p.use_default">
301
+		<title><varname>use_default</varname> (int)</title>
302
+		<para>
303
+		If the parameter is set to 1, the last address in destination set
301 304
 		is used as a final option to send the request to. For example, it is useful
302 305
 		when wanting to send the call to an announcement server saying:
303 306
 		"the gateways are full, try later".
304
- 		</para>
305
- 		<para>
306
- 		<emphasis>
307
- 			Default value is <quote>0</quote>.
308
- 		</emphasis>
309
- 		</para>
310
- 		<example>
311
- 		<title>Set the <quote>use_default</quote> parameter</title>
312
- <programlisting format="linespecific">
313
- ...
314
- modparam("dispatcher", "use_default", 1)
315
- ...
316
- </programlisting>
317
- 		</example>
318
-	</section>
319
- 	<section id="dispatcher.p.xavp_dst">
320
- 		<title><varname>xavp_dst</varname> (str)</title>
321
- 		<para>
322
- 		The name of the XAVP which will hold the list with addresses and
307
+		</para>
308
+		<para>
309
+		<emphasis>
310
+			Default value is <quote>0</quote>.
311
+		</emphasis>
312
+		</para>
313
+		<example>
314
+		<title>Set the <quote>use_default</quote> parameter</title>
315
+<programlisting format="linespecific">
316
+...
317
+modparam("dispatcher", "use_default", 1)
318
+...
319
+</programlisting>
320
+		</example>
321
+	</section>
322
+	<section id="dispatcher.p.xavp_dst">
323
+		<title><varname>xavp_dst</varname> (str)</title>
324
+		<para>
325
+		The name of the XAVP which will hold the list with addresses and
323 326
 		associated properties, in the order they have been selected by the
324 327
 		chosen algorithm. If use_default is 1, the values of last XAVP correspond
325 328
 		to the last address in destination set. In case of using dispatcher.list file,
326 329
 		you have to set the priority field for each destination to ensure a particular order there.
327 330
 		The first XAVP is the current selected destination. All the other addresses
328 331
 		from the destination set will be added in the XAVP list to be able to implement serial forking.
329
- 		</para>
332
+		</para>
330 333
 		<note>
331
- 		<para>
334
+		<para>
332 335
 		You must set this parameter if you want to do load balancing fail over.
333
- 		</para>
336
+		</para>
334 337
 		</note>
335
- 		<para>
336
- 		<emphasis>
337
- 			Default value is <quote>_dsdst_</quote>.
338
- 		</emphasis>
339
- 		</para>
340
- 		<example>
341
- 		<title>Set the <quote>xavp_dst</quote> parameter</title>
342
- <programlisting format="linespecific">
343
- ...
344
- modparam("dispatcher", "xavp_dst", "_dsdst_")
345
- ...
346
- </programlisting>
347
- 		</example>
348
- 	</section>
349
- 	<section id="dispatcher.p.xavp_dst_mode">
350
- 		<title><varname>xavp_dst_mode</varname> (int)</title>
351
- 		<para>
352
- 		Control what fields are added to the XAVP specified by xavp_dst
338
+		<para>
339
+		<emphasis>
340
+			Default value is <quote>_dsdst_</quote>.
341
+		</emphasis>
342
+		</para>
343
+		<example>
344
+		<title>Set the <quote>xavp_dst</quote> parameter</title>
345
+<programlisting format="linespecific">
346
+...
347
+modparam("dispatcher", "xavp_dst", "_dsdst_")
348
+...
349
+</programlisting>
350
+		</example>
351
+	</section>
352
+	<section id="dispatcher.p.xavp_dst_mode">
353
+		<title><varname>xavp_dst_mode</varname> (int)</title>
354
+		<para>
355
+		Control what fields are added to the XAVP specified by xavp_dst
353 356
 		parameter.
354 357
 		</para>
355 358
 		<para>
356 359
 		The addeded fields are:
357 360
 		<itemizedlist>
358
-			<listitem>
359
-			grp - the set id (group id).
360
-			</listitem>
361
-			<listitem>
362
-			uri - the URI address.
363
-			</listitem>
364
-			<listitem>
365
-			sock - the socket pointer.
366
-			</listitem>
367
-			<listitem>
368
-			socket - the socket string - it is added only if xavp_dst_mode has bit 2 set
369
-			(value 2).
370
-			</listitem>
371
-			<listitem>
372
-			sockname - the sockname string - it is added only if xavp_dst_mode has bit 3 set
373
-			(value 3).
374
-			</listitem>
375
-			<listitem>
376
-			dstid - the destination unique id (in case of call load distribution algorithm).
377
-			</listitem>
378
-			<listitem>
379
-			attrs - the attributes - they are added if xavp_dst_mode does not have
380
-			the bit 1 set (value 1).
381
-			</listitem>
382
-		</itemizedlist>
383
- 		</para>
384
- 		<para>
385
- 		<emphasis>
386
- 			Default value is <quote>0</quote> (add all fields).
387
- 		</emphasis>
388
- 		</para>
389
- 		<example>
390
- 		<title>Set the <quote>xavp_dst_mode</quote> parameter</title>
361
+					<listitem>
362
+						<para>grp - the set id (group id).</para>
363
+					</listitem>
364
+					<listitem>
365
+						<para>uri - the URI address.</para>
366
+					</listitem>
367
+					<listitem>
368
+						<para>sock - the socket pointer.</para>
369
+					</listitem>
370
+					<listitem>
371
+						<para>socket - the socket string - it is added only if xavp_dst_mode has
372
+							bit 2 set (value 2).</para>
373
+					</listitem>
374
+					<listitem>
375
+						<para>sockname - the sockname string - it is added only if xavp_dst_mode
376
+							has bit 3 set (value 3).</para>
377
+					</listitem>
378
+					<listitem>
379
+						<para>dstid - the destination unique id (in case of call load distribution
380
+							algorithm).</para>
381
+					</listitem>
382
+					<listitem>
383
+						<para>attrs - the attributes - they are added if xavp_dst_mode does not
384
+							have the bit 1 set (value 1).</para>
385
+					</listitem>
386
+				</itemizedlist>
387
+		</para>
388
+		<para>
389
+		<emphasis>
390
+			Default value is <quote>0</quote> (add all fields).
391
+		</emphasis>
392
+		</para>
393
+		<example>
394
+		<title>Set the <quote>xavp_dst_mode</quote> parameter</title>
391 395
 <programlisting format="linespecific">
392 396
 ...
393 397
     modparam("dispatcher", "xavp_dst_mode", 1)
... ...
@@ -395,102 +399,102 @@ modparam("dispatcher", "force_dst", 1)
395 399
     modparam("dispatcher", "xavp_dst_mode", 2)
396 400
 ...
397 401
 </programlisting>
398
- 		</example>
399
- 	</section>
400
- 	<section id="dispatcher.p.xavp_ctx">
401
- 		<title><varname>xavp_ctx</varname> (str)</title>
402
- 		<para>
403
- 		The name of the XAVP which will hold some attributes specific to
402
+		</example>
403
+	</section>
404
+	<section id="dispatcher.p.xavp_ctx">
405
+		<title><varname>xavp_ctx</varname> (str)</title>
406
+		<para>
407
+		The name of the XAVP which will hold some attributes specific to
404 408
 		dispatcher routing context. The XAVP can hold the next fields: cnt -
405 409
 		the number of addresses selected for routing.
406
- 		</para>
407
- 		<para>
408
- 		<emphasis>
409
- 			Default value is <quote>_dsctx_</quote>.
410
- 		</emphasis>
411
- 		</para>
412
- 		<example>
413
- 		<title>Set the <quote>xavp_ctx</quote> parameter</title>
414
- <programlisting format="linespecific">
415
- ...
416
- modparam("dispatcher", "xavp_ctx", "_dsctx_")
417
- ...
418
- </programlisting>
419
- 		</example>
420
- 	</section>
421
- 	<section id="dispatcher.p.xavp_ctx_mode">
422
- 		<title><varname>xavp_ctx_mode</varname> (int)</title>
423
- 		<para>
424
- 		Control what fields are added to the XAVP specified by xavp_ctx
410
+		</para>
411
+		<para>
412
+		<emphasis>
413
+			Default value is <quote>_dsctx_</quote>.
414
+		</emphasis>
415
+		</para>
416
+		<example>
417
+		<title>Set the <quote>xavp_ctx</quote> parameter</title>
418
+<programlisting format="linespecific">
419
+...
420
+modparam("dispatcher", "xavp_ctx", "_dsctx_")
421
+...
422
+</programlisting>
423
+		</example>
424
+	</section>
425
+	<section id="dispatcher.p.xavp_ctx_mode">
426
+		<title><varname>xavp_ctx_mode</varname> (int)</title>
427
+		<para>
428
+		Control what fields are added to the XAVP specified by xavp_ctx
425 429
 		parameter. The cnt field is added if xavp_cnt_mode does not have the
426 430
 		bit 1 set.
427
- 		</para>
428
- 		<para>
429
- 		<emphasis>
430
- 			Default value is <quote>0</quote> (add all fields).
431
- 		</emphasis>
432
- 		</para>
433
- 		<example>
434
- 		<title>Set the <quote>xavp_ctx_mode</quote> parameter</title>
435
- <programlisting format="linespecific">
436
- ...
437
- modparam("dispatcher", "xavp_ctx_mode", 1)
438
- ...
439
- </programlisting>
440
- 		</example>
441
- 	</section>
442
- 	<section id="dispatcher.p.hash_pvar">
443
- 		<title><varname>hash_pvar</varname> (str)</title>
444
- 		<para>
445
- 		String with PVs used for the hashing algorithm 7.
446
- 		</para>
431
+		</para>
432
+		<para>
433
+		<emphasis>
434
+			Default value is <quote>0</quote> (add all fields).
435
+		</emphasis>
436
+		</para>
437
+		<example>
438
+		<title>Set the <quote>xavp_ctx_mode</quote> parameter</title>
439
+<programlisting format="linespecific">
440
+...
441
+modparam("dispatcher", "xavp_ctx_mode", 1)
442
+...
443
+</programlisting>
444
+		</example>
445
+	</section>
446
+	<section id="dispatcher.p.hash_pvar">
447
+		<title><varname>hash_pvar</varname> (str)</title>
448
+		<para>
449
+		String with PVs used for the hashing algorithm 7.
450
+		</para>
447 451
 		<note>
448
- 		<para>
452
+		<para>
449 453
 		You must set this parameter if you want do hashing over custom message
450 454
 		parts.
451
- 		</para>
455
+		</para>
452 456
 		</note>
453
- 		<para>
454
- 		<emphasis>
455
- 			Default value is <quote>null</quote> - disabled.
456
- 		</emphasis>
457
- 		</para>
458
- 		<example>
459
- 		<title>Use $avp(hash) for hashing:</title>
460
- <programlisting format="linespecific">
461
- ...
462
- modparam("dispatcher", "hash_pvar", "$avp(hash)")
463
- ...
464
- </programlisting>
465
- 		</example>
466
- 		<example>
467
- 		<title>Use combination of PVs for hashing:</title>
468
- <programlisting format="linespecific">
469
- ...
470
- modparam("dispatcher", "hash_pvar", "hash the $fU@$ci")
471
- ...
472
- </programlisting>
473
- 		</example>
474
- 	</section>
475
- 	<section id="dispatcher.p.setid_pvname">
476
- 		<title><varname>setid_pvname</varname> (str)</title>
477
- 		<para>
457
+		<para>
458
+		<emphasis>
459
+			Default value is <quote>null</quote> - disabled.
460
+		</emphasis>
461
+		</para>
462
+		<example>
463
+		<title>Use $avp(hash) for hashing:</title>
464
+<programlisting format="linespecific">
465
+...
466
+modparam("dispatcher", "hash_pvar", "$avp(hash)")
467
+...
468
+</programlisting>
469
+		</example>
470
+		<example>
471
+		<title>Use combination of PVs for hashing:</title>
472
+<programlisting format="linespecific">
473
+...
474
+modparam("dispatcher", "hash_pvar", "hash the $fU@$ci")
475
+...
476
+</programlisting>
477
+		</example>
478
+	</section>
479
+	<section id="dispatcher.p.setid_pvname">
480
+		<title><varname>setid_pvname</varname> (str)</title>
481
+		<para>
478 482
 		The name of the PV where to store the set ID (group ID) when calling
479 483
 		ds_is_from_list() with no parameter.
480
- 		</para>
481
- 		<para>
482
- 		<emphasis>
483
- 			Default value is <quote>null</quote> - don't set PV.
484
- 		</emphasis>
485
- 		</para>
486
- 		<example>
487
- 		<title>Set the <quote>setid_pvname</quote> parameter</title>
488
- <programlisting format="linespecific">
489
- ...
490
- modparam("dispatcher", "setid_pvname", "$var(setid)")
491
- ...
492
- </programlisting>
493
- 		</example>
484
+		</para>
485
+		<para>
486
+		<emphasis>
487
+			Default value is <quote>null</quote> - don't set PV.
488
+		</emphasis>
489
+		</para>
490
+		<example>
491
+		<title>Set the <quote>setid_pvname</quote> parameter</title>
492
+<programlisting format="linespecific">
493
+...
494
+modparam("dispatcher", "setid_pvname", "$var(setid)")
495
+...
496
+</programlisting>
497
+		</example>
494 498
 	</section>
495 499
 	<section id="dispatcher.p.attrs_pvname">
496 500
 		<title><varname>attrs_pvname</varname> (str)</title>
... ...
@@ -505,100 +509,100 @@ modparam("dispatcher", "force_dst", 1)
505 509
 		</para>
506 510
 		<example>
507 511
 		<title>Set the <quote>attrs_pvname</quote> parameter</title>
508
- <programlisting format="linespecific">
509
- ...
510
- modparam("dispatcher", "attrs_pvname", "$var(attrs)")
511
- ...
512
- </programlisting>
512
+<programlisting format="linespecific">
513
+...
514
+modparam("dispatcher", "attrs_pvname", "$var(attrs)")
515
+...
516
+</programlisting>
513 517
 		</example>
514 518
 	</section>
515
- 	<section id="dispatcher.p.ds_ping_method">
516
- 		<title><varname>ds_ping_method</varname> (string)</title>
517
- 		<para>
519
+	<section id="dispatcher.p.ds_ping_method">
520
+		<title><varname>ds_ping_method</varname> (string)</title>
521
+		<para>
518 522
 		With this method you can define, with which method you want to probe the gateways.
519 523
 		Pinging gateways feature depends on ds_ping_interval parameter.
520
- 		</para>
521
- 		<para>
522
- 		<emphasis>
523
- 			Default value is <quote>OPTIONS</quote>.
524
- 		</emphasis>
525
- 		</para>
526
- 		<example>
527
- 		<title>Set the <quote>ds_ping_method</quote> parameter</title>
528
- <programlisting format="linespecific">
529
- ...
530
- modparam("dispatcher", "ds_ping_method", "INFO")
531
- ...
532
- </programlisting>
533
- 		</example>
534
-	</section>
535
- 	<section id="dispatcher.p.ds_ping_from">
536
- 		<title><varname>ds_ping_from</varname> (string)</title>
537
- 		<para>
538
- 		With this Method you can define the "From:"-Line for the request, sent to the failed gateways.
539
- 		This method is only available, if compiled with the probing of failed gateways enabled.
540
- 		</para>
541
- 		<para>
542
- 		<emphasis>
543
- 			Default value is <quote>sip:dispatcher@localhost</quote>.
544
- 		</emphasis>
545
- 		</para>
546
- 		<example>
547
- 		<title>Set the <quote>ds_ping_from</quote> parameter</title>
548
- <programlisting format="linespecific">
549
- ...
550
- modparam("dispatcher", "ds_ping_from", "sip:proxy@sip.somehost.com")
551
- ...
552
- </programlisting>
553
- 		</example>
524
+		</para>
525
+		<para>
526
+		<emphasis>
527
+			Default value is <quote>OPTIONS</quote>.
528
+		</emphasis>
529
+		</para>
530
+		<example>
531
+		<title>Set the <quote>ds_ping_method</quote> parameter</title>
532
+<programlisting format="linespecific">
533
+...
534
+modparam("dispatcher", "ds_ping_method", "INFO")
535
+...
536
+</programlisting>
537
+		</example>
538
+	</section>
539
+	<section id="dispatcher.p.ds_ping_from">
540
+		<title><varname>ds_ping_from</varname> (string)</title>
541
+		<para>
542
+		With this Method you can define the "From:"-Line for the request, sent to the failed gateways.
543
+		This method is only available, if compiled with the probing of failed gateways enabled.
544
+		</para>
545
+		<para>
546
+		<emphasis>
547
+			Default value is <quote>sip:dispatcher@localhost</quote>.
548
+		</emphasis>
549
+		</para>
550
+		<example>
551
+		<title>Set the <quote>ds_ping_from</quote> parameter</title>
552
+<programlisting format="linespecific">
553
+...
554
+modparam("dispatcher", "ds_ping_from", "sip:proxy@sip.somehost.com")
555
+...
556
+</programlisting>
557
+		</example>
554 558
 	</section>
555 559
 
556
- 	<section id="dispatcher.p.ds_ping_interval">
557
- 		<title><varname>ds_ping_interval</varname> (int)</title>
558
- 		<para>
560
+	<section id="dispatcher.p.ds_ping_interval">
561
+		<title><varname>ds_ping_interval</varname> (int)</title>
562
+		<para>
559 563
 		With this parameter you can define the interval for sending a request
560 564
 		to a gateway marked as inactive upon a failed request routing to it.
561
- 		This parameter is only used, when the TM-Module is loaded.
565
+		This parameter is only used, when the TM-Module is loaded.
562 566
 		If set to <quote>0</quote>, the pinging of inactive gateway is disabled.
563
- 		</para>
564
- 		<para>
565
- 		<emphasis>
567
+		</para>
568
+		<para>
569
+		<emphasis>
566 570
 			Default value is <quote>0</quote>.
567
- 		</emphasis>
568
- 		</para>
569
- 		<example>
570
- 		<title>Set the <quote>ds_ping_interval</quote> parameter</title>
571
- <programlisting format="linespecific">
572
- ...
573
- modparam("dispatcher", "ds_ping_interval", 30)
574
- ...
575
- </programlisting>
576
- 		</example>
571
+		</emphasis>
572
+		</para>
573
+		<example>
574
+		<title>Set the <quote>ds_ping_interval</quote> parameter</title>
575
+<programlisting format="linespecific">
576
+...
577
+modparam("dispatcher", "ds_ping_interval", 30)
578
+...
579
+</programlisting>
580
+		</example>
577 581
 	</section>
578 582
 
579
- 	<section id="dispatcher.p.ds_probing_threshold">
580
- 		<title><varname>ds_probing_threshold</varname> (int)</title>
581
- 		<para>
583
+	<section id="dispatcher.p.ds_probing_threshold">
584
+		<title><varname>ds_probing_threshold</varname> (int)</title>
585
+		<para>
582 586
 		If you want to set a gateway into inactive mode, there can be
583 587
 		a specific number of failed requests until it will change from "active"
584 588
 		to "inactive". It is using the state "trying", that allows selection
585 589
 		of gateway but indicates there was a failure previously with the
586 590
 		gateway. The number of attempts can be set with this parameter.
587 591
 		This parameter can be modified via ser config framework.
588
- 		</para>
589
- 		<para>
590
- 		<emphasis>
592
+		</para>
593
+		<para>
594
+		<emphasis>
591 595
 		Default value is <quote>1</quote> (set inactive with first failure).
592
- 		</emphasis>
593
- 		</para>
594
- 		<example>
595
- 		<title>Set the <quote>ds_probing_threshold</quote> parameter</title>
596
- <programlisting format="linespecific">
597
- ...
598
- modparam("dispatcher", "ds_probing_threshold", 10)
599
- ...
600
- </programlisting>
601
- 		</example>
596
+		</emphasis>
597
+		</para>
598
+		<example>
599
+		<title>Set the <quote>ds_probing_threshold</quote> parameter</title>
600
+<programlisting format="linespecific">
601
+...
602
+modparam("dispatcher", "ds_probing_threshold", 10)
603
+...
604
+</programlisting>
605
+		</example>
602 606
 	</section>
603 607
 	<section id="dispatcher.p.ds_inactive_threshold">
604 608
                 <title><varname>ds_inactive_threshold</varname> (int)</title>
... ...
@@ -615,16 +619,16 @@ modparam("dispatcher", "force_dst", 1)
615 619
                 </para>
616 620
                 <example>
617 621
                 <title>Set the <quote>ds_inactive_threshold</quote> parameter</title>
618
- <programlisting format="linespecific">
619
- ...
620
- modparam("dispatcher", "ds_inactive_threshold", 10)
621
- ...
622
- </programlisting>
622
+<programlisting format="linespecific">
623
+...
624
+modparam("dispatcher", "ds_inactive_threshold", 10)
625
+...
626
+</programlisting>
623 627
                 </example>
624
-        </section>
625
- 	<section id="dispatcher.p.ds_ping_reply_codes">
626
- 		<title><varname>ds_ping_reply_codes</varname> (string)</title>
627
- 		<para>
628
+	</section>
629
+	<section id="dispatcher.p.ds_ping_reply_codes">
630
+		<title><varname>ds_ping_reply_codes</varname> (string)</title>
631
+		<para>
628 632
 			This parameter defines the valid response codes, which are accepted
629 633
 			as a valid reply to the PING-Method. It is a list separated by
630 634
 			colons, where you may define either a single code (e.g. "code=202"
... ...
@@ -632,39 +636,39 @@ modparam("dispatcher", "force_dst", 1)
632 636
 			responses, you want to accept (e.g. "class=2" would accept
633 637
 			everything from 200 to 299 as valid response). This parameter can
634 638
 			be modified via config framework.
635
- 		</para>
636
- 		<para>
639
+		</para>
640
+		<para>
637 641
 			Please note that the response codes the module accepts as valid reply to the
638 642
 			PING-Method are not only the ones generated from the remote servers, but also those
639 643
 			that are generated locally. E.g.: setting code=408 or class=400 will never set
640 644
 			a backend down even if it is, because internally the Kamailio transaction layer
641 645
 			generates a 408 in the case of no response from the remote server, and this
642 646
 			internal code 408 is accepted as valid value.
643
- 		</para>
644
- 		<para>
645
- 		<emphasis>
646
- 			Default value is <quote></quote> (only 200 OK is accepted).
647
- 		</emphasis>
648
- 		</para>
649
- 		<example>
650
- 		<title>Set the <quote>ds_ping_reply_codes</quote> parameter</title>
651
- <programlisting format="linespecific">
652
- ...
653
- modparam("dispatcher", "ds_ping_reply_codes", "class=2;code=403;code=488;class=3")
654
- ...
655
- </programlisting>
656
- 		</example>
657
-	</section>
658
- 	<section id="dispatcher.p.ds_probing_mode">
659
- 		<title><varname>ds_probing_mode</varname> (int)</title>
660
- 		<para>
647
+		</para>
648
+		<para>
649
+		<emphasis>
650
+			Default value is <quote></quote> (only 200 OK is accepted).
651
+		</emphasis>
652
+		</para>
653
+		<example>
654
+		<title>Set the <quote>ds_ping_reply_codes</quote> parameter</title>
655
+<programlisting format="linespecific">
656
+...
657
+modparam("dispatcher", "ds_ping_reply_codes", "class=2;code=403;code=488;class=3")
658
+...
659
+</programlisting>
660
+		</example>
661
+	</section>
662
+	<section id="dispatcher.p.ds_probing_mode">
663
+		<title><varname>ds_probing_mode</varname> (int)</title>
664
+		<para>
661 665
 		Controls what gateways are tested to see if they are reachable.
662 666
 		</para>
663 667
 
664 668
 		<itemizedlist>
665 669
 		<listitem>
666 670
 			<para>Value 0: If set to 0, only the gateways with state PROBING are tested.
667
-            After a gateway is probed, the PROBING state is cleared in this mode.
671
+			After a gateway is probed, the PROBING state is cleared in this mode.
668 672
 			This means that no probing will be executed at all only if flag in config file is set to 8/PROBING
669 673
 			(please check destination list file syntaxis for more details), it will probe only one time at startup or 
670 674
 			after dispatcher reload.</para>
... ...
@@ -681,29 +685,29 @@ modparam("dispatcher", "force_dst", 1)
681 685
 		</listitem>
682 686
 		<listitem>
683 687
 			<para>Value 3: If set to 3, any gateway with state PROBING is continually probed
684
- 				without modifying/removing the PROBING state.  This allows selected gateways
688
+				without modifying/removing the PROBING state.  This allows selected gateways
685 689
 				to be probed continually, regardless of state changes.</para>
686 690
 		</listitem>
687 691
 		</itemizedlist>
688 692
 
689
- 		<para>
690
- 		<emphasis>
691
- 			Default value is <quote>0</quote>.
692
- 		</emphasis>
693
- 		</para>
694
- 		<example>
695
- 		<title>Set the <quote>ds_probing_mode</quote> parameter</title>
696
- <programlisting format="linespecific">
697
- ...
698
- modparam("dispatcher", "ds_probing_mode", 1)
699
- ...
700
- </programlisting>
701
- 		</example>
693
+		<para>
694
+		<emphasis>
695
+			Default value is <quote>0</quote>.
696
+		</emphasis>
697
+		</para>
698
+		<example>
699
+		<title>Set the <quote>ds_probing_mode</quote> parameter</title>
700
+<programlisting format="linespecific">
701
+...
702
+modparam("dispatcher", "ds_probing_mode", 1)
703
+...
704
+</programlisting>
705
+		</example>
702 706
 	</section>
703 707
 
704
- 	<section id="dispatcher.p.ds_ping_latency_stats">
705
- 		<title><varname>ds_ping_latency_stats</varname> (int)</title>
706
- 		<para>
708
+	<section id="dispatcher.p.ds_ping_latency_stats">
709
+		<title><varname>ds_ping_latency_stats</varname> (int)</title>
710
+		<para>
707 711
 		Enable latency measurement when pinging nodes
708 712
 		</para>
709 713
 
... ...
@@ -716,17 +720,17 @@ modparam("dispatcher", "force_dst", 1)
716 720
 			</para>
717 721
 		</listitem>
718 722
 		</itemizedlist>
719
- 		<para>
720
- 		<emphasis>
721
- 			Default value is <quote>0</quote>.
722
- 		</emphasis>
723
- 		</para>
724
- 		<example>
725
- 		<title>accessing the metrics</title>
726
- <programlisting format="linespecific">
723
+		<para>
724
+		<emphasis>
725
+			Default value is <quote>0</quote>.
726
+		</emphasis>
727
+		</para>
728
+		<example>
729
+		<title>accessing the metrics</title>
730
+<programlisting format="linespecific">
727 731
 # using the command :
728 732
 kamcmd dispatcher.list
729
- ...
733
+...
730 734
 DEST: {
731 735
 	URI: sip:1.2.3.4
732 736
 	FLAGS: AX
... ...
@@ -739,143 +743,143 @@ DEST: {
739 743
 		TIMEOUT: 0     # count of ping timeouts
740 744
 	}
741 745
 }
742
- ...
743
- </programlisting>
744
- 		</example>
745
- 		<example>
746
- 		<title>Set the <quote>ds_ping_latency_stats</quote> parameter</title>
747
- <programlisting format="linespecific">
748
- ...
749
- modparam("dispatcher", "ds_ping_latency_stats", 1)
750
- ...
751
- </programlisting>
752
- 		</example>
753
-	</section>
754
- 	<section id="dispatcher.p.ds_latency_estimator_alpha">
755
- 		<title><varname>ds_latency_estimator_alpha</varname> (int)</title>
746
+...
747
+</programlisting>
748
+		</example>
749
+		<example>
750
+		<title>Set the <quote>ds_ping_latency_stats</quote> parameter</title>
751
+<programlisting format="linespecific">
752
+...
753
+modparam("dispatcher", "ds_ping_latency_stats", 1)
754
+...
755
+</programlisting>
756
+		</example>
757
+	</section>
758
+	<section id="dispatcher.p.ds_latency_estimator_alpha">
759
+		<title><varname>ds_latency_estimator_alpha</varname> (int)</title>
756 760
 		<para>
757 761
 		The value to be used to control the memory of the estimator EWMA "exponential weighted moving average" or
758 762
 		"the speed at which the older samples are dampened"
759 763
 		a good explanation can be found here : http://www.itl.nist.gov/div898/handbook/pmc/section3/pmc324.htm
760 764
 		Because Kamailio doesn't support float parameter types, the value in the parameter is divided by 1000 and stored as float.
761 765
 		For example, if you want to set the alpha to be 0.75, use value 750 here.
762
- 		</para>
763
- 		<para>
764
- 		<emphasis>
766
+		</para>
767
+		<para>
768
+		<emphasis>
765 769
 			Default value is <quote>900 => 0.9</quote>.
766
- 		</emphasis>
767
- 		</para>
768
- 		<example>
769
- 		<title>Set the <quote>ds_hash_size</quote> parameter</title>
770
- <programlisting format="linespecific">
771
- ...
772
- modparam("dispatcher", "ds_latency_estimator_alpha", 900)
773
- ...
774
- </programlisting>
775
- 		</example>
776
-	</section>
777
- 	<section id="dispatcher.p.ds_hash_size">
778
- 		<title><varname>ds_hash_size</varname> (int)</title>
779
- 		<para>
770
+		</emphasis>
771
+		</para>
772
+		<example>
773
+		<title>Set the <quote>ds_hash_size</quote> parameter</title>
774
+<programlisting format="linespecific">
775
+...
776
+modparam("dispatcher", "ds_latency_estimator_alpha", 900)
777
+...
778
+</programlisting>
779
+		</example>
780
+	</section>
781
+	<section id="dispatcher.p.ds_hash_size">
782
+		<title><varname>ds_hash_size</varname> (int)</title>
783
+		<para>
780 784
 		The value to be used as power of two to set the number of slots
781 785
 		to hash table storing data for call load dispatching (e.g., value
782 786
 		8 will create a hash table with 256 slots).
783 787
 		It must be greater than 0 to enable call load dispatching feature
784 788
 		(alg 10).
785
- 		</para>
786
- 		<para>
787
- 		<emphasis>
788
- 			Default value is <quote>0</quote>.
789
- 		</emphasis>
790
- 		</para>
791
- 		<example>
792
- 		<title>Set the <quote>ds_hash_size</quote> parameter</title>
793
- <programlisting format="linespecific">
794
- ...
795
- modparam("dispatcher", "ds_hash_size", 9)
796
- ...
797
- </programlisting>
798
- 		</example>
799
-	</section>
800
- 	<section id="dispatcher.p.ds_hash_expire">
801
- 		<title><varname>ds_hash_expire</varname> (int)</title>
802
- 		<para>
789
+		</para>
790
+		<para>
791
+		<emphasis>
792
+			Default value is <quote>0</quote>.
793
+		</emphasis>
794
+		</para>
795
+		<example>
796
+		<title>Set the <quote>ds_hash_size</quote> parameter</title>
797
+<programlisting format="linespecific">
798
+...
799
+modparam("dispatcher", "ds_hash_size", 9)
800
+...
801
+</programlisting>
802
+		</example>
803
+	</section>
804
+	<section id="dispatcher.p.ds_hash_expire">
805
+		<title><varname>ds_hash_expire</varname> (int)</title>
806
+		<para>
803 807
 		Expiration time in seconds to remove the load on a destination if no
804 808
 		BYE was received meanwhile.
805
- 		</para>
806
- 		<para>
807
- 		<emphasis>
808
- 			Default value is <quote>7200</quote>.
809
- 		</emphasis>
810
- 		</para>
811
- 		<example>
812
- 		<title>Set the <quote>ds_hash_expire</quote> parameter</title>
813
- <programlisting format="linespecific">
814
- ...
815
- modparam("dispatcher", "ds_hash_expire", 3600)
816
- ...
817
- </programlisting>
818
- 		</example>
819
-	</section>
820
- 	<section id="dispatcher.p.ds_hash_initexpires">
821
- 		<title><varname>ds_hash_initexpire</varname> (int)</title>
822
- 		<para>
809
+		</para>
810
+		<para>
811
+		<emphasis>
812
+			Default value is <quote>7200</quote>.
813
+		</emphasis>
814
+		</para>
815
+		<example>
816
+		<title>Set the <quote>ds_hash_expire</quote> parameter</title>
817
+<programlisting format="linespecific">
818
+...
819
+modparam("dispatcher", "ds_hash_expire", 3600)
820
+...
821
+</programlisting>
822
+		</example>
823
+	</section>
824
+	<section id="dispatcher.p.ds_hash_initexpires">
825
+		<title><varname>ds_hash_initexpire</varname> (int)</title>
826
+		<para>
823 827
 		Expiration time in seconds to remove the load on a destination if no
824 828
 		200 for INVITE was received meanwhile and state updated with
825 829
 		ds_load_update().
826
- 		</para>
827
- 		<para>
828
- 		<emphasis>
829
- 			Default value is <quote>7200</quote>.
830
- 		</emphasis>
831
- 		</para>
832
- 		<example>
833
- 		<title>Set the <quote>ds_hash_initexpire</quote> parameter</title>
834
- <programlisting format="linespecific">
835
- ...
836
- modparam("dispatcher", "ds_hash_initexpire", 60)
837
- ...
838
- </programlisting>
839
- 		</example>
840
-	</section>
841
- 	<section id="dispatcher.p.ds_hash_check_interval">
842
- 		<title><varname>ds_hash_check_interval</varname> (int)</title>
843
- 		<para>
830
+		</para>
831
+		<para>
832
+		<emphasis>
833
+			Default value is <quote>7200</quote>.
834
+		</emphasis>
835
+		</para>
836
+		<example>
837
+		<title>Set the <quote>ds_hash_initexpire</quote> parameter</title>
838
+<programlisting format="linespecific">
839
+...
840
+modparam("dispatcher", "ds_hash_initexpire", 60)
841
+...
842
+</programlisting>
843
+		</example>
844
+	</section>
845
+	<section id="dispatcher.p.ds_hash_check_interval">
846
+		<title><varname>ds_hash_check_interval</varname> (int)</title>
847
+		<para>
844 848
 		Time interval in seconds to scan internal hash table with call load
845 849
 		dispatching data for expired items.
846
- 		</para>
847
- 		<para>
848
- 		<emphasis>
849
- 			Default value is <quote>30</quote>.
850
- 		</emphasis>
851
- 		</para>
852
- 		<example>
853
- 		<title>Set the <quote>ds_hash_check_interval</quote> parameter</title>
854
- <programlisting format="linespecific">
855
- ...
856
- modparam("dispatcher", "ds_hash_check_interval", 60)
857
- ...
858
- </programlisting>
859
- 		</example>
860
-	</section>
861
- 	<section id="dispatcher.p.outbound_proxy">
862
- 		<title><varname>outbound_proxy</varname> (str)</title>
863
- 		<para>
850
+		</para>
851
+		<para>
852
+		<emphasis>
853
+			Default value is <quote>30</quote>.
854
+		</emphasis>
855
+		</para>
856
+		<example>
857
+		<title>Set the <quote>ds_hash_check_interval</quote> parameter</title>
858
+<programlisting format="linespecific">
859
+...
860
+modparam("dispatcher", "ds_hash_check_interval", 60)
861
+...
862
+</programlisting>
863
+		</example>
864
+	</section>
865
+	<section id="dispatcher.p.outbound_proxy">
866
+		<title><varname>outbound_proxy</varname> (str)</title>
867
+		<para>
864 868
 		SIP URI of outbound proxy to be used when sending pings.
865
- 		</para>
866
- 		<para>
867
- 		<emphasis>
868
- 			By default no outbound proxy is defined.
869
- 		</emphasis>
870
- 		</para>
871
- 		<example>
872
- 		<title>Set the <quote>outbound_proxy</quote> parameter</title>
873
- <programlisting format="linespecific">
874
- ...
875
- modparam("dispatcher", "outbound_proxy", "sip:outbound.example.com")
876
- ...
877
- </programlisting>
878
- 		</example>
869
+		</para>
870
+		<para>
871
+		<emphasis>
872
+			By default no outbound proxy is defined.
873
+		</emphasis>
874
+		</para>
875
+		<example>
876
+		<title>Set the <quote>outbound_proxy</quote> parameter</title>
877
+<programlisting format="linespecific">
878
+...
879
+modparam("dispatcher", "outbound_proxy", "sip:outbound.example.com")
880
+...
881
+</programlisting>
882
+		</example>
879 883
 	</section>
880 884
 
881 885
 	<section id="dispatcher.p.ds_default_socket">
... ...
@@ -894,11 +898,11 @@ DEST: {
894 898
 		is ignored.</para>
895 899
 		<example>
896 900
 		<title>Set the <quote>ds_default_socket</quote> parameter</title>
897
- <programlisting format="linespecific">
898
- ...
899
- modparam("dispatcher", "ds_default_socket", "udp:192.168.0.125:5060")
900
- ...
901
- </programlisting>
901
+<programlisting format="linespecific">
902
+...
903
+modparam("dispatcher", "ds_default_socket", "udp:192.168.0.125:5060")
904
+...
905
+</programlisting>
902 906
 		</example>
903 907
 	</section>
904 908
 
... ...
@@ -918,19 +922,19 @@ DEST: {
918 922
 		(this parameter has higher priority).</para>
919 923
 		<example>
920 924
 		<title>Set the <quote>ds_default_sockname</quote> parameter</title>
921
- <programlisting format="linespecific">
922
- ...
925
+<programlisting format="linespecific">
926
+...
923 927
  listen=udp:1.2.3.4:5060 name "sock1"
924
- ...
925
- modparam("dispatcher", "ds_default_sockname", "sock1")
926
- ...
927
- </programlisting>
928
+...
929
+modparam("dispatcher", "ds_default_sockname", "sock1")
930
+...
931
+</programlisting>
928 932
 		</example>
929 933
 	</section>
930 934
 
931
- 	<section id="dispatcher.p.ds_timer_mode">
932
- 		<title><varname>ds_timer_mode</varname> (int)</title>
933
- 		<para>
935
+	<section id="dispatcher.p.ds_timer_mode">
936
+		<title><varname>ds_timer_mode</varname> (int)</title>
937
+		<para>
934 938
 			Specify the timer process to be used by the module for
935 939
 			keepalives and active dialogs tracking.
936 940
 		</para>
... ...
@@ -946,25 +950,25 @@ DEST: {
946 950
 		</listitem>
947 951
 		</itemizedlist>
948 952
 
949
- 		<para>
953
+		<para>
950 954
 			On a server with a lot of traffic, using secondary
951 955
 			timer can help with performances, because the main timer
952 956
 			can be overloaded by taking care of transactions retransmissions
953 957
 			and expirations of items in memory.
954 958
 		</para>
955 959
 		<para>
956
- 		<emphasis>
957
- 			Default value is <quote>0</quote>.
958
- 		</emphasis>
959
- 		</para>
960
- 		<example>
961
- 		<title>Set the <quote>ds_timer_mode</quote> parameter</title>
962
- <programlisting format="linespecific">
963
- ...
964
- modparam("dispatcher", "ds_timer_mode", 1)
965
- ...
966
- </programlisting>
967
- 		</example>
960
+		<emphasis>
961
+			Default value is <quote>0</quote>.
962
+		</emphasis>
963
+		</para>
964
+		<example>
965
+		<title>Set the <quote>ds_timer_mode</quote> parameter</title>
966
+<programlisting format="linespecific">
967
+...
968
+modparam("dispatcher", "ds_timer_mode", 1)
969
+...
970
+</programlisting>
971
+		</example>
968 972
 	</section>
969 973
 	<section id="dispatcher.p.event_callback">
970 974
 		<title><varname>event_callback</varname> (str)</title>
... ...
@@ -998,26 +1002,26 @@ end
998 1002
 		</example>
999 1003
 	</section>
1000 1004
 
1001
- 	<section id="dispatcher.p.ds_attrs_none">
1002
- 		<title><varname>ds_attrs_none</varname> (int)</title>
1003