< Previous by Date Date Index Next by Date >
< Previous in Thread Thread Index Next in Thread >

Re: [reSIProcate] resiprocate on WinCE


> I finally succeeded in creating a working Windows CE application
> using resiprocate. Is anyone interested in this? Or is resiprocate
> already being used on Windows CE? (I didn't find much information
> about it though)

Ok, I'll try to explain what I did to get resiprocate working on
WinCE, what problems I encountered and how they can be solved.
I'm using MS Visual Studio 8 and the Pocket PC 2003 SDK.

The resiprocate repository already includes several files to be able 
to compile the library on WinCE. In the subdirectory rutil/wince there
are several standard include files which usually don't exist on wince,
like sys/types.h, errno.h etc. The availability of these files makes
the port a lot easier.

Compiling the library for WinCE is not that hard. I used a WinCE static
library project and I added the following source files:
 - in contrib/ares: the ares_*.c files
 - in rutil: all *.cxx files
 - in rutil/dns: all *.cxx files
 - in rutil/stun: all *.cxx files
 - in rutil/wince: WceCompat.cxx
 - in resip/dum: all *.cxx files
 - in resip/stack: all *.cxx files except makeCert.cxx and MacSecurity.cxx

In the project settings, I added the following defines: WIN32, USE_ARES
and USING_CE

To the include directories, I added the rutil/wince, contrib/ares and
the ./ subdirectories (assuming that the project file is in the same
directory as the reSIProcate_7_1.sln file).

I also enabled the run-time type information flag in the project settings.

These settings should allow you to compile the library, but you won't 
be able to create a working test application. First of all, when you try
to link the application, you'll get errors saying that functions like
'time', 'gmtime' etc are not found. You can solve this problem by using
the LibCE library which can be found at:
http://studierstube.icg.tu-graz.ac.at/handheld_ar/

After doing this, linking the application worked, but the test program
crashed very soon. After some debugging, I found out that the problem
was that inside the library, a sizeof(SipStack) resulted in 0x47900,
but doing the same thing in my main routine, resulted in 0x478f0. This
16 byte difference caused stack corruption and resulted in a crashing
program.

In my WinCE test program, windows.h was included before the 
resip/SipStack.hxx file (by including the stdafx.h file). When compiling 
the resiprocate library, the windows.h file is not included first, and
this seems to cause some datatype do be defined differently (I haven't
found out which one(s) exactly). When an #include <windows.h> was added
to the SipStack.cxx file, the size difference was no longer there.

Unfortunately, adding that include line to the SipStack.cxx file did not
allow a slightly more complex program to run. I then used a small script
to add a line "#include "resipconfig.h" to all the *.cxx and *.hxx files
in the rutil, rutil/dns, rutil/stun, rutil/wince, resip/dum and resip/stack
directories. In that resipconfig.h file, i put the following lines:

#ifdef WIN32
        #include <winsock2.h>
        #include <windows.h>
#endif // WIN32

After this I recompiled the library and tried the BasicCall.cxx test
application (using a WinMain() instead of the main() function). The
program worked perfectly and to prove it, I've added its output
below. After this, I modified the BasicCall.cxx file to make a call
to a SIP phone possible, and using EMIPLIB for the VoIP part, I was
able to establish a VoIP session between my PDA and the SIP phone.

I'm not sure if the way I solved the problem is a clean solution, but
it worked for me. Hopefully, someone else may find this information
useful as well.

Bye,
Jori

As promised, the output of the BasicCall program:

Load module: sipce.exe
Load module: msvcr80.dll
Load module: iphlpapi.dll
Load module: WS2.dll
Load module: coredll.dll.0413.MUI
Load module: coredll.dll
INFO | 20060703-100116.000 | sipce | RESIP:TRANSPORT | 3468433582 | 
UdpTransport.cxx:36 | Creating UDP transport host= port=12005 ipv4=1
Load module: SSLLSP.DLL
Load module: AutoBind_lsp.dll
Load module: dtpt_lsp.dll
Load module: wspm.dll
INFO | 20060703-100119.000 | sipce | RESIP:TRANSPORT | 3468433582 | 
UdpTransport.cxx:36 | Creating UDP transport host= port=12010 ipv4=1
UAC: Sending Options Request to UAS.
UAC(OPTIONS): testAppDialogSet: created.
Load module: dtpt_nsp.dll
Load module: nspm.dll
WARNING | 20060703-100122.000 | sipce | RESIP:DNS | 3468433582 | 
DnsUtil.cxx:142 | local hostname does not contain a domain part
UAC: Sending Invite Request to UAS.
UAC(INVITE): testAppDialogSet: created.
INFO | 20060703-100124.000 | sipce | RESIP:DUM | 3468433582 | 
DialogUsageManager.cxx:1170 | Got: SipReq:  OPTIONS UAS@xxxxxxxxx:12010 
tid=604ea76a6b21cd6a cseq=OPTIONS contact=UAC@xxxxxxxxx:12005 / 1 from(wire)
UAS(OPTIONS): testAppDialogSet: created.
UAS(OPTIONS): testAppDialogSet: UAS UserProfile requested for msg: SipReq:  
OPTIONS UAS@xxxxxxxxx:12010 tid=604ea76a6b21cd6a cseq=OPTIONS 
contact=UAC@xxxxxxxxx:12005 / 1 from(wire)
UAS: ServerOutOfDialogReq-onReceivedRequest - SipReq:  OPTIONS 
UAS@xxxxxxxxx:12010 tid=604ea76a6b21cd6a cseq=OPTIONS 
contact=UAC@xxxxxxxxx:12005 / 1 from(wire)
UAS: Sending 200 response to OPTIONS.
UAS(OPTIONS): testAppDialogSet: destroyed.
INFO | 20060703-100130.000 | sipce | RESIP:TRANSACTION | 3468433582 | 
TransactionState.cxx:762 | Retransmitting INVITE: SipReq:  INVITE 
UAS@xxxxxxxxx:12010 tid=8b49874ddd134919 cseq=INVITE 
contact=UAC@xxxxxxxxx:12005 / 1 from(tu)
INFO | 20060703-100133.000 | sipce | RESIP:DUM | 3468433582 | 
DialogUsageManager.cxx:1170 | Got: SipReq:  INVITE UAS@xxxxxxxxx:12010 
tid=8b49874ddd134919 cseq=INVITE contact=UAC@xxxxxxxxx:12005 / 1 from(wire)
UAS(INVITE): testAppDialogSet: created.
UAS(INVITE): testAppDialogSet: UAS UserProfile requested for msg: SipReq:  
INVITE UAS@xxxxxxxxx:12010 tid=8b49874ddd134919 cseq=INVITE 
contact=UAC@xxxxxxxxx:12005 / 1 from(wire)
UAS(INVITE): testAppDialog: created.
INFO | 20060703-100137.000 | sipce | RESIP:DUM | 3468433582 | 
InviteSession.cxx:2047 | Transition UAS_Start -> UAS_Offer
UAS: ServerInviteSession-onNewSession - SipReq:  INVITE UAS@xxxxxxxxx:12010 
tid=8b49874ddd134919 cseq=INVITE contact=UAC@xxxxxxxxx:12005 / 1 from(wire)
UAS: Sending 180 response.
INFO | 20060703-100140.000 | sipce | RESIP:DUM | 3468433582 | 
ServerInviteSession.cxx:93 | UAS_Offer: provisional(180)
INFO | 20060703-100141.000 | sipce | RESIP:DUM | 3468433582 | 
InviteSession.cxx:2047 | Transition UAS_Offer -> UAS_EarlyOffer
UAS: InviteSession-onOffer(SDP)
UAS: Sending 200 response with SDP answer.
INFO | 20060703-100143.000 | sipce | RESIP:DUM | 3468433582 | 
ServerInviteSession.cxx:253 | UAS_EarlyOffer: provideAnswer
INFO | 20060703-100144.000 | sipce | RESIP:DUM | 3468433582 | 
InviteSession.cxx:2047 | Transition UAS_EarlyOffer -> UAS_EarlyProvidedAnswer
INFO | 20060703-100146.000 | sipce | RESIP:DUM | 3468433582 | 
ServerInviteSession.cxx:445 | UAS_EarlyProvidedAnswer: accept(200)
INFO | 20060703-100147.000 | sipce | RESIP:DUM | 3468433582 | 
InviteSession.cxx:2047 | Transition UAS_EarlyProvidedAnswer -> UAS_Accepted
UAS: InviteSession-onConnected - SipResp: 200 tid=8b49874ddd134919 cseq=INVITE 
contact=UAS@xxxxxxxxx:12010 / 1 from(tu)
INFO | 20060703-100149.000 | sipce | RESIP:TRANSACTION | 3468433582 | 
TransactionState.cxx:762 | Retransmitting INVITE: SipReq:  INVITE 
UAS@xxxxxxxxx:12010 tid=8b49874ddd134919 cseq=INVITE 
contact=UAC@xxxxxxxxx:12005 / 1 from(tu)
INFO | 20060703-100152.000 | sipce | RESIP:DUM | 3468433582 | 
InviteSession.cxx:778 | Retransmitting: 
SIP/2.0 200 OK

Via: SIP/2.0/UDP 
127.0.0.1:12005;branch=z9hG4bK-d87543-8b49874ddd134919-1--d87543-;rport=12005

Contact: <sip:UAS@xxxxxxxxx:12010>

To: <sip:UAS@xxxxxxxxx:12010>;tag=5120015b

From: <sip:UAC@xxxxxxxxx:1205>;tag=121cd071

Call-ID: 9e396f2271672908NDJiZDJhMjlkYjA3NTE3MmFjYjZiZDE0NTFmNGQ2ZmE.

CSeq: 1 INVITE

Allow: INVITE, ACK, CANCEL, OPTIONS, BYE

Content-Type: application/sdp

Content-Length: 266



v=0

o=1900 369696545 369696545 IN IP4 192.168.2.15

s=X-Lite

c=IN IP4 192.168.2.15

t=0 0

m=audio 8000 RTP/AVP 8 3 98 97 101

a=fmtp:101 0-15

a=rtpmap:8 pcma/8000

a=rtpmap:3 gsm/8000

a=rtpmap:98 iLBC

a=rtpmap:97 speex/8000

a=rtpmap:101 telephone-event/8000


INFO | 20060703-100159.000 | sipce | RESIP:TRANSACTION | 3468433582 | 
TransactionState.cxx:762 | Retransmitting INVITE: SipReq:  INVITE 
UAS@xxxxxxxxx:12010 tid=8b49874ddd134919 cseq=INVITE 
contact=UAC@xxxxxxxxx:12005 / 1 from(tu)
INFO | 20060703-100202.000 | sipce | RESIP:DUM | 3468433582 | 
DialogUsageManager.cxx:1170 | Got: SipResp: 200 tid=604ea76a6b21cd6a 
cseq=OPTIONS contact=127.0.0.1:12010 / 1 from(wire)
UAC: ClientOutOfDialogReq-onSuccess - SipResp: 200 tid=604ea76a6b21cd6a 
cseq=OPTIONS contact=127.0.0.1:12010 / 1 from(wire)
INFO | 20060703-100205.000 | sipce | RESIP:DUM | 3468433582 | 
DialogUsageManager.cxx:1170 | Got: SipResp: 408 tid=8b49874ddd134919 
cseq=INVITE / 1 from(wire)
UAC(INVITE): testAppDialog: created.
INFO | 20060703-100206.000 | sipce | RESIP:DUM | 3468433582 | Dialog.cxx:546 | 
Dialog::dispatch, ignoring stray response: SipResp: 408 tid=8b49874ddd134919 
cseq=INVITE / 1 from(wire)
INFO | 20060703-100208.000 | sipce | RESIP:DUM | 3468433582 | 
ClientInviteSession.cxx:703 | Failure:  error response: SipResp: 408 
tid=8b49874ddd134919 cseq=INVITE / 1 from(wire)
INFO | 20060703-100210.000 | sipce | RESIP:DUM | 3468433582 | 
InviteSession.cxx:2047 | Transition UAC_Start -> InviteSession::Terminated
UAC: ClientInviteSession-onFailure - SipResp: 408 tid=8b49874ddd134919 
cseq=INVITE / 1 from(wire)
UAC: InviteSession-onTerminated - SipResp: 408 tid=8b49874ddd134919 
cseq=INVITE / 1 from(wire)
UAC(OPTIONS): testAppDialogSet: destroyed.
UAC(INVITE): testAppDialog: destroyed.
UAC(INVITE): testAppDialogSet: destroyed.
INFO | 20060703-100214.000 | sipce | RESIP:DUM | 3468433582 | 
InviteSession.cxx:778 | Retransmitting: 
SIP/2.0 200 OK

Via: SIP/2.0/UDP 
127.0.0.1:12005;branch=z9hG4bK-d87543-8b49874ddd134919-1--d87543-;rport=12005

Contact: <sip:UAS@xxxxxxxxx:12010>

To: <sip:UAS@xxxxxxxxx:12010>;tag=5120015b

From: <sip:UAC@xxxxxxxxx:1205>;tag=121cd071

Call-ID: 9e396f2271672908NDJiZDJhMjlkYjA3NTE3MmFjYjZiZDE0NTFmNGQ2ZmE.

CSeq: 1 INVITE

Allow: INVITE, ACK, CANCEL, OPTIONS, BYE

Content-Type: application/sdp

Content-Length: 266



v=0

o=1900 369696545 369696545 IN IP4 192.168.2.15

s=X-Lite

c=IN IP4 192.168.2.15

t=0 0

m=audio 8000 RTP/AVP 8 3 98 97 101

a=fmtp:101 0-15

a=rtpmap:8 pcma/8000

a=rtpmap:3 gsm/8000

a=rtpmap:98 iLBC

a=rtpmap:97 speex/8000

a=rtpmap:101 telephone-event/8000


INFO | 20060703-100222.000 | sipce | RESIP:TRANSACTION | 3468433582 | 
TuSelector.cxx:72 | Stats message 
WARNING | 20060703-100223.000 | sipce | RESIP:STATS | 3468433582 | 
StatisticsMessage.cxx:154 | RESIP:TRANSACTION
TU summary: 0 TRANSPORT 3 TRANSACTION 0 CLIENTTX 1 SERVERTX 0 TIMERS 2
Transaction summary: reqi 0 reqo 7 rspi 1 rspo 0
Details: INVi 0/S0/F0 INVo 1/S0/F0 ACKi 0 ACKo 0 BYEi 0/S0/F0 BYEo 0/S0/F0 
CANi 0/S0/F0 CANo 0/S0/F0 MSGi 0/S0/F0 MSGo 0/S0/F0 OPTi 0/S0/F0 OPTo 1/S1/F0 
REGi 0/S0/F0 REGo 0/S0/F0 PUBi 0/S0/F0 PUBo 0/S0/F0 SUBi 0/S0/F0 SUBo 0/S0/F0 
NOTi 0/S0/F0 NOTo 0/S0/F0
Retransmissions: INVx 3 BYEx 0 CANx 0 MSGx 0 OPTx 2 REGx 0 finx 0 nonx 0 PUBx 
0 SUBx 0 NOTx 0
INFO | 20060703-100229.000 | sipce | RESIP:TRANSACTION | 3468433582 | 
TransactionState.cxx:395 | discarding stray response: SipResp: 180 
tid=8b49874ddd134919 cseq=INVITE contact=UAS@xxxxxxxxx:12010 / 1 from(wire)
INFO | 20060703-100231.000 | sipce | RESIP:TRANSACTION | 3468433582 | 
TuSelector.cxx:72 | Stats message 
WARNING | 20060703-100232.000 | sipce | RESIP:STATS | 3468433582 | 
StatisticsMessage.cxx:154 | RESIP:TRANSACTION
TU summary: 0 TRANSPORT 3 TRANSACTION 1 CLIENTTX 0 SERVERTX 1 TIMERS 1
Transaction summary: reqi 4 reqo 0 rspi 0 rspo 5
Details: INVi 2/S2/F0 INVo 0/S0/F0 ACKi 0 ACKo 0 BYEi 0/S0/F0 BYEo 0/S0/F0 
CANi 0/S0/F0 CANo 0/S0/F0 MSGi 0/S0/F0 MSGo 0/S0/F0 OPTi 2/S2/F0 OPTo 0/S0/F0 
REGi 0/S0/F0 REGo 0/S0/F0 PUBi 0/S0/F0 PUBo 0/S0/F0 SUBi 0/S0/F0 SUBo 0/S0/F0 
NOTi 0/S0/F0 NOTo 0/S0/F0
Retransmissions: INVx 0 BYEx 0 CANx 0 MSGx 0 OPTx 0 REGx 0 finx 0 nonx 0 PUBx 
0 SUBx 0 NOTx 0
INFO | 20060703-100238.000 | sipce | RESIP:DUM | 3468433582 | 
DialogUsageManager.cxx:1170 | Got: SipReq:  OPTIONS UAS@xxxxxxxxx:12010 
tid=604ea76a6b21cd6a cseq=OPTIONS contact=UAC@xxxxxxxxx:12005 / 1 from(wire)
UAS(OPTIONS): testAppDialogSet: created.
UAS(OPTIONS): testAppDialogSet: UAS UserProfile requested for msg: SipReq:  
OPTIONS UAS@xxxxxxxxx:12010 tid=604ea76a6b21cd6a cseq=OPTIONS 
contact=UAC@xxxxxxxxx:12005 / 1 from(wire)
UAS: ServerOutOfDialogReq-onReceivedRequest - SipReq:  OPTIONS 
UAS@xxxxxxxxx:12010 tid=604ea76a6b21cd6a cseq=OPTIONS 
contact=UAC@xxxxxxxxx:12005 / 1 from(wire)
UAS: Sending 200 response to OPTIONS.
INFO | 20060703-100244.000 | sipce | RESIP:DUM | 3468433582 | 
InviteSessionHandler.cxx:27 | InviteSessionHandler::onAckNotReceived
INFO | 20060703-100245.000 | sipce | RESIP:DUM | 3468433582 | 
ServerInviteSession.cxx:321 | UAS_Accepted: end
INFO | 20060703-100246.000 | sipce | RESIP:DUM | 3468433582 | 
InviteSession.cxx:2361 | <sip:UAS@xxxxxxxxx:12010>;tag=5120015b Sending BYE 
ACK not received
INFO | 20060703-100248.000 | sipce | RESIP:DUM | 3468433582 | 
InviteSession.cxx:2047 | Transition UAS_Accepted -> InviteSession::Terminated
UAS: InviteSession-onTerminated - 
UAS(OPTIONS): testAppDialogSet: destroyed.
INFO | 20060703-100250.000 | sipce | RESIP:DUM | 3468433582 | 
DialogUsageManager.cxx:221 | shutdown giveup=0 dialogSets=1
INFO | 20060703-100251.000 | sipce | RESIP:DUM | 3468433582 | 
DialogUsageManager.cxx:221 | shutdown giveup=0 dialogSets=0
INFO | 20060703-100252.000 | sipce | RESIP:DUM | 3468433582 | 
DialogUsageManager.cxx:206 | DialogUsageManager::onAllHandlesDestroyed: 
removing TU
INFO | 20060703-100254.000 | sipce | RESIP:TRANSACTION | 3468433582 | 
TransactionState.cxx:395 | discarding stray response: SipResp: 200 
tid=8b49874ddd134919 cseq=INVITE contact=UAS@xxxxxxxxx:12010 / 1 from(wire)
INFO | 20060703-100256.000 | sipce | RESIP:TRANSACTION | 3468433582 | 
TuSelector.cxx:38 | TransactionUserMessage::RequestShutdown TU: 
DialogUsageManager size=0
INFO | 20060703-100257.000 | sipce | RESIP:TRANSACTION | 3468433582 | 
TuSelector.cxx:38 | TransactionUserMessage::RequestShutdown TU: 
DialogUsageManager size=1
INFO | 20060703-100259.000 | sipce | RESIP:DUM | 3468433582 | 
DialogUsageManager.cxx:1170 | Got: SipReq:  INVITE UAS@xxxxxxxxx:12010 
tid=8b49874ddd134919 cseq=INVITE contact=UAC@xxxxxxxxx:12005 / 1 from(wire)
INFO | 20060703-100301.000 | sipce | RESIP:DUM | 3468433582 | 
DialogUsageManager.cxx:1218 | Merged request: INVITE sip:UAS@xxxxxxxxx:12010 
SIP/2.0

Via: SIP/2.0/UDP 
127.0.0.1:12005;branch=z9hG4bK-d87543-8b49874ddd134919-1--d87543-;rport=12005

Max-Forwards: 70

Contact: <sip:UAC@xxxxxxxxx:12005>

To: <sip:UAS@xxxxxxxxx:12010>

From: <sip:UAC@xxxxxxxxx:1205>;tag=121cd071

Call-ID: 9e396f2271672908NDJiZDJhMjlkYjA3NTE3MmFjYjZiZDE0NTFmNGQ2ZmE.

CSeq: 1 INVITE

Allow: INVITE, ACK, CANCEL, OPTIONS, BYE

Content-Type: application/sdp

Content-Length: 266



v=0

o=1900 369696545 369696545 IN IP4 192.168.2.15

s=X-Lite

c=IN IP4 192.168.2.15

t=0 0

m=audio 8000 RTP/AVP 8 3 98 97 101

a=fmtp:101 0-15

a=rtpmap:8 pcma/8000

a=rtpmap:3 gsm/8000

a=rtpmap:98 iLBC

a=rtpmap:97 speex/8000

a=rtpmap:101 telephone-event/8000


INFO | 20060703-100309.000 | sipce | RESIP:TRANSACTION | 3468433582 | 
TransactionState.cxx:395 | discarding stray response: SipResp: 200 
tid=604ea76a6b21cd6a cseq=OPTIONS contact=127.0.0.1:12010 / 1 from(wire)
INFO | 20060703-100311.000 | sipce | RESIP:TRANSACTION | 3468433582 | 
TuSelector.cxx:42 | TransactionUserMessage::RemoveTransactionUser TU: 
DialogUsageManager size=0
INFO | 20060703-100313.000 | sipce | RESIP:DUM | 3468433582 | 
DialogUsageManager.cxx:1050 | TU unregistered 
UAC: onDumCanBeDeleted.
INFO | 20060703-100319.000 | sipce | RESIP:TRANSACTION | 3468433582 | 
TuSelector.cxx:72 | Stats message 
WARNING | 20060703-100320.000 | sipce | RESIP:STATS | 3468433582 | 
StatisticsMessage.cxx:154 | RESIP:TRANSACTION
TU summary: 0 TRANSPORT 0 TRANSACTION 0 CLIENTTX 1 SERVERTX 2 TIMERS 5
Transaction summary: reqi 7 reqo 4 rspi 0 rspo 12
Details: INVi 4/S3/F5 INVo 0/S0/F0 ACKi 0 ACKo 0 BYEi 0/S0/F0 BYEo 1/S0/F0 
CANi 0/S0/F0 CANo 0/S0/F0 MSGi 0/S0/F0 MSGo 0/S0/F0 OPTi 3/S3/F0 OPTo 0/S0/F0 
REGi 0/S0/F0 REGo 0/S0/F0 PUBi 0/S0/F0 PUBo 0/S0/F0 SUBi 0/S0/F0 SUBo 0/S0/F0 
NOTi 0/S0/F0 NOTo 0/S0/F0
Retransmissions: INVx 0 BYEx 3 CANx 0 MSGx 0 OPTx 0 REGx 0 finx 0 nonx 0 PUBx 
0 SUBx 0 NOTx 0
INFO | 20060703-100329.000 | sipce | RESIP:DUM | 3468433582 | 
DialogUsageManager.cxx:1170 | Got: SipResp: 408 tid=6e4b992ee46d2e58 
cseq=BYE / 2 from(wire)
INFO | 20060703-100330.000 | sipce | RESIP:DUM | 3468433582 | 
InviteSession.cxx:1467 | InviteSession::dispatchTerminated SipResp: 408 
tid=6e4b992ee46d2e58 cseq=BYE / 2 from(wire)
UAS(INVITE): testAppDialog: destroyed.
UAS(INVITE): testAppDialogSet: destroyed.
INFO | 20060703-100333.000 | sipce | RESIP:DUM | 3468433582 | 
DialogUsageManager.cxx:206 | DialogUsageManager::onAllHandlesDestroyed: 
removing TU
INFO | 20060703-100334.000 | sipce | RESIP:TRANSACTION | 3468433582 | 
TuSelector.cxx:42 | TransactionUserMessage::RemoveTransactionUser TU: 
DialogUsageManager size=0
INFO | 20060703-100336.000 | sipce | RESIP:DUM | 3468433582 | 
DialogUsageManager.cxx:1050 | TU unregistered 
UAS: onDumCanBeDeleted.
!!!!!!!!!!!!!!!!!! Successful !!!!!!!!!! 
Unload module: msvcr80.dll
Unload module: nspm.dll
Unload module: dtpt_nsp.dll
Unload module: wspm.dll
Unload module: dtpt_lsp.dll
Unload module: AutoBind_lsp.dll
Unload module: SSLLSP.DLL
Unload module: iphlpapi.dll
Unload module: WS2.dll
The program '[cfbcd402] sipce.exe' has exited with code 5398 (0x1516).