Index: /pjproject/trunk/pjmedia/build/pjmedia.vcxproj
===================================================================
--- /pjproject/trunk/pjmedia/build/pjmedia.vcxproj	(revision 5745)
+++ /pjproject/trunk/pjmedia/build/pjmedia.vcxproj	(revision 5746)
@@ -200,6 +200,7 @@
   <PropertyGroup>
     <PlatformToolset>$(BuildToolset)</PlatformToolset>
-    <CharacterSet Condition="'$(API_Family)'!='WinDesktop'"></CharacterSet>
-  </PropertyGroup>  
+    <CharacterSet Condition="'$(API_Family)'!='WinDesktop'">
+    </CharacterSet>
+  </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
@@ -297,5 +298,5 @@
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup>
-    <_ProjectFileVersion>14.0.22823.1</_ProjectFileVersion>    
+    <_ProjectFileVersion>14.0.22823.1</_ProjectFileVersion>
   </PropertyGroup>
   <!-- Compile and link option definition -->
@@ -513,4 +514,44 @@
     <ClCompile Include="..\src\pjmedia\transport_loop.c" />
     <ClCompile Include="..\src\pjmedia\transport_srtp.c" />
+    <ClCompile Include="..\src\pjmedia\transport_srtp_dtls.c">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release-Static|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug-Dynamic|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug-Static|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release-Dynamic|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release-Static|ARM'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug-Dynamic|ARM'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug-Static|ARM'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release-Dynamic|ARM'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release-Static|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug-Dynamic|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug-Static|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release-Dynamic|x64'">true</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="..\src\pjmedia\transport_srtp_sdes.c">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release-Static|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug-Dynamic|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug-Static|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release-Dynamic|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release-Static|ARM'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug-Dynamic|ARM'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug-Static|ARM'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release-Dynamic|ARM'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release-Static|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug-Dynamic|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug-Static|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release-Dynamic|x64'">true</ExcludedFromBuild>
+    </ClCompile>
     <ClCompile Include="..\src\pjmedia\transport_udp.c" />
     <ClCompile Include="..\src\pjmedia\types.c" />
Index: /pjproject/trunk/pjmedia/build/pjmedia.vcxproj.filters
===================================================================
--- /pjproject/trunk/pjmedia/build/pjmedia.vcxproj.filters	(revision 5745)
+++ /pjproject/trunk/pjmedia/build/pjmedia.vcxproj.filters	(revision 5746)
@@ -216,4 +216,10 @@
       <Filter>Source Files</Filter>
     </ClCompile>
+    <ClCompile Include="..\src\pjmedia\transport_srtp_dtls.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\src\pjmedia\transport_srtp_sdes.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
Index: /pjproject/trunk/pjmedia/src/pjmedia/transport_srtp.c
===================================================================
--- /pjproject/trunk/pjmedia/src/pjmedia/transport_srtp.c	(revision 5745)
+++ /pjproject/trunk/pjmedia/src/pjmedia/transport_srtp.c	(revision 5746)
@@ -120,4 +120,7 @@
 #endif
 
+/* Maximum number of SRTP keying method */
+#define MAX_KEYING		    2
+
 static const pj_str_t ID_RTP_AVP  = { "RTP/AVP", 7 };
 static const pj_str_t ID_RTP_SAVP = { "RTP/SAVP", 8 };
@@ -284,6 +287,10 @@
      * method, any other keying methods will be stopped and destroyed.
      */
+    unsigned		 all_keying_cnt;
+    pjmedia_transport	*all_keying[MAX_KEYING];
+
+    /* Current active SRTP keying methods. */
     unsigned		 keying_cnt;
-    pjmedia_transport	*keying[2];
+    pjmedia_transport	*keying[MAX_KEYING];
 
     /* If not zero, keying nego is ongoing (async-ly, e.g: by DTLS-SRTP).
@@ -718,10 +725,10 @@
 
     /* Initialize SRTP keying method. */
-    for (i = 0; i < srtp->setting.keying_count; ++i) {
+    for (i = 0; i < srtp->setting.keying_count && i < MAX_KEYING; ++i) {
 	switch(srtp->setting.keying[i]) {
 
 	case PJMEDIA_SRTP_KEYING_SDES:
 #if defined(PJMEDIA_SRTP_HAS_SDES) && (PJMEDIA_SRTP_HAS_SDES != 0)
-	    sdes_create(srtp, &srtp->keying[srtp->keying_cnt++]);
+	    sdes_create(srtp, &srtp->all_keying[srtp->all_keying_cnt++]);
 #endif
 	    break;
@@ -729,5 +736,5 @@
 	case PJMEDIA_SRTP_KEYING_DTLS_SRTP:
 #if defined(PJMEDIA_SRTP_HAS_DTLS) && (PJMEDIA_SRTP_HAS_DTLS != 0)
-	    dtls_create(srtp, &srtp->keying[srtp->keying_cnt++]);
+	    dtls_create(srtp, &srtp->all_keying[srtp->all_keying_cnt++]);
 #endif
 	    break;
@@ -1039,5 +1046,5 @@
 	      sizeof(srtp_info));
 
-    /* Invoke get_info() of all keying methods */
+    /* Invoke get_info() from any active keying method */
     for (i=0; i < srtp->keying_cnt; i++)
 	pjmedia_transport_get_info(srtp->keying[i], info);
@@ -1372,5 +1379,5 @@
     struct transport_srtp *srtp = (struct transport_srtp*) tp;
     unsigned member_tp_option;
-    pj_status_t last_err_st = PJ_EBUG;
+    pj_status_t keying_status = PJ_SUCCESS;
     pj_status_t status;
     unsigned i;
@@ -1384,13 +1391,20 @@
     srtp->offerer_side = (sdp_remote == NULL);
 
-    if (srtp->offerer_side && srtp->setting.use == PJMEDIA_SRTP_DISABLED)
+    if (srtp->offerer_side && srtp->setting.use == PJMEDIA_SRTP_DISABLED) {
 	srtp->bypass_srtp = PJ_TRUE;
-    else
+	srtp->keying_cnt = 0;
+    } else {
+	srtp->bypass_srtp = PJ_FALSE;
+	srtp->keying_cnt = srtp->all_keying_cnt;
+	for (i = 0; i < srtp->all_keying_cnt; ++i)
+	    srtp->keying[i] = srtp->all_keying[i];
+
 	member_tp_option |= PJMEDIA_TPMED_NO_TRANSPORT_CHECKING;
+    }
 
     status = pjmedia_transport_media_create(srtp->member_tp, sdp_pool,
 					    member_tp_option, sdp_remote,
 					    media_index);
-    if (status != PJ_SUCCESS || srtp->bypass_srtp)
+    if (status != PJ_SUCCESS)
 	return status;
 
@@ -1406,5 +1420,5 @@
 			   srtp->keying_cnt, i);
 	    srtp->keying_cnt--;
-	    last_err_st = st;
+	    keying_status = st;
 	    continue;
 	} else if (srtp->offerer_side) {
@@ -1420,5 +1434,5 @@
     /* All keying method failed to process remote SDP? */
     if (srtp->keying_cnt == 0)
-	return last_err_st;
+	return keying_status;
 
     return PJ_SUCCESS;
@@ -1432,5 +1446,5 @@
 {
     struct transport_srtp *srtp = (struct transport_srtp*) tp;
-    pj_status_t last_err_st = PJ_EBUG;
+    pj_status_t keying_status = PJ_SUCCESS;
     pj_status_t status;
     unsigned i;
@@ -1445,5 +1459,5 @@
     status = pjmedia_transport_encode_sdp(srtp->member_tp, sdp_pool,
 					  sdp_local, sdp_remote, media_index);
-    if (status != PJ_SUCCESS || srtp->bypass_srtp)
+    if (status != PJ_SUCCESS)
 	return status;
 
@@ -1459,5 +1473,5 @@
 			   srtp->keying_cnt, i);
 	    srtp->keying_cnt--;
-	    last_err_st = st;
+	    keying_status = st;
 	    continue;
 	}
@@ -1483,5 +1497,5 @@
     /* All keying method failed to process remote SDP? */
     if (srtp->keying_cnt == 0)
-	return last_err_st;
+	return keying_status;
 
     return PJ_SUCCESS;
@@ -1496,5 +1510,5 @@
 {
     struct transport_srtp *srtp = (struct transport_srtp*) tp;
-    pj_status_t last_err_st = PJ_EBUG;
+    pj_status_t keying_status = PJ_SUCCESS;
     pj_status_t status;
     unsigned i;
@@ -1505,5 +1519,5 @@
 					   sdp_local, sdp_remote,
 				           media_index);
-    if (status != PJ_SUCCESS || srtp->bypass_srtp)
+    if (status != PJ_SUCCESS)
 	return status;
 
@@ -1518,5 +1532,5 @@
 			   srtp->keying_cnt, i);
 	    srtp->keying_cnt--;
-	    last_err_st = status;
+	    keying_status = status;
 	    continue;
 	}
@@ -1542,5 +1556,5 @@
     /* All keying method failed to process remote SDP? */
     if (srtp->keying_cnt == 0)
-	return last_err_st;
+	return keying_status;
 
     /* If SRTP key is being negotiated, just return now.
@@ -1624,4 +1638,2 @@
 
 #endif
-
-
Index: /pjproject/trunk/pjmedia/src/pjmedia/transport_srtp_dtls.c
===================================================================
--- /pjproject/trunk/pjmedia/src/pjmedia/transport_srtp_dtls.c	(revision 5745)
+++ /pjproject/trunk/pjmedia/src/pjmedia/transport_srtp_dtls.c	(revision 5746)
@@ -375,5 +375,9 @@
     unsigned i;
     int mode, rc;
-        
+
+    /* Check if it is already instantiated */
+    if (ds->ossl_ssl)
+	return PJ_SUCCESS;
+
     /* Create DTLS context */
     ctx = SSL_CTX_new(DTLS_method());
@@ -685,4 +689,9 @@
     pj_status_t status;
     int err;
+
+    /* Init DTLS (if not yet) */
+    status = ssl_create(ds);
+    if (status != PJ_SUCCESS)
+	return status;
 
     /* Check if handshake has been initiated or even completed */
@@ -1014,11 +1023,4 @@
     }
 
-    /* Init DTLS */
-    if (!ds->ossl_ssl) {
-	status = ssl_create(ds);
-	if (status != PJ_SUCCESS)
-	    goto on_return;
-    }
-
     /* Set remote cert fingerprint verification status to PJ_EPENDING */
     ds->rem_fprint_status = PJ_EPENDING;
@@ -1100,13 +1102,18 @@
 	    ds->nego_started = PJ_FALSE;
 	    ds->got_keys = PJ_FALSE;
-
-	    status = ssl_create(ds);
-	    if (status != PJ_SUCCESS)
-		goto on_return;
-	}
-    }
-
-    /* Set media transport to UDP/TLS/RTP/SAVP */
-    m_loc->desc.transport = ID_TP_DTLS_SRTP;
+	    ds->rem_fprint_status = PJ_EPENDING;
+	}
+    }
+
+    /* Set media transport to UDP/TLS/RTP/SAVP if we are the offerer,
+     * otherwise just match it to the offer (currently we only accept
+     * UDP/TLS/RTP/SAVP in remote offer though).
+     */
+    if (ds->srtp->offerer_side) {
+	m_loc->desc.transport = ID_TP_DTLS_SRTP;
+    } else {
+	m_loc->desc.transport = 
+			    sdp_remote->media[media_index]->desc.transport;
+    }
 
     /* Add a=fingerprint attribute, fingerprint of our TLS certificate */
@@ -1170,4 +1177,5 @@
 	use_ice = ice_info && ice_info->comp_cnt;
 	if (!use_ice) {
+	    /* Start SSL nego */
 	    status = ssl_handshake(ds);
 	    if (status != PJ_SUCCESS)
@@ -1223,8 +1231,5 @@
 	    ds->nego_started = PJ_FALSE;
 	    ds->got_keys = PJ_FALSE;
-
-	    status = ssl_create(ds);
-	    if (status != PJ_SUCCESS)
-		goto on_return;
+	    ds->rem_fprint_status = PJ_EPENDING;
 	}
     } else {
@@ -1387,9 +1392,9 @@
 
     /* Find DTLS keying and destroy any other keying. */
-    for (j = 0; j < srtp->keying_cnt; ++j) {
-	if (srtp->keying[j]->op == &dtls_op)
-	    ds = (dtls_srtp*)srtp->keying[j];
+    for (j = 0; j < srtp->all_keying_cnt; ++j) {
+	if (srtp->all_keying[j]->op == &dtls_op)
+	    ds = (dtls_srtp*)srtp->all_keying[j];
 	else
-	    pjmedia_transport_close(srtp->keying[j]);
+	    pjmedia_transport_close(srtp->all_keying[j]);
     }
 
@@ -1401,5 +1406,5 @@
     srtp->keying_cnt = 1;
     srtp->keying[0] = &ds->base;
-    srtp->keying_pending_cnt = 1;
+    srtp->keying_pending_cnt = 0;
 
     /* Apply param to DTLS-SRTP internal states */
@@ -1413,9 +1418,4 @@
     ds->pending_start = PJ_TRUE;
     srtp->keying_pending_cnt++;
-
-    /* Create SSL */
-    status = ssl_create(ds);
-    if (status != PJ_SUCCESS)
-	goto on_return;
 
     /* Attach member transport, so we can send/receive DTLS init packets */
Index: /pjproject/trunk/pjmedia/src/pjmedia/transport_srtp_sdes.c
===================================================================
--- /pjproject/trunk/pjmedia/src/pjmedia/transport_srtp_sdes.c	(revision 5745)
+++ /pjproject/trunk/pjmedia/src/pjmedia/transport_srtp_sdes.c	(revision 5746)
@@ -280,6 +280,5 @@
     /* Validations */
     if (srtp->offerer_side) {
-	if (srtp->setting.use == PJMEDIA_SRTP_DISABLED)
-	    srtp->bypass_srtp = PJ_TRUE;
+	/* As offerer: do nothing. */
     } else {
 	pjmedia_sdp_media *m_rem = sdp_remote->media[media_index];
Index: /pjproject/trunk/pjmedia/src/pjmedia/vid_stream_info.c
===================================================================
--- /pjproject/trunk/pjmedia/src/pjmedia/vid_stream_info.c	(revision 5745)
+++ /pjproject/trunk/pjmedia/src/pjmedia/vid_stream_info.c	(revision 5746)
@@ -243,5 +243,5 @@
 	si->proto = PJMEDIA_TP_PROTO_RTP_AVP;
 
-    } else if (pj_stricmp(&local_m->desc.transport, &ID_RTP_SAVP) == 0) {
+    } else if (pj_stristr(&local_m->desc.transport, &ID_RTP_SAVP)) {
 
 	si->proto = PJMEDIA_TP_PROTO_RTP_SAVP;
Index: /pjproject/trunk/pjsip-apps/src/pjsua/pjsua_app.c
===================================================================
--- /pjproject/trunk/pjsip-apps/src/pjsua/pjsua_app.c	(revision 5745)
+++ /pjproject/trunk/pjsip-apps/src/pjsua/pjsua_app.c	(revision 5746)
@@ -1011,4 +1011,23 @@
 }
 
+/*
+ * This callback is called when media transport SRTP needs to be created.
+ */
+static void on_create_media_transport_srtp(pjsua_call_id call_id,
+					   unsigned media_idx,
+					   pjmedia_srtp_setting *srtp_opt)
+{
+    PJ_UNUSED_ARG(call_id);
+    PJ_UNUSED_ARG(media_idx);
+
+    /* Set SRTP keying to use DTLS over SDES */
+    if (app_config.srtp_keying == 1) {
+	srtp_opt->keying_count = 2;
+	srtp_opt->keying[0] = PJMEDIA_SRTP_KEYING_DTLS_SRTP;
+	srtp_opt->keying[1] = PJMEDIA_SRTP_KEYING_SDES;
+    }
+}
+
+
 #ifdef TRANSPORT_ADAPTER_SAMPLE
 /*
@@ -1344,4 +1363,6 @@
     app_config.cfg.cb.on_snd_dev_operation = &on_snd_dev_operation;
     app_config.cfg.cb.on_call_media_event = &on_call_media_event;
+    app_config.cfg.cb.on_create_media_transport_srtp =
+					    &on_create_media_transport_srtp;
 #ifdef TRANSPORT_ADAPTER_SAMPLE
     app_config.cfg.cb.on_create_media_transport = &on_create_media_transport;
Index: /pjproject/trunk/pjsip-apps/src/pjsua/pjsua_app_common.h
===================================================================
--- /pjproject/trunk/pjsip-apps/src/pjsua/pjsua_app_common.h	(revision 5745)
+++ /pjproject/trunk/pjsip-apps/src/pjsua/pjsua_app_common.h	(revision 5746)
@@ -85,4 +85,5 @@
     pjsua_transport_config  rtp_cfg;
     pjsip_redirect_op	    redir_op;
+    int			    srtp_keying;
 
     unsigned		    acc_cnt;
Index: /pjproject/trunk/pjsip-apps/src/pjsua/pjsua_app_config.c
===================================================================
--- /pjproject/trunk/pjsip-apps/src/pjsua/pjsua_app_config.c	(revision 5745)
+++ /pjproject/trunk/pjsip-apps/src/pjsua/pjsua_app_config.c	(revision 5746)
@@ -192,4 +192,8 @@
     puts  ("  --turn-user         TURN username");
     puts  ("  --turn-passwd       TURN password");
+#if defined(PJMEDIA_HAS_SRTP) && (PJMEDIA_HAS_SRTP != 0)
+    puts  ("  --srtp-keying       SRTP keying method for outgoing SDP offer.");
+    puts  ("                      0=SDES (default), 1=DTLS");
+#endif
 
     puts  ("");
@@ -356,5 +360,5 @@
 	   OPT_USE_ICE, OPT_ICE_REGULAR, OPT_USE_SRTP, OPT_SRTP_SECURE,
 	   OPT_USE_TURN, OPT_ICE_MAX_HOSTS, OPT_ICE_NO_RTCP, OPT_TURN_SRV,
-	   OPT_TURN_TCP, OPT_TURN_USER, OPT_TURN_PASSWD,
+	   OPT_TURN_TCP, OPT_TURN_USER, OPT_TURN_PASSWD, OPT_SRTP_KEYING,
 	   OPT_PLAY_FILE, OPT_PLAY_TONE, OPT_RTP_PORT, OPT_ADD_CODEC,
 	   OPT_ILBC_MODE, OPT_REC_FILE, OPT_AUTO_REC,
@@ -453,4 +457,5 @@
 	{ "use-srtp",   1, 0, OPT_USE_SRTP},
 	{ "srtp-secure",1, 0, OPT_SRTP_SECURE},
+	{ "srtp-keying",1, 0, OPT_SRTP_KEYING},
 #endif
 	{ "add-codec",  1, 0, OPT_ADD_CODEC},
@@ -1042,4 +1047,13 @@
 	    cur_acc->srtp_secure_signaling = app_config.cfg.srtp_secure_signaling;
 	    break;
+	case OPT_SRTP_KEYING:
+	    app_config.srtp_keying = my_atoi(pj_optarg);
+	    if (!pj_isdigit(*pj_optarg) || app_config.srtp_keying < 0 ||
+		app_config.srtp_keying > 1)
+	    {
+		PJ_LOG(1,(THIS_FILE, "Invalid value for --srtp-keying option"));
+		return -1;
+	    }
+	    break;
 #endif
 
@@ -1926,4 +1940,10 @@
 	pj_strcat2(&cfg, line);
     }
+    if (app_config.srtp_keying >= 0 && app_config.srtp_keying <= 1)
+    {
+	pj_ansi_sprintf(line, "--srtp-keying %d\n",
+			app_config.srtp_keying);
+	pj_strcat2(&cfg, line);
+    }
 #endif
 
