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
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 96
 	</section>
97 97
 
98 98
 	<section id="dispatcher.p.db_url">
99
- 		<title><varname>db_url</varname> (string)</title>
100
- 		<para>
99
+		<title><varname>db_url</varname> (string)</title>
100
+		<para>
101 101
 		If you want to load the list of gateways from the database you must set
102 102
 		this parameter.
103
- 		</para>
104
- 		<para>
105
- 		<emphasis>
106
- 			Default value is <quote>NULL</quote> (disable DB support).
103
+		</para>
104
+		<para>
105
+		<emphasis>
106
+			Default value is <quote>NULL</quote> (disable DB support).
107 107
 		</emphasis>
108 108
 		</para>
109 109
 		<example>
... ...
@@ -263,131 +266,132 @@ modparam("dispatcher", "force_dst", 1)
263 263
 </programlisting>
264 264
 		</example>
265 265
 	</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
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
270 270
 		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>
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>
278 278
 		If flag 2 is set, then failover support is enabled. The functions
279 279
 		exported by the module will store the rest of addresses from the
280 280
 		destination set in XAPVs, and use these XAVPs to try next address if
281 281
 		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
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
301 301
 		is used as a final option to send the request to. For example, it is useful
302 302
 		when wanting to send the call to an announcement server saying:
303 303
 		"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
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
323 323
 		associated properties, in the order they have been selected by the
324 324
 		chosen algorithm. If use_default is 1, the values of last XAVP correspond
325 325
 		to the last address in destination set. In case of using dispatcher.list file,
326 326
 		you have to set the priority field for each destination to ensure a particular order there.
327 327
 		The first XAVP is the current selected destination. All the other addresses
328 328
 		from the destination set will be added in the XAVP list to be able to implement serial forking.
329
- 		</para>
329
+		</para>
330 330
 		<note>
331
- 		<para>
331
+		<para>
332 332
 		You must set this parameter if you want to do load balancing fail over.
333
- 		</para>
333
+		</para>
334 334
 		</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
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
353 353
 		parameter.
354 354
 		</para>
355 355
 		<para>
356 356
 		The addeded fields are:
357 357
 		<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>
358
+					<listitem>
359
+						<para>grp - the set id (group id).</para>
360
+					</listitem>
361
+					<listitem>
362
+						<para>uri - the URI address.</para>
363
+					</listitem>
364
+					<listitem>
365
+						<para>sock - the socket pointer.</para>
366
+					</listitem>
367
+					<listitem>
368
+						<para>socket - the socket string - it is added only if xavp_dst_mode has
369
+							bit 2 set (value 2).</para>
370
+					</listitem>
371
+					<listitem>
372
+						<para>sockname - the sockname string - it is added only if xavp_dst_mode
373
+							has bit 3 set (value 3).</para>
374
+					</listitem>
375
+					<listitem>
376
+						<para>dstid - the destination unique id (in case of call load distribution
377
+							algorithm).</para>
378
+					</listitem>
379
+					<listitem>
380
+						<para>attrs - the attributes - they are added if xavp_dst_mode does not
381
+							have the bit 1 set (value 1).</para>
382
+					</listitem>
383
+				</itemizedlist>
384
+		</para>
385
+		<para>
386
+		<emphasis>
387
+			Default value is <quote>0</quote> (add all fields).
388
+		</emphasis>
389
+		</para>
390
+		<example>
391
+		<title>Set the <quote>xavp_dst_mode</quote> parameter</title>
391 392
 <programlisting format="linespecific">
392 393
 ...
393 394
     modparam("dispatcher", "xavp_dst_mode", 1)
... ...
@@ -395,102 +399,102 @@ modparam("dispatcher", "force_dst", 1)
395 395
     modparam("dispatcher", "xavp_dst_mode", 2)
396 396
 ...
397 397
 </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
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
404 404
 		dispatcher routing context. The XAVP can hold the next fields: cnt -
405 405
 		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
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
425 425
 		parameter. The cnt field is added if xavp_cnt_mode does not have the
426 426
 		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>
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>
447 447
 		<note>
448
- 		<para>
448
+		<para>
449 449
 		You must set this parameter if you want do hashing over custom message
450 450
 		parts.
451
- 		</para>
451
+		</para>
452 452
 		</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>
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>
478 478
 		The name of the PV where to store the set ID (group ID) when calling
479 479
 		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>
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>
494 494
 	</section>
495 495
 	<section id="dispatcher.p.attrs_pvname">
496 496
 		<title><varname>attrs_pvname</varname> (str)</title>
... ...
@@ -505,100 +509,100 @@ modparam("dispatcher", "force_dst", 1)
505 505
 		</para>
506 506
 		<example>
507 507
 		<title>Set the <quote>attrs_pvname</quote> parameter</title>
508
- <programlisting format="linespecific">
509
- ...
510
- modparam("dispatcher", "attrs_pvname", "$var(attrs)")
511
- ...
512
- </programlisting>
508
+<programlisting format="linespecific">
509
+...
510
+modparam("dispatcher", "attrs_pvname", "$var(attrs)")
511
+...
512
+</programlisting>
513 513
 		</example>
514 514
 	</section>
515
- 	<section id="dispatcher.p.ds_ping_method">
516
- 		<title><varname>ds_ping_method</varname> (string)</title>
517
- 		<para>
515
+	<section id="dispatcher.p.ds_ping_method">
516
+		<title><varname>ds_ping_method</varname> (string)</title>
517
+		<para>
518 518
 		With this method you can define, with which method you want to probe the gateways.
519 519
 		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>
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>
554 554
 	</section>
555 555
 
556
- 	<section id="dispatcher.p.ds_ping_interval">
557
- 		<title><varname>ds_ping_interval</varname> (int)</title>
558
- 		<para>
556
+	<section id="dispatcher.p.ds_ping_interval">
557
+		<title><varname>ds_ping_interval</varname> (int)</title>
558
+		<para>
559 559
 		With this parameter you can define the interval for sending a request
560 560
 		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.
561
+		This parameter is only used, when the TM-Module is loaded.
562 562
 		If set to <quote>0</quote>, the pinging of inactive gateway is disabled.
563
- 		</para>
564
- 		<para>
565
- 		<emphasis>
563
+		</para>
564
+		<para>
565
+		<emphasis>
566 566
 			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>
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>
577 577
 	</section>
578 578
 
579
- 	<section id="dispatcher.p.ds_probing_threshold">
580
- 		<title><varname>ds_probing_threshold</varname> (int)</title>
581
- 		<para>
579
+	<section id="dispatcher.p.ds_probing_threshold">
580
+		<title><varname>ds_probing_threshold</varname> (int)</title>
581
+		<para>
582 582
 		If you want to set a gateway into inactive mode, there can be
583 583
 		a specific number of failed requests until it will change from "active"
584 584
 		to "inactive". It is using the state "trying", that allows selection
585 585
 		of gateway but indicates there was a failure previously with the
586 586
 		gateway. The number of attempts can be set with this parameter.
587 587
 		This parameter can be modified via ser config framework.
588
- 		</para>
589
- 		<para>
590
- 		<emphasis>
588
+		</para>
589
+		<para>
590
+		<emphasis>
591 591
 		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>
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>
602 602
 	</section>
603 603
 	<section id="dispatcher.p.ds_inactive_threshold">
604 604
                 <title><varname>ds_inactive_threshold</varname> (int)</title>
... ...
@@ -615,16 +619,16 @@ modparam("dispatcher", "force_dst", 1)
615 615
                 </para>
616 616
                 <example>
617 617
                 <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>
618
+<programlisting format="linespecific">
619
+...
620
+modparam("dispatcher", "ds_inactive_threshold", 10)
621
+...
622
+</programlisting>
623 623
                 </example>
624
-        </section>
625
- 	<section id="dispatcher.p.ds_ping_reply_codes">
626
- 		<title><varname>ds_ping_reply_codes</varname> (string)</title>
627
- 		<para>
624
+	</section>
625
+	<section id="dispatcher.p.ds_ping_reply_codes">
626
+		<title><varname>ds_ping_reply_codes</varname> (string)</title>
627
+		<para>
628 628
 			This parameter defines the valid response codes, which are accepted
629 629
 			as a valid reply to the PING-Method. It is a list separated by
630 630
 			colons, where you may define either a single code (e.g. "code=202"
... ...
@@ -632,39 +636,39 @@ modparam("dispatcher", "force_dst", 1)
632 632
 			responses, you want to accept (e.g. "class=2" would accept
633 633
 			everything from 200 to 299 as valid response). This parameter can
634 634
 			be modified via config framework.
635
- 		</para>
636
- 		<para>
635
+		</para>
636
+		<para>
637 637
 			Please note that the response codes the module accepts as valid reply to the
638 638
 			PING-Method are not only the ones generated from the remote servers, but also those
639 639
 			that are generated locally. E.g.: setting code=408 or class=400 will never set
640 640
 			a backend down even if it is, because internally the Kamailio transaction layer
641 641
 			generates a 408 in the case of no response from the remote server, and this
642 642
 			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>
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>
661 661
 		Controls what gateways are tested to see if they are reachable.
662 662
 		</para>
663 663
 
664 664
 		<itemizedlist>
665 665
 		<listitem>
666 666
 			<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.
667
+			After a gateway is probed, the PROBING state is cleared in this mode.
668 668
 			This means that no probing will be executed at all only if flag in config file is set to 8/PROBING
669 669
 			(please check destination list file syntaxis for more details), it will probe only one time at startup or 
670 670
 			after dispatcher reload.</para>
... ...
@@ -681,29 +685,29 @@ modparam("dispatcher", "force_dst", 1)
681 681
 		</listitem>
682 682
 		<listitem>
683 683
 			<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
684
+				without modifying/removing the PROBING state.  This allows selected gateways
685 685
 				to be probed continually, regardless of state changes.</para>
686 686
 		</listitem>
687 687
 		</itemizedlist>
688 688
 
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>
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>
702 702
 	</section>
703 703
 
704
- 	<section id="dispatcher.p.ds_ping_latency_stats">
705
- 		<title><varname>ds_ping_latency_stats</varname> (int)</title>
706
- 		<para>
704
+	<section id="dispatcher.p.ds_ping_latency_stats">
705
+		<title><varname>ds_ping_latency_stats</varname> (int)</title>
706
+		<para>
707 707
 		Enable latency measurement when pinging nodes
708 708
 		</para>
709 709
 
... ...
@@ -716,17 +720,17 @@ modparam("dispatcher", "force_dst", 1)
716 716
 			</para>
717 717
 		</listitem>
718 718
 		</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">
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">
727 727
 # using the command :
728 728
 kamcmd dispatcher.list
729
- ...
729
+...
730 730
 DEST: {
731 731
 	URI: sip:1.2.3.4
732 732
 	FLAGS: AX
... ...
@@ -739,143 +743,143 @@ DEST: {
739 739
 		TIMEOUT: 0     # count of ping timeouts
740 740
 	}
741 741
 }
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>
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>
756 756
 		<para>
757 757
 		The value to be used to control the memory of the estimator EWMA "exponential weighted moving average" or
758 758
 		"the speed at which the older samples are dampened"
759 759
 		a good explanation can be found here : http://www.itl.nist.gov/div898/handbook/pmc/section3/pmc324.htm
760 760
 		Because Kamailio doesn't support float parameter types, the value in the parameter is divided by 1000 and stored as float.
761 761
 		For example, if you want to set the alpha to be 0.75, use value 750 here.
762
- 		</para>
763
- 		<para>
764
- 		<emphasis>
762
+		</para>
763
+		<para>
764
+		<emphasis>
765 765
 			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>
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>
780 780
 		The value to be used as power of two to set the number of slots
781 781
 		to hash table storing data for call load dispatching (e.g., value
782 782
 		8 will create a hash table with 256 slots).
783 783
 		It must be greater than 0 to enable call load dispatching feature
784 784
 		(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>
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>
803 803
 		Expiration time in seconds to remove the load on a destination if no
804 804
 		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>
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>
823 823
 		Expiration time in seconds to remove the load on a destination if no
824 824
 		200 for INVITE was received meanwhile and state updated with
825 825
 		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>
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>
844 844
 		Time interval in seconds to scan internal hash table with call load
845 845
 		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>
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>
864 864
 		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>
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>
879 879
 	</section>
880 880
 
881 881
 	<section id="dispatcher.p.ds_default_socket">
... ...
@@ -894,11 +898,11 @@ DEST: {
894 894
 		is ignored.</para>
895 895
 		<example>
896 896
 		<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>
897
+<programlisting format="linespecific">
898
+...
899
+modparam("dispatcher", "ds_default_socket", "udp:192.168.0.125:5060")
900
+...
901
+</programlisting>
902 902
 		</example>
903 903
 	</section>
904 904
 
... ...
@@ -918,19 +922,19 @@ DEST: {
918 918
 		(this parameter has higher priority).</para>
919 919
 		<example>
920 920
 		<title>Set the <quote>ds_default_sockname</quote> parameter</title>
921
- <programlisting format="linespecific">
922
- ...
921
+<programlisting format="linespecific">
922
+...
923 923
  listen=udp:1.2.3.4:5060 name "sock1"
924
- ...
925
- modparam("dispatcher", "ds_default_sockname", "sock1")
926
- ...
927
- </programlisting>
924
+...
925
+modparam("dispatcher", "ds_default_sockname", "sock1")
926
+...
927
+</programlisting>
928 928
 		</example>
929 929
 	</section>
930 930
 
931
- 	<section id="dispatcher.p.ds_timer_mode">
932
- 		<title><varname>ds_timer_mode</varname> (int)</title>
933
- 		<para>
931
+	<section id="dispatcher.p.ds_timer_mode">
932
+		<title><varname>ds_timer_mode</varname> (int)</title>
933
+		<para>
934 934
 			Specify the timer process to be used by the module for
935 935
 			keepalives and active dialogs tracking.
936 936
 		</para>
... ...
@@ -946,25 +950,25 @@ DEST: {
946 946
 		</listitem>
947 947
 		</itemizedlist>
948 948
 
949
- 		<para>
949
+		<para>
950 950
 			On a server with a lot of traffic, using secondary
951 951
 			timer can help with performances, because the main timer
952 952
 			can be overloaded by taking care of transactions retransmissions
953 953
 			and expirations of items in memory.
954 954
 		</para>
955 955
 		<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>
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>
968 968
 	</section>
969 969
 	<section id="dispatcher.p.event_callback">
970 970
 		<title><varname>event_callback</varname> (str)</title>
... ...
@@ -998,26 +1002,26 @@ end
998 998
 		</example>
999 999
 	</section>
1000 1000
 
1001
- 	<section id="dispatcher.p.ds_attrs_none">
1002
- 		<title><varname>ds_attrs_none</varname> (int)</title>
1003
- 		<para>