summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Protocols/SIP/SIPProto.cpp67
-rw-r--r--Protocols/SIP/sip.dsp8
2 files changed, 52 insertions, 23 deletions
diff --git a/Protocols/SIP/SIPProto.cpp b/Protocols/SIP/SIPProto.cpp
index cc7c5c4..e6dbb89 100644
--- a/Protocols/SIP/SIPProto.cpp
+++ b/Protocols/SIP/SIPProto.cpp
@@ -557,11 +557,18 @@ int SIPProto::Connect()
if (!IsEmpty(opts.stun.host))
{
- TCHAR tmp[1024];
- mir_sntprintf(tmp, MAX_REGS(tmp), _T("%s:%d"),
- CleanupSip(opts.stun.host),
- FirstGtZero(opts.stun.port, PJ_STUN_PORT));
- stun = TcharToSip(tmp).detach();
+ if (_tcsncmp(opts.stun.host, _T("sip:"), 4) == 0)
+ {
+ stun = TcharToSip(opts.stun.host).detach();
+ }
+ else
+ {
+ TCHAR tmp[1024];
+ mir_sntprintf(tmp, MAX_REGS(tmp), _T("%s:%d"),
+ CleanupSip(opts.stun.host),
+ FirstGtZero(opts.stun.port, PJ_STUN_PORT));
+ stun = TcharToSip(tmp).detach();
+ }
cfg.stun_srv_cnt = 1;
cfg.stun_srv[0] = pj_str(stun);
@@ -569,12 +576,18 @@ int SIPProto::Connect()
if (!IsEmpty(opts.dns.host))
{
- TCHAR tmp[1024];
- mir_sntprintf(tmp, MAX_REGS(tmp), _T("%s:%d"),
- CleanupSip(opts.dns.host),
- FirstGtZero(opts.dns.port, 53));
- dns = TcharToSip(tmp).detach();
-
+ if (_tcsncmp(opts.dns.host, _T("sip:"), 4) == 0)
+ {
+ dns = TcharToSip(opts.dns.host).detach();
+ }
+ else
+ {
+ TCHAR tmp[1024];
+ mir_sntprintf(tmp, MAX_REGS(tmp), _T("%s:%d"),
+ CleanupSip(opts.dns.host),
+ FirstGtZero(opts.dns.port, 53));
+ dns = TcharToSip(tmp).detach();
+ }
cfg.nameserver_count = 1;
cfg.nameserver[0] = pj_str(dns);
}
@@ -660,20 +673,36 @@ int SIPProto::Connect()
if (!IsEmpty(opts.registrar.host))
{
- BuildURI(tmp, MAX_REGS(tmp), NULL,
- CleanupSip(opts.registrar.host),
- FirstGtZero(opts.registrar.port, 5060));
- registrar = TcharToSip(tmp).detach();
+ if (_tcsncmp(opts.registrar.host, _T("sip:"), 4) == 0)
+ {
+ registrar = TcharToSip(opts.registrar.host).detach();
+ }
+ else
+ {
+ int port = FirstGtZero(opts.registrar.port, 5060);
+ BuildURI(tmp, MAX_REGS(tmp), NULL,
+ CleanupSip(opts.registrar.host),
+ port == 5060 ? 0 : port);
+ registrar = TcharToSip(tmp).detach();
+ }
cfg.reg_uri = pj_str(registrar);
}
if (!IsEmpty(opts.proxy.host))
{
- BuildURI(tmp, MAX_REGS(tmp), NULL,
- CleanupSip(opts.proxy.host),
- FirstGtZero(opts.proxy.port, 5060));
- proxy = TcharToSip(tmp).detach();
+ if (_tcsncmp(opts.proxy.host, _T("sip:"), 4) == 0)
+ {
+ proxy = TcharToSip(opts.proxy.host).detach();
+ }
+ else
+ {
+ int port = FirstGtZero(opts.proxy.port, 5060);
+ BuildURI(tmp, MAX_REGS(tmp), NULL,
+ CleanupSip(opts.proxy.host),
+ port == 5060 ? 0 : port);
+ proxy = TcharToSip(tmp).detach();
+ }
cfg.proxy_cnt = 1;
cfg.proxy[0] = pj_str(proxy);
diff --git a/Protocols/SIP/sip.dsp b/Protocols/SIP/sip.dsp
index cc83e5a..80d6ac3 100644
--- a/Protocols/SIP/sip.dsp
+++ b/Protocols/SIP/sip.dsp
@@ -46,7 +46,7 @@ RSC=rc.exe
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MD /W3 /GX /O1 /YX /FD /c
# SUBTRACT BASE CPP /Fr
-# ADD CPP /nologo /G4 /MT /W3 /GX /O2 /Ob0 /I "../../include" /I "sdk" /I "lib/pjsip/pjlib/include" /I "lib/pjsip/pjlib-util/include" /I "lib\pjsip\pjmedia\include" /I "lib\pjsip\pjnath\include" /I "lib\pjsip\pjsip\include" /D "WIN32" /D "W32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /Fr /YX /FD /c
+# ADD CPP /nologo /G4 /MT /W3 /GX /O2 /Ob0 /I "../../include" /I "sdk" /I "lib/pjsip/pjlib/include" /I "lib/pjsip/pjlib-util/include" /I "lib\pjsip\pjmedia\include" /I "lib\pjsip\pjnath\include" /I "lib\pjsip\pjsip\include" /D PJ_WIN32=1 /D "WIN32" /D "W32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /Fr /YX /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x417 /d "NDEBUG"
@@ -75,7 +75,7 @@ LINK32=link.exe
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /G4 /MT /W3 /GX /O2 /Ob0 /I "../../include" /FR /YX /FD /c
-# ADD CPP /nologo /G4 /MDd /W3 /GX /ZI /Od /I "../../include" /I "sdk" /I "lib/pjsip/pjlib/include" /I "lib/pjsip/pjlib-util/include" /I "lib\pjsip\pjmedia\include" /I "lib\pjsip\pjnath\include" /I "lib\pjsip\pjsip\include" /D "WIN32" /D "W32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /FR /YX /FD /c
+# ADD CPP /nologo /G4 /MDd /W3 /GX /ZI /Od /I "../../include" /I "sdk" /I "lib/pjsip/pjlib/include" /I "lib/pjsip/pjlib-util/include" /I "lib\pjsip\pjmedia\include" /I "lib\pjsip\pjnath\include" /I "lib\pjsip\pjsip\include" /D PJ_WIN32=1 /D "WIN32" /D "W32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /FR /YX /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x417 /d "NDEBUG"
@@ -104,7 +104,7 @@ LINK32=link.exe
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /G4 /MTd /W3 /GX /ZI /Od /I "../../include" /FR /YX /FD /c
-# ADD CPP /nologo /G4 /MDd /W3 /GX /ZI /Od /I "../../include" /I "sdk" /I "lib/pjsip/pjlib/include" /I "lib/pjsip/pjlib-util/include" /I "lib\pjsip\pjmedia\include" /I "lib\pjsip\pjnath\include" /I "lib\pjsip\pjsip\include" /D "WIN32" /D "W32" /D "_DEBUG" /D "_WINDOWS" /D "_UNICODE" /D "UNICODE" /D "_USRDLL" /FR /YX /FD /c
+# ADD CPP /nologo /G4 /MDd /W3 /GX /Zi /Od /I "../../include" /I "sdk" /I "lib/pjsip/pjlib/include" /I "lib/pjsip/pjlib-util/include" /I "lib\pjsip\pjmedia\include" /I "lib\pjsip\pjnath\include" /I "lib\pjsip\pjsip\include" /D PJ_WIN32=1 /D "WIN32" /D "W32" /D "_DEBUG" /D "_WINDOWS" /D "_UNICODE" /D "UNICODE" /D "_USRDLL" /FR /YX /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x417 /d "NDEBUG"
@@ -133,7 +133,7 @@ LINK32=link.exe
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /G4 /MT /W3 /GX /O2 /Ob0 /I "../../include" /Fr /YX /FD /c
-# ADD CPP /nologo /G4 /MT /W3 /GX /O2 /Ob0 /I "../../include" /I "sdk" /I "lib/pjsip/pjlib/include" /I "lib/pjsip/pjlib-util/include" /I "lib\pjsip\pjmedia\include" /I "lib\pjsip\pjnath\include" /I "lib\pjsip\pjsip\include" /D "WIN32" /D "W32" /D "NDEBUG" /D "_WINDOWS" /D "_UNICODE" /D "UNICODE" /D "_USRDLL" /Fr /YX /FD /c
+# ADD CPP /nologo /G4 /MT /W3 /GX /O2 /Ob0 /I "../../include" /I "sdk" /I "lib/pjsip/pjlib/include" /I "lib/pjsip/pjlib-util/include" /I "lib\pjsip\pjmedia\include" /I "lib\pjsip\pjnath\include" /I "lib\pjsip\pjsip\include" /D PJ_WIN32=1 /D "WIN32" /D "W32" /D "NDEBUG" /D "_WINDOWS" /D "_UNICODE" /D "UNICODE" /D "_USRDLL" /Fr /YX /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x417 /d "NDEBUG"