summaryrefslogtreecommitdiffstats
path: root/third_party/libjingle
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/libjingle')
-rw-r--r--third_party/libjingle/README.chromium3
-rw-r--r--third_party/libjingle/files/talk/base/common.cc2
-rw-r--r--third_party/libjingle/files/talk/base/diskcache.cc2
-rw-r--r--third_party/libjingle/files/talk/base/httpbase.cc2
-rw-r--r--third_party/libjingle/files/talk/base/httpcommon.cc10
-rw-r--r--third_party/libjingle/files/talk/base/httpcommon.h2
-rw-r--r--third_party/libjingle/files/talk/base/logging.cc2
-rw-r--r--third_party/libjingle/files/talk/base/socketadapters.cc4
-rw-r--r--third_party/libjingle/mods-since-v0_4_0.diff3156
9 files changed, 1617 insertions, 1566 deletions
diff --git a/third_party/libjingle/README.chromium b/third_party/libjingle/README.chromium
index 8ee7bcc..3005571 100644
--- a/third_party/libjingle/README.chromium
+++ b/third_party/libjingle/README.chromium
@@ -48,5 +48,4 @@ Local Modifications:
cross-platform NDEBUG variable instead.
* Fixed error-checking bugs in xmppclient.cc and physicalsocketserver.cc.
* Made some XmppTask member functions static.
-
-
+ * Cleaned up several sscanf/printf format strings/arguments.
diff --git a/third_party/libjingle/files/talk/base/common.cc b/third_party/libjingle/files/talk/base/common.cc
index aa5c56a..6d1f147 100644
--- a/third_party/libjingle/files/talk/base/common.cc
+++ b/third_party/libjingle/files/talk/base/common.cc
@@ -59,4 +59,4 @@ void LogAssert(const char * function, const char * file, int line, const char *
fprintf(stderr, "%s(%d): %s @ %s\n", file, line, expression, function);
}
-} // namespace talk_base \ No newline at end of file
+} // namespace talk_base
diff --git a/third_party/libjingle/files/talk/base/diskcache.cc b/third_party/libjingle/files/talk/base/diskcache.cc
index 686e499..3700d8e 100644
--- a/third_party/libjingle/files/talk/base/diskcache.cc
+++ b/third_party/libjingle/files/talk/base/diskcache.cc
@@ -297,7 +297,7 @@ std::string DiskCache::IdToFilename(const std::string& id, size_t index) const {
bool DiskCache::FilenameToId(const std::string& filename, std::string* id,
size_t* index) const {
Pathname pathname(filename);
- if (1 != sscanf(pathname.extension().c_str(), ".%u", index))
+ if (1 != sscanf(pathname.extension().c_str(), ".%zu", index))
return false;
size_t buffer_size = pathname.basename().length() + 1;
diff --git a/third_party/libjingle/files/talk/base/httpbase.cc b/third_party/libjingle/files/talk/base/httpbase.cc
index 06b7378..4524036 100644
--- a/third_party/libjingle/files/talk/base/httpbase.cc
+++ b/third_party/libjingle/files/talk/base/httpbase.cc
@@ -151,7 +151,7 @@ HttpParser::process_line(const char* line, size_t len, HttpError& err) {
} while ((value < eol) && isspace(static_cast<unsigned char>(*value)));
size_t vlen = eol - value;
if (MatchHeader(line, nlen, HH_CONTENT_LENGTH)) {
- if (sscanf(value, "%d", &data_size_) != 1) {
+ if (sscanf(value, "%zu", &data_size_) != 1) {
err = HE_PROTOCOL;
break;
}
diff --git a/third_party/libjingle/files/talk/base/httpcommon.cc b/third_party/libjingle/files/talk/base/httpcommon.cc
index 0358121..aabf22e 100644
--- a/third_party/libjingle/files/talk/base/httpcommon.cc
+++ b/third_party/libjingle/files/talk/base/httpcommon.cc
@@ -336,7 +336,7 @@ bool HttpDateToSeconds(const std::string& date, unsigned long* seconds) {
if (7 != sscanf(date.c_str(), "%*3s, %d %3s %d %d:%d:%d %5c",
&tval.tm_mday, month, &tval.tm_year,
- &tval.tm_hour, &tval.tm_min, &tval.tm_sec, &zone)) {
+ &tval.tm_hour, &tval.tm_min, &tval.tm_sec, zone)) {
return false;
}
switch (toupper(month[2])) {
@@ -469,7 +469,7 @@ HttpRequestData::formatLeader(char* buffer, size_t size) {
HttpError
HttpRequestData::parseLeader(const char* line, size_t len) {
UNUSED(len);
- uint32 vmajor, vminor;
+ unsigned long vmajor, vminor;
int vend, dstart, dend;
if ((sscanf(line, "%*s%n %n%*s%n HTTP/%lu.%lu", &vend, &dstart, &dend,
&vmajor, &vminor) != 2)
@@ -546,8 +546,8 @@ HttpResponseData::formatLeader(char* buffer, size_t size) {
HttpError
HttpResponseData::parseLeader(const char* line, size_t len) {
size_t pos = 0;
- uint32 vmajor, vminor;
- if ((sscanf(line, "HTTP/%lu.%lu %lu%n", &vmajor, &vminor, &scode, &pos) != 3)
+ unsigned long vmajor, vminor;
+ if ((sscanf(line, "HTTP/%lu.%lu %lu%zu", &vmajor, &vminor, &scode, &pos) != 3)
|| (vmajor != 1)) {
return HE_PROTOCOL;
}
@@ -690,7 +690,7 @@ HttpAuthResult HttpAuthenticate(
cnonce = DIGEST_CNONCE;
#else
char buffer[256];
- sprintf(buffer, "%d", time(0));
+ sprintf(buffer, "%ld", time(0));
cnonce = MD5(buffer);
#endif
ncount = "00000001";
diff --git a/third_party/libjingle/files/talk/base/httpcommon.h b/third_party/libjingle/files/talk/base/httpcommon.h
index fae39f9..8cadd7f 100644
--- a/third_party/libjingle/files/talk/base/httpcommon.h
+++ b/third_party/libjingle/files/talk/base/httpcommon.h
@@ -326,7 +326,7 @@ struct HttpRequestData : public HttpData {
};
struct HttpResponseData : public HttpData {
- uint32 scode;
+ unsigned long scode;
std::string message;
HttpResponseData() : scode(HC_INTERNAL_SERVER_ERROR) { }
diff --git a/third_party/libjingle/files/talk/base/logging.cc b/third_party/libjingle/files/talk/base/logging.cc
index 941a32d..3f3a3f9 100644
--- a/third_party/libjingle/files/talk/base/logging.cc
+++ b/third_party/libjingle/files/talk/base/logging.cc
@@ -66,7 +66,7 @@ std::string ErrorName(int err, const talk_base::ConstantLabel * err_table) {
}
char buffer[16];
- snprintf(buffer, sizeof(buffer), "0x%08lx", err);
+ snprintf(buffer, sizeof(buffer), "0x%08x", err);
return buffer;
}
diff --git a/third_party/libjingle/files/talk/base/socketadapters.cc b/third_party/libjingle/files/talk/base/socketadapters.cc
index 0fe940ad..bd948ed 100644
--- a/third_party/libjingle/files/talk/base/socketadapters.cc
+++ b/third_party/libjingle/files/talk/base/socketadapters.cc
@@ -357,8 +357,8 @@ void AsyncHttpsProxySocket::ProcessLine(char * data, size_t len) {
return;
}
} else if (state_ == PS_LEADER) {
- uint32 code;
- if (sscanf(data, "HTTP/%*lu.%*lu %lu", &code) != 1) {
+ unsigned long code;
+ if (sscanf(data, "HTTP/%*u.%*u %lu", &code) != 1) {
Error(0);
return;
}
diff --git a/third_party/libjingle/mods-since-v0_4_0.diff b/third_party/libjingle/mods-since-v0_4_0.diff
index a9259b6..5812304 100644
--- a/third_party/libjingle/mods-since-v0_4_0.diff
+++ b/third_party/libjingle/mods-since-v0_4_0.diff
@@ -1,6 +1,6 @@
-Only in libjingle-0.4.0: Makefile.in
-diff -r libjingle-0.4.0/README libjingle/files/README
-1,39c1,39
+Only in libjingle-0.4.0: Makefile.in
+diff -r libjingle-0.4.0/README libjingle/files/README
+1,39c1,39
< Libjingle
<
< Libjingle is a set of components provided by Google to interoperate with Google
@@ -40,47 +40,47 @@ diff -r libjingle-0.4.0/README libjingle/files/README
< succeeds, run 'make' to build the components and examples.
<
< When the build is complete, you can run the call example from
----
-> Libjingle
->
-> Libjingle is a set of components provided by Google to interoperate with Google
-> Talk's peer-to-peer and voice capabilities. This package will create several
-> static libraries you may link to your project as needed.
->
-> -talk - No source files in talk/, just these subdirectories
-> |-base - Contains basic low-level portable utility functions for
-> | things like threads and sockets
-> |-p2p - The P2P stack
-> |-base - Base p2p functionality
-> |-client - Hooks to tie it into XMPP
-> |-session - Signaling
-> |-phone - Signaling code specific to making phone calls
-> |-third_party - Components that aren't ours
-> |-mediastreamer - Media components for dealing with sound hardware and
-> | voice codecs
-> |-xmllite - XML parser
-> |-xmpp - XMPP engine
->
-> In addition, this package contains two examples in talk/examples which
-> illustrate the basic concepts of how the provided classes work.
->
-> The xmllite component of libjingle depends on expat. You can download expat
-> from http://expat.sourceforge.net/.
->
-> mediastreamer, the media components used by the example applications depend on
-> the oRTP and iLBC components from linphone, which can be found at
-> http://www.linphone.org. Linphone, in turn depends on GLib, which can be found
-> at http://www.gtk.org. This GLib dependency should be removed in future
-> releases.
->
-> Building Libjingle
->
-> Once the dependencies are installed, run ./configure. ./configure will return
-> an error if it failed to locate the proper dependencies. If ./configure
-> succeeds, run 'make' to build the components and examples.
->
-> When the build is complete, you can run the call example from
-41,57c41,57
+---
+> Libjingle
+>
+> Libjingle is a set of components provided by Google to interoperate with Google
+> Talk's peer-to-peer and voice capabilities. This package will create several
+> static libraries you may link to your project as needed.
+>
+> -talk - No source files in talk/, just these subdirectories
+> |-base - Contains basic low-level portable utility functions for
+> | things like threads and sockets
+> |-p2p - The P2P stack
+> |-base - Base p2p functionality
+> |-client - Hooks to tie it into XMPP
+> |-session - Signaling
+> |-phone - Signaling code specific to making phone calls
+> |-third_party - Components that aren't ours
+> |-mediastreamer - Media components for dealing with sound hardware and
+> | voice codecs
+> |-xmllite - XML parser
+> |-xmpp - XMPP engine
+>
+> In addition, this package contains two examples in talk/examples which
+> illustrate the basic concepts of how the provided classes work.
+>
+> The xmllite component of libjingle depends on expat. You can download expat
+> from http://expat.sourceforge.net/.
+>
+> mediastreamer, the media components used by the example applications depend on
+> the oRTP and iLBC components from linphone, which can be found at
+> http://www.linphone.org. Linphone, in turn depends on GLib, which can be found
+> at http://www.gtk.org. This GLib dependency should be removed in future
+> releases.
+>
+> Building Libjingle
+>
+> Once the dependencies are installed, run ./configure. ./configure will return
+> an error if it failed to locate the proper dependencies. If ./configure
+> succeeds, run 'make' to build the components and examples.
+>
+> When the build is complete, you can run the call example from
+41,57c41,57
<
< Relay Server
<
@@ -98,26 +98,26 @@ diff -r libjingle-0.4.0/README libjingle/files/README
< talk/p2p/base/stunserver and listens on UDP port 7000. See the Libjingle
< Developer Guide at http://code.google.com/apis/talk/index.html for information
< about configuring a client to use this STUN server.
----
->
-> Relay Server
->
-> Libjingle will also build a relay server that may be used to relay traffic
-> when a direct peer-to-peer connection could not be established. The relay
-> server will build in talk/p2p/base/relayserver and will listen on UDP
-> ports 5000 and 5001. See the Libjingle Developer Guide at
-> http://code.google.com/apis/talk/index.html for information about configuring
-> a client to use this relay server.
->
-> STUN Server
->
-> Lastly, Libjingle builds a STUN server which implements the STUN protocol for
-> Simple Traversal of UDP over NAT. The STUN server is built as
-> talk/p2p/base/stunserver and listens on UDP port 7000. See the Libjingle
-> Developer Guide at http://code.google.com/apis/talk/index.html for information
-> about configuring a client to use this STUN server.
-diff -r libjingle-0.4.0/README.win libjingle/files/README.win
-1,24c1,24
+---
+>
+> Relay Server
+>
+> Libjingle will also build a relay server that may be used to relay traffic
+> when a direct peer-to-peer connection could not be established. The relay
+> server will build in talk/p2p/base/relayserver and will listen on UDP
+> ports 5000 and 5001. See the Libjingle Developer Guide at
+> http://code.google.com/apis/talk/index.html for information about configuring
+> a client to use this relay server.
+>
+> STUN Server
+>
+> Lastly, Libjingle builds a STUN server which implements the STUN protocol for
+> Simple Traversal of UDP over NAT. The STUN server is built as
+> talk/p2p/base/stunserver and listens on UDP port 7000. See the Libjingle
+> Developer Guide at http://code.google.com/apis/talk/index.html for information
+> about configuring a client to use this STUN server.
+diff -r libjingle-0.4.0/README.win libjingle/files/README.win
+1,24c1,24
< 1. Install Visual C++ Express 2005. It is free from this link:
< http://msdn.microsoft.com/vstudio/express/visualc/
<
@@ -142,1491 +142,1543 @@ diff -r libjingle-0.4.0/README.win libjingle/files/README.win
<
< 9. Build the solution
<
----
-> 1. Install Visual C++ Express 2005. It is free from this link:
-> http://msdn.microsoft.com/vstudio/express/visualc/
->
-> 2. Install the platform SDK and integrate it into VC++ express
-> http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/
->
-> 3. Download and install binary package for expat:
-> http://sourceforge.net/project/showfiles.php?group_id=10127&package_id=11277
->
-> 4. Update the Visual C++ directories in the Projects and Solutions section in the Options dialog box
-> Library files: C:\expat-VERSION\StaticLibs
-> Include files: C:\expat-VERSION\Source\Lib
-> where VERSION is the version of expat you've downoaded
->
-> 5. Unzip the libjingle files and open the solution.
->
-> 6. If you wish to build the call example with GIPS Voice Engine Lite, download Voice Engine Lite from http://developer.globalipsound.com
->
-> 7. Extract the Interface and Library directories from the Voice Engine Lite zip file into talk\third_party\gips
->
-> 8. Open talk\third_party\gips\expiration.h and set the GIPS_EXPIRATION #defines to the expiration date provided by GIPS and remove the #error directive
->
-> 9. Build the solution
->
-Only in libjingle-0.4.0: aclocal.m4
-Only in libjingle-0.4.0: config.guess
-diff -r libjingle-0.4.0/config.h libjingle/files/config.h
-14c14
-< #define HAVE_ALSA_ASOUNDLIB_H 1
----
-> /* #undef HAVE_ALSA_ASOUNDLIB_H */
-23c23
-< #define HAVE_GLIB 1
----
-> /* #undef HAVE_GLIB */
-38c38
-< #define HAVE_ORTP 1
----
-> /* #undef HAVE_ORTP */
-41c41
-< #define HAVE_SPEEX 1
----
-> /* #undef HAVE_SPEEX */
-47c47
-< #define HAVE_SPEEX_SPEEX_H 1
----
-> /* #undef HAVE_SPEEX_SPEEX_H */
-71c71
-< #define LINUX 1
----
-> /* #undef LINUX */
-113c113
-< #define __ALSA_ENABLED__ 1
----
-> /* #undef __ALSA_ENABLED__ */
-Only in libjingle-0.4.0: config.h.in
-Only in libjingle-0.4.0: config.sub
-Only in libjingle-0.4.0: configure
-Only in libjingle-0.4.0: depcomp
-Only in libjingle-0.4.0: install-sh
-Only in libjingle-0.4.0: ltmain.sh
-Only in libjingle-0.4.0: missing
-Only in libjingle-0.4.0/talk: Makefile.in
-Only in libjingle-0.4.0/talk/base: Makefile.in
-diff -r libjingle-0.4.0/talk/base/asynchttprequest.cc libjingle/files/talk/base/asynchttprequest.cc
-73c73
-< talk_base::SSLAdapter * ssl_adapter = talk_base::SSLAdapter::Create(socket);
----
-> talk_base::SSLAdapter * ssl_adapter = factory_->CreateSSLAdapter(socket);
-75c75,81
-< ssl_adapter->StartSSL(hostname_.c_str(), true);
----
-> int error = ssl_adapter->StartSSL(hostname_.c_str(),
-> use_restartable_ssl_sockets_);
-> if (error != 0) {
-> LOG(LS_WARNING) << "Could not start SSL; error = " << error;
-> delete ssl_adapter;
-> return 0;
-> }
-diff -r libjingle-0.4.0/talk/base/asynchttprequest.h libjingle/files/talk/base/asynchttprequest.h
-23,24c23
-< public SignalThread,
-< public sigslot::has_slots<> {
----
-> public SignalThread {
-106c105,106
-< binary_mode_(false), agent_(user_agent) { }
----
-> binary_mode_(false), agent_(user_agent),
-> ignore_bad_cert_(false), use_restartable_ssl_sockets_(false) { }
-114a115,120
-> bool use_restartable_ssl_sockets() const {
-> return use_restartable_ssl_sockets_;
-> }
-> void SetUseRestartableSSLSockets(bool use_restartable_ssl_sockets) {
-> use_restartable_ssl_sockets_ = use_restartable_ssl_sockets;
-> }
-133a140
-> bool use_restartable_ssl_sockets_;
-diff -r libjingle-0.4.0/talk/base/asynctcpsocket.cc libjingle/files/talk/base/asynctcpsocket.cc
-31a32,33
-> #include <cstring>
->
-diff -r libjingle-0.4.0/talk/base/autodetectproxy.cc libjingle/files/talk/base/autodetectproxy.cc
-29c29
-< #include "talk/base/httpcommon.h"
----
-> #include "talk/base/httpcommon-inl.h"
-114c114
-< Thread::Current()->MessageQueue::Stop();
----
-> Thread::Current()->Quit();
-diff -r libjingle-0.4.0/talk/base/autodetectproxy.h libjingle/files/talk/base/autodetectproxy.h
-22c22
-< class AutoDetectProxy : public SignalThread, public sigslot::has_slots<> {
----
-> class AutoDetectProxy : public SignalThread {
-diff -r libjingle-0.4.0/talk/base/base64.h libjingle/files/talk/base/base64.h
-26,27c26,27
-< static const std::string Base64::Base64Table;
-< static const std::string::size_type Base64::DecodeTable[];
----
-> static const std::string Base64Table;
-> static const std::string::size_type DecodeTable[];
-diff -r libjingle-0.4.0/talk/base/common.h libjingle/files/talk/base/common.h
-54c54
-< #define stdmax(x,y) max(x,y)
----
-> #define stdmax(x,y) _max(x,y)
-114,119d113
-< // A macro to disallow the evil copy constructor and operator= functions
-< // This should be used in the private: declarations for a class
-< #define DISALLOW_EVIL_CONSTRUCTORS(TypeName) \
-< TypeName(const TypeName&); \
-< void operator=(const TypeName&)
-<
-diff -r libjingle-0.4.0/talk/base/criticalsection.h libjingle/files/talk/base/criticalsection.h
-39c39
-< #ifdef _DEBUG
----
-> #if !defined(NDEBUG)
-41c41
-< #endif // _DEBUG
----
-> #endif // !defined(NDEBUG)
-83c83
-< public:
----
-> public:
-85a86
-> pthread_mutexattr_init(&mutex_attribute);
-87a89,90
-> pthread_mutexattr_destroy(&mutex_attribute);
-> TRACK_OWNER(thread_ = 0);
-93a97
-> TRACK_OWNER(thread_ = pthread_self());
-95a100
-> TRACK_OWNER(thread_ = 0);
-98c103,110
-< private:
----
->
-> #if CS_TRACK_OWNER
-> bool CurrentThreadIsOwner() const {
-> return pthread_equal(thread_, pthread_self());
-> }
-> #endif // CS_TRACK_OWNER
->
-> private:
-99a112
-> TRACK_OWNER(pthread_t thread_);
-diff -r libjingle-0.4.0/talk/base/cryptstring.h libjingle/files/talk/base/cryptstring.h
-30a31
-> #include <string.h>
-diff -r libjingle-0.4.0/talk/base/diskcache.cc libjingle/files/talk/base/diskcache.cc
-43c43
-< #ifdef _DEBUG
----
-> #if !defined(NDEBUG)
-45c45
-< #else // !_DEBUG
----
-> #else // defined(NDEBUG)
-47c47
-< #endif // !_DEBUG
----
-> #endif // !defined(NDEBUG)
-231c231
-< #ifdef _DEBUG
----
-> #if !defined(NDEBUG)
-238c238
-< #endif // _DEBUG
----
-> #endif // !defined(NDEBUG)
-diff -r libjingle-0.4.0/talk/base/diskcache_win32.cc libjingle/files/talk/base/diskcache_win32.cc
-38c38
-< entry->streams = max(entry->streams, index + 1);
----
-> entry->streams = _max(entry->streams, index + 1);
-diff -r libjingle-0.4.0/talk/base/helpers.cc libjingle/files/talk/base/helpers.cc
-38a39
-> #include <wincrypt.h>
-diff -r libjingle-0.4.0/talk/base/host.cc libjingle/files/talk/base/host.cc
-30a31
-> #include <cstdlib>
-diff -r libjingle-0.4.0/talk/base/httpclient.cc libjingle/files/talk/base/httpclient.cc
-670a671
-> HttpAuthContext *context = context_.get();
-676c677,678
-< *context_.use(), response, auth_method);
----
-> context, response, auth_method);
-> context_.reset(context);
-diff -r libjingle-0.4.0/talk/base/httpcommon.h libjingle/files/talk/base/httpcommon.h
-172c172
-< inline const uint16 UrlDefaultPort(bool secure) {
----
-> inline uint16 UrlDefaultPort(bool secure) {
-diff -r libjingle-0.4.0/talk/base/logging.cc libjingle/files/talk/base/logging.cc
-27a28
-> #include <stdio.h>
-76c77
-< #if _DEBUG
----
-> #if LOGGING
-78c79
-< #else // !_DEBUG
----
-> #else
-80c81
-< #endif // !_DEBUG
----
-> #endif
-diff -r libjingle-0.4.0/talk/base/logging.h libjingle/files/talk/base/logging.h
-67a68,69
->
-> #if defined(SAFE_TO_DEFINE_TALK_BASE_LOGGING_MACROS)
-70a73
-> #endif // defined(SAFE_TO_DEFINE_TALK_BASE_LOGGING_MACROS)
-195a199
-> #if defined(SAFE_TO_DEFINE_TALK_BASE_LOGGING_MACROS)
-197c201
-< #if defined(_DEBUG) && !defined(NDEBUG)
----
-> #if !defined(NDEBUG)
-290a295
-> #endif // defined(SAFE_TO_DEFINE_TALK_BASE_LOGGING_MACROS)
-diff -r libjingle-0.4.0/talk/base/messagequeue.cc libjingle/files/talk/base/messagequeue.cc
-98,99c98,99
-< new_ss = true;
-< ss_ = new PhysicalSocketServer();
----
-> default_ss_.reset(new PhysicalSocketServer());
-> ss_ = default_ss_.get();
-103a104,107
-> // The signal is done from here to ensure
-> // that it always gets called when the queue
-> // is going away.
-> SignalQueueDestroyed();
-108,109d111
-< if (new_ss)
-< delete ss_;
-113,115d114
-< if (new_ss)
-< delete ss_;
-< new_ss = false;
-119c118
-< void MessageQueue::Stop() {
----
-> void MessageQueue::Quit() {
-124c123
-< bool MessageQueue::IsStopping() {
----
-> bool MessageQueue::IsQuitting() {
-diff -r libjingle-0.4.0/talk/base/messagequeue.h libjingle/files/talk/base/messagequeue.h
-35a36
-> #include "talk/base/scoped_ptr.h"
-162,164c163,164
-<
-< virtual void Stop();
-< virtual bool IsStopping();
----
-> virtual void Quit();
-> virtual bool IsQuitting();
-188a189,192
-> // When this signal is sent out, any references to this queue should
-> // no longer be used.
-> sigslot::signal0<> SignalQueueDestroyed;
->
-192a197,198
-> // If a server isn't supplied in the constructor, use this one.
-> scoped_ptr<SocketServer> default_ss_;
-diff -r libjingle-0.4.0/talk/base/natserver.cc libjingle/files/talk/base/natserver.cc
-28a29
-> #include <cstring>
-diff -r libjingle-0.4.0/talk/base/natsocketfactory.cc libjingle/files/talk/base/natsocketfactory.cc
-29a30
-> #include <cstring>
-diff -r libjingle-0.4.0/talk/base/openssladapter.cc libjingle/files/talk/base/openssladapter.cc
-619c619
-< #ifdef _DEBUG
----
-> #if !defined(NDEBUG)
-707c707
-< #if _DEBUG
----
-> #if !defined(NDEBUG)
-736c736
-< #endif // _DEBUG
----
-> #endif // !defined(NDEBUG)
-740c740
-< #if _DEBUG
----
-> #if !defined(NDEBUG)
-798c798
-< #ifdef _DEBUG
----
-> #if !defined(NDEBUG)
-diff -r libjingle-0.4.0/talk/base/openssladapter.h libjingle/files/talk/base/openssladapter.h
-72c72
-< #if _DEBUG
----
-> #if !defined(NDEBUG)
-74c74
-< #endif // !_DEBUG
----
-> #endif // !defined(NDEBUG)
-diff -r libjingle-0.4.0/talk/base/physicalsocketserver.cc libjingle/files/talk/base/physicalsocketserver.cc
-61a62
-> #include "talk/base/winsock_initializer.h"
-67,86d67
-< #ifdef WIN32
-< class WinsockInitializer {
-< public:
-< WinsockInitializer() {
-< WSADATA wsaData;
-< WORD wVersionRequested = MAKEWORD(1, 0);
-< err_ = WSAStartup(wVersionRequested, &wsaData);
-< }
-< ~WinsockInitializer() {
-< WSACleanup();
-< }
-< int error() {
-< return err_;
-< }
-< private:
-< int err_;
-< };
-< WinsockInitializer g_winsockinit;
-< #endif
-<
-124a106,108
-> #ifdef WIN32
-> EnsureWinsockInit();
-> #endif
-187c171,177
-< addr2.Resolve(); // TODO: Do this async later?
----
-> // TODO: Do this async later?
-> if (!addr2.Resolve()) {
-> LOG(LS_ERROR) << "Resolving addr failed";
-> UpdateLastError();
-> Close();
-> return SOCKET_ERROR;
-> }
-265a256,259
-> LOG(LS_WARNING) << "EOF from socket; deferring close event";
-> // Must turn this back on so that the select() loop will notice the close
-> // event.
-> enabled_events_ |= kfRead;
-402a397
-> virtual bool IsDescriptorClosed() = 0;
-452a448,451
-> virtual bool IsDescriptorClosed() {
-> return false;
-> }
->
-490a490,497
-> virtual bool IsDescriptorClosed() {
-> // We don't have a reliable way of distinguishing end-of-stream
-> // from readability. So test on each readable call. Is this
-> // inefficient? Probably.
-> char ch;
-> return (0 == ::recv(s_, &ch, 1, MSG_PEEK));
-> }
->
-546a554,557
-> virtual bool IsDescriptorClosed() {
-> return false;
-> }
->
-916c927,931
-< ff |= kfRead;
----
-> if (pdispatcher->IsDescriptorClosed()) {
-> ff |= kfClose;
-> } else {
-> ff |= kfRead;
-> }
-diff -r libjingle-0.4.0/talk/base/proxydetect.cc libjingle/files/talk/base/proxydetect.cc
-205,206c205,206
-< const char* list = slist.c_str();
-< while (*list) {
----
-> const char* clist = slist.c_str();
-> while (*clist) {
-208,209c208,209
-< if (isspace(*list)) {
-< ++list;
----
-> if (isspace(*clist)) {
-> ++clist;
-214,217c214,217
-< const char * start = list;
-< if (const char * end = strchr(list, sep)) {
-< len = (end - list);
-< list += len + 1;
----
-> const char * start = clist;
-> if (const char * end = strchr(clist, sep)) {
-> len = (end - clist);
-> clist += len + 1;
-219,220c219,220
-< len = strlen(list);
-< list += len;
----
-> len = strlen(clist);
-> clist += len;
-diff -r libjingle-0.4.0/talk/base/schanneladapter.cc libjingle/files/talk/base/schanneladapter.cc
-607c607
-< size_t read = min(cb, readable.size());
----
-> size_t read = _min(cb, readable.size());
-diff -r libjingle-0.4.0/talk/base/scoped_ptr.h libjingle/files/talk/base/scoped_ptr.h
-36,257c36
-< namespace talk_base {
-<
-< template <typename T>
-< class scoped_ptr {
-< private:
-<
-< T* ptr;
-<
-< scoped_ptr(scoped_ptr const &);
-< scoped_ptr & operator=(scoped_ptr const &);
-<
-< public:
-<
-< typedef T element_type;
-<
-< explicit scoped_ptr(T* p = 0): ptr(p) {}
-<
-< ~scoped_ptr() {
-< typedef char type_must_be_complete[sizeof(T)];
-< delete ptr;
-< }
-<
-< void reset(T* p = 0) {
-< typedef char type_must_be_complete[sizeof(T)];
-<
-< if (ptr != p) {
-< delete ptr;
-< ptr = p;
-< }
-< }
-<
-< T& operator*() const {
-< assert(ptr != 0);
-< return *ptr;
-< }
-<
-< T* operator->() const {
-< assert(ptr != 0);
-< return ptr;
-< }
-<
-< T* get() const {
-< return ptr;
-< }
-<
-< void swap(scoped_ptr & b) {
-< T* tmp = b.ptr;
-< b.ptr = ptr;
-< ptr = tmp;
-< }
-<
-< T* release() {
-< T* tmp = ptr;
-< ptr = 0;
-< return tmp;
-< }
-<
-< T** accept() {
-< if (ptr) {
-< delete ptr;
-< ptr = 0;
-< }
-< return &ptr;
-< }
-<
-< T** use() {
-< return &ptr;
-< }
-< };
-<
-< template<typename T> inline
-< void swap(scoped_ptr<T>& a, scoped_ptr<T>& b) {
-< a.swap(b);
-< }
-<
-<
-<
-<
-< // scoped_array extends scoped_ptr to arrays. Deletion of the array pointed to
-< // is guaranteed, either on destruction of the scoped_array or via an explicit
-< // reset(). Use shared_array or std::vector if your needs are more complex.
-<
-< template<typename T>
-< class scoped_array {
-< private:
-<
-< T* ptr;
-<
-< scoped_array(scoped_array const &);
-< scoped_array & operator=(scoped_array const &);
-<
-< public:
-<
-< typedef T element_type;
-<
-< explicit scoped_array(T* p = 0) : ptr(p) {}
-<
-< ~scoped_array() {
-< typedef char type_must_be_complete[sizeof(T)];
-< delete[] ptr;
-< }
-<
-< void reset(T* p = 0) {
-< typedef char type_must_be_complete[sizeof(T)];
-<
-< if (ptr != p) {
-< delete [] ptr;
-< ptr = p;
-< }
-< }
-<
-< T& operator[](std::ptrdiff_t i) const {
-< assert(ptr != 0);
-< assert(i >= 0);
-< return ptr[i];
-< }
-<
-< T* get() const {
-< return ptr;
-< }
-<
-< void swap(scoped_array & b) {
-< T* tmp = b.ptr;
-< b.ptr = ptr;
-< ptr = tmp;
-< }
-<
-< T* release() {
-< T* tmp = ptr;
-< ptr = 0;
-< return tmp;
-< }
-<
-< T** accept() {
-< if (ptr) {
-< delete [] ptr;
-< ptr = 0;
-< }
-< return &ptr;
-< }
-< };
-<
-< template<class T> inline
-< void swap(scoped_array<T>& a, scoped_array<T>& b) {
-< a.swap(b);
-< }
-<
-< // scoped_ptr_malloc<> is similar to scoped_ptr<>, but it accepts a
-< // second template argument, the function used to free the object.
-<
-< template<typename T, void (*FF)(void*) = free> class scoped_ptr_malloc {
-< private:
-<
-< T* ptr;
-<
-< scoped_ptr_malloc(scoped_ptr_malloc const &);
-< scoped_ptr_malloc & operator=(scoped_ptr_malloc const &);
-<
-< public:
-<
-< typedef T element_type;
-<
-< explicit scoped_ptr_malloc(T* p = 0): ptr(p) {}
-<
-< ~scoped_ptr_malloc() {
-< typedef char type_must_be_complete[sizeof(T)];
-< FF(static_cast<void*>(ptr));
-< }
-<
-< void reset(T* p = 0) {
-< typedef char type_must_be_complete[sizeof(T)];
-<
-< if (ptr != p) {
-< FF(static_cast<void*>(ptr));
-< ptr = p;
-< }
-< }
-<
-< T& operator*() const {
-< assert(ptr != 0);
-< return *ptr;
-< }
-<
-< T* operator->() const {
-< assert(ptr != 0);
-< return ptr;
-< }
-<
-< T* get() const {
-< return ptr;
-< }
-<
-< void swap(scoped_ptr_malloc & b) {
-< T* tmp = b.ptr;
-< b.ptr = ptr;
-< ptr = tmp;
-< }
-<
-< T* release() {
-< T* tmp = ptr;
-< ptr = 0;
-< return tmp;
-< }
-<
-< T** accept() {
-< if (ptr) {
-< FF(static_cast<void*>(ptr));
-< ptr = 0;
-< }
-< return &ptr;
-< }
-< };
-<
-< template<typename T, void (*FF)(void*)> inline
-< void swap(scoped_ptr_malloc<T,FF>& a, scoped_ptr_malloc<T,FF>& b) {
-< a.swap(b);
-< }
-<
-< } // namespace talk_base
-<
-< // TODO: get rid of this global using
-< using talk_base::scoped_ptr;
----
-> #include "base/scoped_ptr.h"
-diff -r libjingle-0.4.0/talk/base/signalthread.cc libjingle/files/talk/base/signalthread.cc
-12a13,15
-> main_->SignalQueueDestroyed.connect(this,
-> &SignalThread::OnMainThreadDestroyed);
-> refcount_ = 1;
-15a19,23
-> void SignalThread::OnMainThreadDestroyed() {
-> EnterExit ee(this);
-> main_ = NULL;
-> }
->
-19a28
-> EnterExit ee(this);
-25a35
-> EnterExit ee(this);
-27c37
-< if (kInit == state_) {
----
-> if (kInit == state_ || kComplete == state_) {
-36c46,47
-< void SignalThread::Destroy() {
----
-> void SignalThread::Destroy(bool wait) {
-> EnterExit ee(this);
-39,40c50,51
-< delete this;
-< } else if (kRunning == state_) {
----
-> refcount_--;
-> } else if (kRunning == state_ || kReleasing == state_) {
-42,47c53,63
-< // A couple tricky issues here:
-< // 1) Thread::Stop() calls Join(), which we don't want... we just want
-< // to stop the MessageQueue, which causes ContinueWork() to return false.
-< // 2) OnWorkStop() must follow Stop(), so that when the thread wakes up
-< // due to OWS(), ContinueWork() will return false.
-< worker_.MessageQueue::Stop();
----
-> // OnWorkStop() must follow Quit(), so that when the thread wakes up due to
-> // OWS(), ContinueWork() will return false.
-> if (wait) {
-> // Release the thread's lock so that it can return from ::Run.
-> cs_.Leave();
-> worker_.Stop();
-> cs_.Enter();
-> refcount_--;
-> } else {
-> worker_.Quit();
-> }
-54a71
-> EnterExit ee(this);
-57c74
-< delete this;
----
-> refcount_--;
-66a84
-> EnterExit ee(this);
-71a90
-> EnterExit ee(this);
-81a101,111
-> // Before signaling that the work is done, make sure that the worker
-> // thread actually is done. We got here because DoWork() finished and
-> // Run() posted the ST_MSG_WORKER_DONE message. This means the worker
-> // thread is about to go away anyway, but sometimes it doesn't actually
-> // finish before SignalWorkDone is processed, and for a reusable
-> // SignalThread this makes an assert in thread.cc fire.
-> //
-> // Calling Stop() on the worker ensures that the OS thread that underlies
-> // the worker will finish, and will be set to NULL, enabling us to call
-> // Start() again.
-> worker_.Stop();
-85c115
-< delete this;
----
-> refcount_--;
-92c122,127
-< main_->Post(this, ST_MSG_WORKER_DONE);
----
-> {
-> EnterExit ee(this);
-> if (main_) {
-> main_->Post(this, ST_MSG_WORKER_DONE);
-> }
-> }
-diff -r libjingle-0.4.0/talk/base/signalthread.h libjingle/files/talk/base/signalthread.h
-15a16,19
-> // Periodic tasks: Wait for SignalWorkDone, then eventually call Start()
-> // again to repeat the task. When the instance isn't needed anymore,
-> // call Release. DoWork, OnWorkStart and OnWorkStop are called again,
-> // on a new thread.
-22c26
-< class SignalThread : protected MessageHandler {
----
-> class SignalThread : public sigslot::has_slots<>, protected MessageHandler {
-35,36c39,41
-< // SignalWorkDone will not be signalled.
-< void Destroy();
----
-> // SignalWorkDone will not be signalled. If wait is true, does not return
-> // until the thread is deleted.
-> void Destroy(bool wait);
-53c58
-<
----
->
-57c62
-< // Context: Worker Thread. Subclass should call periodically to
----
-> // Context: Worker Thread. Subclass should call periodically to
-67c72
-<
----
->
-79a85,106
-> class EnterExit {
-> friend class SignalThread;
->
-> SignalThread * t_;
->
-> EnterExit(SignalThread * t) : t_(t) {
-> t_->cs_.Enter();
-> t_->refcount_ += 1;
-> }
-> ~EnterExit() {
-> bool d = (0 == (--(t_->refcount_)));
-> t_->cs_.Leave();
-> if (d)
-> delete t_;
-> }
-> };
->
-> friend class EnterExit;
->
-> CriticalSection cs_;
-> int refcount_;
->
-80a108
-> void OnMainThreadDestroyed();
-84c112,118
-< enum State { kInit, kRunning, kComplete, kStopping, kReleasing } state_;
----
-> enum State {
-> kInit, // Initialized, but not started
-> kRunning, // Started and doing work
-> kReleasing, // Same as running, but to be deleted when work is done
-> kComplete, // Work is done
-> kStopping, // Work is being interrupted
-> } state_;
-diff -r libjingle-0.4.0/talk/base/sigslot.h libjingle/files/talk/base/sigslot.h
-530c530
-< #ifdef _DEBUG
----
-> #if !defined(NDEBUG)
-676c676
-< #ifdef _DEBUG
----
-> #if !defined(NDEBUG)
-807c807
-< #ifdef _DEBUG
----
-> #if !defined(NDEBUG)
-937c937
-< #ifdef _DEBUG
----
-> #if !defined(NDEBUG)
-1067c1067
-< #ifdef _DEBUG
----
-> #if !defined(NDEBUG)
-1199c1199
-< #ifdef _DEBUG
----
-> #if !defined(NDEBUG)
-1331c1331
-< #ifdef _DEBUG
----
-> #if !defined(NDEBUG)
-1463c1463
-< #ifdef _DEBUG
----
-> #if !defined(NDEBUG)
-1596c1596
-< #ifdef _DEBUG
----
-> #if !defined(NDEBUG)
-diff -r libjingle-0.4.0/talk/base/socket.h libjingle/files/talk/base/socket.h
-77a78
-> #undef ETIMEDOUT // remove pthread.h's definition
-diff -r libjingle-0.4.0/talk/base/socketadapters.cc libjingle/files/talk/base/socketadapters.cc
-43a44,45
-> #include <cstring>
->
-diff -r libjingle-0.4.0/talk/base/socketaddress.cc libjingle/files/talk/base/socketaddress.cc
-52c52
-< #ifdef _DEBUG
----
-> #if !defined(NDEBUG)
-54c54
-< #else // !_DEBUG
----
-> #else // defined(NDEBUG)
-56c56
-< #endif // !_DEBUG
----
-> #endif // !defined(NDEBUG)
-diff -r libjingle-0.4.0/talk/base/socketfactory.h libjingle/files/talk/base/socketfactory.h
-32a33
-> #include "talk/base/ssladapter.h"
-46a48,52
->
-> // Wraps the given socket in an SSL adapter.
-> virtual SSLAdapter* CreateSSLAdapter(AsyncSocket* socket) {
-> return SSLAdapter::Create(socket);
-> }
-diff -r libjingle-0.4.0/talk/base/socketpool.cc libjingle/files/talk/base/socketpool.cc
-142d141
-< ASSERT(false);
-189d187
-< ASSERT(false);
-diff -r libjingle-0.4.0/talk/base/ssladapter.cc libjingle/files/talk/base/ssladapter.cc
-34c34,35
-< #define SSL_USE_OPENSSL 1
----
-> // Turn off OpenSSL
-> //#define SSL_USE_OPENSSL 1
-84a86
-> #if SSL_USE_OPENSSL || SSL_USE_SCHANNEL
-85a88,90
-> #else
-> return NULL;
-> #endif
-diff -r libjingle-0.4.0/talk/base/stream.cc libjingle/files/talk/base/stream.cc
-27a28
-> #include <stdio.h>
-diff -r libjingle-0.4.0/talk/base/stringencode.cc libjingle/files/talk/base/stringencode.cc
-34a35
-> #include <stdlib.h>
-525c526
-< #ifdef _DEBUG
----
-> #if !defined(NDEBUG)
-575c576
-< #endif // _DEBUG
----
-> #endif // !defined(NDEBUG)
-diff -r libjingle-0.4.0/talk/base/stringutils.cc libjingle/files/talk/base/stringutils.cc
-72c72
-< #if _DEBUG
----
-> #if !defined(NDEBUG)
-76c76
-< #endif // _DEBUG
----
-> #endif // !defined(NDEBUG)
-diff -r libjingle-0.4.0/talk/base/stringutils.h libjingle/files/talk/base/stringutils.h
-33a34
-> #include <string.h>
-87a89
-> #if 0
-93a96
-> #endif
-200,208d202
-< size_t sprintfn(CTYPE* buffer, size_t buflen, const CTYPE* format, ...) {
-< va_list args;
-< va_start(args, format);
-< size_t len = vsprintfn(buffer, buflen, format, args);
-< va_end(args);
-< return len;
-< }
-<
-< template<class CTYPE>
-218a213,221
-> template<class CTYPE>
-> size_t sprintfn(CTYPE* buffer, size_t buflen, const CTYPE* format, ...) {
-> va_list args;
-> va_start(args, format);
-> size_t len = vsprintfn(buffer, buflen, format, args);
-> va_end(args);
-> return len;
-> }
->
-272c275
-< inline static const char* Traits<char>::empty_str() { return ""; }
----
-> inline static const char* empty_str() { return ""; }
-diff -r libjingle-0.4.0/talk/base/task.cc libjingle/files/talk/base/task.cc
-5c5
-< * Redistribution and use in source and binary forms, with or without
----
-> * Redistribution and use in source and binary forms, with or without
-8c8
-< * 1. Redistributions of source code must retain the above copyright notice,
----
-> * 1. Redistributions of source code must retain the above copyright notice,
-13c13
-< * 3. The name of the author may not be used to endorse or promote products
----
-> * 3. The name of the author may not be used to endorse or promote products
-17c17
-< * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
----
-> * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-19c19
-< * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
----
-> * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-23,24c23,24
-< * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-< * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
----
-> * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-> * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-141c141
-< if (aborted_ || done_)
----
-> if (done_)
-150c150
-< Wake(); // to self-delete
----
-> GetRunner()->WakeTasks();
-diff -r libjingle-0.4.0/talk/base/taskrunner.h libjingle/files/talk/base/taskrunner.h
-63a64,68
-> bool HasPendingTimeoutTask() {
-> return next_timeout_task_ != NULL &&
-> next_timeout_task_->TimedOut();
-> }
->
-diff -r libjingle-0.4.0/talk/base/testclient.cc libjingle/files/talk/base/testclient.cc
-29a30
-> #include <cstring>
-diff -r libjingle-0.4.0/talk/base/thread.cc libjingle/files/talk/base/thread.cc
-100a101,105
-> bool ThreadManager::ThreadActive(Thread *thread) {
-> CritScope cs(&crit_);
-> return(std::find(threads_.begin(), threads_.end(), thread) != threads_.end());
-> }
->
-103a109
-> stopped_ = false;
-124,125c130,135
-< pthread_create(&thread_, &attr, PreRun, this);
-< started_ = true;
----
-> CritScope cs(&started_crit_);
-> // Make sure Join() hasn't been called yet.
-> if (stopped_)
-> return;
-> if (pthread_create(&thread_, &attr, PreRun, this) == 0)
-> started_ = true;
-128a139,140
-> CritScope cs(&started_crit_);
-> stopped_ = true;
-131a144
-> started_ = false;
-168a182,185
-> CritScope cs(&started_crit_);
-> // Make sure Join() hasn't been called yet.
-> if (stopped_)
-> return;
-181a199,200
-> CritScope cs(&started_crit_);
-> stopped_ = true;
-191a211,213
-> // Make sure the thread hasn't been deleted.
-> if (!g_thmgr.ThreadActive(thread))
-> return NULL;
-207c229
-< MessageQueue::Stop();
----
-> MessageQueue::Quit();
-329c351
-< return false;
----
-> return !IsQuitting();
-diff -r libjingle-0.4.0/talk/base/thread.h libjingle/files/talk/base/thread.h
-57a58
-> bool ThreadActive(Thread *thread);
-134a136
-> CriticalSection started_crit_;
-135a138
-> bool stopped_;
-diff -r libjingle-0.4.0/talk/base/urlencode.cc libjingle/files/talk/base/urlencode.cc
-0a1,2
-> #include <stdlib.h>
-> #include <string.h>
-Only in libjingle-0.4.0/talk/base: win32socketserver.cc
-Only in libjingle-0.4.0/talk/base: win32socketserver.h
-Only in libjingle/files/talk/base: win32window.cc
-diff -r libjingle-0.4.0/talk/base/winping.cc libjingle/files/talk/base/winping.cc
-133c133
-< return sizeof(ICMP_ECHO_REPLY) + max(8UL, data_size);
----
-> return sizeof(ICMP_ECHO_REPLY) + _max((uint32)(8UL), data_size);
-317c317
-< } // namespace talk_base
-\ No newline at end of file
----
-> } // namespace talk_base
-Only in libjingle/files/talk/base: winsock_initializer.cc
-Only in libjingle/files/talk/base: winsock_initializer.h
-Only in libjingle-0.4.0/talk: examples
-Only in libjingle-0.4.0/talk: libjingle.sln
-Only in libjingle-0.4.0/talk: libjingle.vcproj
-Only in libjingle-0.4.0/talk: p2p
-Only in libjingle-0.4.0/talk: session
-Only in libjingle-0.4.0/talk: third_party
-Only in libjingle-0.4.0/talk/xmllite: Makefile.in
-diff -r libjingle-0.4.0/talk/xmllite/qname.cc libjingle/files/talk/xmllite/qname.cc
-39c39
-< int result = ns.size() * 101;
----
-> int result = static_cast<int>(ns.size()) * 101;
-diff -r libjingle-0.4.0/talk/xmllite/qname.h libjingle/files/talk/xmllite/qname.h
-64d63
-< refcount_(1),
-66c65,66
-< localPart_(local) {}
----
-> localPart_(local),
-> refcount_(1) {}
-diff -r libjingle-0.4.0/talk/xmllite/xmlelement.cc libjingle/files/talk/xmllite/xmlelement.cc
-88c88,89
-< pLastChild_(NULL) {
----
-> pLastChild_(NULL),
-> cdata_(false) {
-97c98,99
-< pLastChild_(NULL) {
----
-> pLastChild_(NULL),
-> cdata_(false) {
-125a128
-> cdata_ = elt.cdata_;
-133c136,137
-< pLastChild_(NULL) {
----
-> pLastChild_(NULL),
-> cdata_(false) {
-393a398,403
-> XmlElement::AddCDATAText(const char * buf, int len) {
-> cdata_ = true;
-> AddParsedText(buf, len);
-> }
->
-> void
-diff -r libjingle-0.4.0/talk/xmllite/xmlelement.h libjingle/files/talk/xmllite/xmlelement.h
-203a204,206
-> // Note: CDATA is not supported by XMPP, therefore using this function will
-> // generate non-XMPP compatible XML.
-> void AddCDATAText(const char * buf, int len);
-217a221,222
-> bool IsCDATA() const { return cdata_; }
->
-228a234
-> bool cdata_;
-diff -r libjingle-0.4.0/talk/xmllite/xmlparser.cc libjingle/files/talk/xmllite/xmlparser.cc
-28,29d27
-< #include "talk/xmllite/xmlparser.h"
-<
-35a34
-> #include "talk/xmllite/xmlconstants.h"
-38c37
-< #include "talk/xmllite/xmlconstants.h"
----
-> #include "talk/xmllite/xmlparser.h"
-119a119,121
-> context_.SetPosition(XML_GetCurrentLineNumber(expat_),
-> XML_GetCurrentColumnNumber(expat_),
-> XML_GetCurrentByteIndex(expat_));
-127a130,132
-> context_.SetPosition(XML_GetCurrentLineNumber(expat_),
-> XML_GetCurrentColumnNumber(expat_),
-> XML_GetCurrentByteIndex(expat_));
-134a140,142
-> context_.SetPosition(XML_GetCurrentLineNumber(expat_),
-> XML_GetCurrentColumnNumber(expat_),
-> XML_GetCurrentByteIndex(expat_));
-168c176,180
-< if (XML_Parse(expat_, data, static_cast<int>(len), isFinal) != XML_STATUS_OK)
----
-> if (XML_Parse(expat_, data, static_cast<int>(len), isFinal) !=
-> XML_STATUS_OK) {
-> context_.SetPosition(XML_GetCurrentLineNumber(expat_),
-> XML_GetCurrentColumnNumber(expat_),
-> XML_GetCurrentByteIndex(expat_));
-169a182
-> }
-193c206,209
-< raised_(XML_ERROR_NONE) {
----
-> raised_(XML_ERROR_NONE),
-> line_number_(0),
-> column_number_(0),
-> byte_index_(0) {
-247c263,285
-< XmlParser::ParseContext::~ParseContext() {
----
-> void
-> XmlParser::ParseContext::SetPosition(XML_Size line, XML_Size column,
-> XML_Index byte_index) {
-> line_number_ = line;
-> column_number_ = column;
-> byte_index_ = byte_index;
-> }
->
-> void
-> XmlParser::ParseContext::GetPosition(unsigned long * line,
-> unsigned long * column,
-> unsigned long * byte_index) {
-> if (line != NULL) {
-> *line = static_cast<unsigned long>(line_number_);
-> }
->
-> if (column != NULL) {
-> *column = static_cast<unsigned long>(column_number_);
-> }
->
-> if (byte_index != NULL) {
-> *byte_index = static_cast<unsigned long>(byte_index_);
-> }
-249a288
-> XmlParser::ParseContext::~ParseContext() {
-251a291
-> }
-diff -r libjingle-0.4.0/talk/xmllite/xmlparser.h libjingle/files/talk/xmllite/xmlparser.h
-48a49,50
-> virtual void GetPosition(unsigned long * line, unsigned long * column,
-> unsigned long * byte_index) = 0;
-85a88,89
-> virtual void GetPosition(unsigned long * line, unsigned long * column,
-> unsigned long * byte_index);
-91a96
-> void SetPosition(XML_Size line, XML_Size column, XML_Index byte_index);
-96a102,104
-> XML_Size line_number_;
-> XML_Size column_number_;
-> XML_Index byte_index_;
-diff -r libjingle-0.4.0/talk/xmllite/xmlprinter.cc libjingle/files/talk/xmllite/xmlprinter.cc
-46a47
-> void PrintCDATAText(const std::string & text);
-134,136c135,141
-< if (pchild->IsText())
-< PrintBodyText(pchild->AsText()->Text());
-< else
----
-> if (pchild->IsText()) {
-> if (element->IsCDATA()) {
-> PrintCDATAText(pchild->AsText()->Text());
-> } else {
-> PrintBodyText(pchild->AsText()->Text());
-> }
-> } else
-188a194,197
-> void
-> XmlPrinterImpl::PrintCDATAText(const std::string & text) {
-> *pout_ << "<![CDATA[" << text << "]]>";
-> }
-Only in libjingle-0.4.0/talk/xmpp: Makefile.in
-Only in libjingle-0.4.0/talk/xmpp: constants.cc
-Only in libjingle-0.4.0/talk/xmpp: constants.h
-diff -r libjingle-0.4.0/talk/xmpp/jid.cc libjingle/files/talk/xmpp/jid.cc
-33c33
-< #include "talk/xmpp/constants.h"
----
-> #include "talk/xmpp/xmppconstants.h"
-diff -r libjingle-0.4.0/talk/xmpp/plainsaslhandler.h libjingle/files/talk/xmpp/plainsaslhandler.h
-31d30
-< #include "talk/xmpp/saslhandler.h"
-32a32,34
-> #include <string>
->
-> #include "talk/xmpp/saslhandler.h"
-68a71,76
->
-> virtual bool GetTlsServerInfo(const talk_base::SocketAddress& server,
-> std::string* tls_server_hostname,
-> std::string* tls_server_domain) {
-> return false;
-> }
-diff -r libjingle-0.4.0/talk/xmpp/prexmppauth.h libjingle/files/talk/xmpp/prexmppauth.h
-33d32
-< #include "talk/xmpp/saslhandler.h"
-64c63
-< class PreXmppAuth : public SaslHandler {
----
-> class PreXmppAuth {
-diff -r libjingle-0.4.0/talk/xmpp/saslcookiemechanism.h libjingle/files/talk/xmpp/saslcookiemechanism.h
-33c33
-< #include "talk/xmpp/constants.h"
----
-> #include "talk/xmpp/xmppconstants.h"
-40,41c40,55
-< SaslCookieMechanism(const std::string & mechanism, const std::string & username, const std::string & cookie) :
-< mechanism_(mechanism), username_(username), cookie_(cookie) {}
----
-> SaslCookieMechanism(const std::string & mechanism,
-> const std::string & username,
-> const std::string & cookie,
-> const std::string & token_service)
-> : mechanism_(mechanism),
-> username_(username),
-> cookie_(cookie),
-> token_service_(token_service) {}
->
-> SaslCookieMechanism(const std::string & mechanism,
-> const std::string & username,
-> const std::string & cookie)
-> : mechanism_(mechanism),
-> username_(username),
-> cookie_(cookie),
-> token_service_("") {}
-48a63,67
-> if (!token_service_.empty()) {
-> el->AddAttr(
-> QName(true, "http://www.google.com/talk/protocol/auth", "service"),
-> token_service_);
-> }
-62a82
-> std::string token_service_;
-diff -r libjingle-0.4.0/talk/xmpp/saslhandler.h libjingle/files/talk/xmpp/saslhandler.h
-31a32,34
-> #include <vector>
->
-> #include "talk/base/socketaddress.h"
-53a57,63
->
-> // Fills in the tls server hostname/domain to use for the given
-> // server (and returns true). Return false if you want the defaults
-> // to be used.
-> virtual bool GetTlsServerInfo(const talk_base::SocketAddress& server,
-> std::string* tls_server_hostname,
-> std::string* tls_server_domain) = 0;
-diff -r libjingle-0.4.0/talk/xmpp/saslmechanism.cc libjingle/files/talk/xmpp/saslmechanism.cc
-30c30
-< #include "talk/xmpp/constants.h"
----
-> #include "talk/xmpp/xmppconstants.h"
-diff -r libjingle-0.4.0/talk/xmpp/xmppclient.cc libjingle/files/talk/xmpp/xmppclient.cc
-30c30
-< #include "talk/xmpp/constants.h"
----
-> #include "talk/xmpp/xmppconstants.h"
-32a33
-> #include "talk/xmpp/saslhandler.h"
-68a70
-> scoped_ptr<SaslHandler> sasl_handler_;
-93c95,99
-< XmppClient::Connect(const XmppClientSettings & settings, const std::string & lang, AsyncSocket * socket, PreXmppAuth * pre_auth) {
----
-> XmppClient::Connect(const XmppClientSettings & settings,
-> const std::string & lang,
-> AsyncSocket * socket,
-> PreXmppAuth * pre_auth,
-> SaslHandler * sasl_handler) {
-113,125c119,125
-< //
-< // The talk.google.com server expects you to use "gmail.com" in the
-< // stream, and expects the domain certificate to be "gmail.com" as well.
-< // For all other servers, we leave the strings empty, which causes
-< // the jid's domain to be used. "foo@example.com" -> stream to="example.com"
-< // tls certificate for "example.com"
-< //
-< // This is only true when using Gaia auth, so let's say if there's no preauth,
-< // we should use the actual server name
-< if ((settings.server().IPAsString() == buzz::STR_TALK_GOOGLE_COM ||
-< settings.server().IPAsString() == buzz::STR_TALKX_L_GOOGLE_COM) &&
-< pre_auth != NULL) {
-< d_->engine_->SetTlsServer(buzz::STR_GMAIL_COM, buzz::STR_GMAIL_COM);
----
-> if (sasl_handler) {
-> std::string tls_server_hostname, tls_server_domain;
-> if (sasl_handler->GetTlsServerInfo(settings.server(),
-> &tls_server_hostname,
-> &tls_server_domain)) {
-> d_->engine_->SetTlsServer(tls_server_hostname, tls_server_domain);
-> }
-139a140
-> d_->sasl_handler_.reset(sasl_handler);
-200a202,209
-> if (d_->sasl_handler_.get()) {
-> d_->engine_->SetSaslHandler(d_->sasl_handler_.release());
-> }
-> else {
-> d_->engine_->SetSaslHandler(new PlainSaslHandler(
-> d_->engine_->GetUser(), d_->pass_, d_->allow_plain_));
-> }
->
-209,210d217
-< d_->engine_->SetSaslHandler(new PlainSaslHandler(
-< d_->engine_->GetUser(), d_->pass_, d_->allow_plain_));
-253,254d259
-< // transfer ownership of pre_auth_ to engine
-< d_->engine_->SetSaslHandler(d_->pre_auth_.release());
-261a267,268
-> d_->pre_engine_error_ = XmppEngine::ERROR_SOCKET;
-> d_->pre_engine_subcode_ = d_->socket_->GetError();
-347c354
-< //#ifdef _DEBUG
----
-> //#if !defined(NDEBUG)
-375c382
-< //#ifdef _DEBUG
----
-> //#if !defined(NDEBUG)
-diff -r libjingle-0.4.0/talk/xmpp/xmppclient.h libjingle/files/talk/xmpp/xmppclient.h
-42a43
-> class SaslHandler;
-80c81,82
-< PreXmppAuth * preauth);
----
-> PreXmppAuth * preauth,
-> SaslHandler * sasl_handler);
-141c143
-< std::string XmppClient::GetStateName(int state) const {
----
-> std::string GetStateName(int state) const {
-diff -r libjingle-0.4.0/talk/xmpp/xmppclientsettings.h libjingle/files/talk/xmpp/xmppclientsettings.h
-31d30
-< #include "talk/p2p/base/port.h"
-32a32,45
-> #include "talk/base/proxyinfo.h"
->
-> namespace cricket {
->
-> // This enum was taken from talk/p2p/base/port.h, which is the only
-> // thing we actually need from the p2p directory.
-> enum ProtocolType {
-> PROTO_UDP,
-> PROTO_TCP,
-> PROTO_SSLTCP,
-> PROTO_LAST = PROTO_SSLTCP
-> };
->
-> } // namespace cricket
-59a73,75
-> void set_token_service(const std::string & token_service) {
-> token_service_ = token_service;
-> }
-75a92
-> const std::string & token_service() const { return token_service_; }
-93a111
-> std::string token_service_;
-Only in libjingle/files/talk/xmpp: xmppconstants.cc
-Only in libjingle/files/talk/xmpp: xmppconstants.h
-diff -r libjingle-0.4.0/talk/xmpp/xmppengineimpl.cc libjingle/files/talk/xmpp/xmppengineimpl.cc
-37c37
-< #include "talk/xmpp/constants.h"
----
-> #include "talk/xmpp/xmppconstants.h"
-diff -r libjingle-0.4.0/talk/xmpp/xmppengineimpl_iq.cc libjingle/files/talk/xmpp/xmppengineimpl_iq.cc
-32c32
-< #include "talk/xmpp/constants.h"
----
-> #include "talk/xmpp/xmppconstants.h"
-diff -r libjingle-0.4.0/talk/xmpp/xmpplogintask.cc libjingle/files/talk/xmpp/xmpplogintask.cc
-34c34
-< #include "talk/xmpp/constants.h"
----
-> #include "talk/xmpp/xmppconstants.h"
-44c44
-< #ifdef _DEBUG
----
-> #if !defined(NDEBUG)
-59c59
-< #endif // _DEBUG
----
-> #endif // !defined(NDEBUG)
-103c103
-< #if _DEBUG
----
-> #if !defined(NDEBUG)
-106c106
-< #endif // _DEBUG
----
-> #endif // !defined(NDEBUG)
-218a219,221
-> auth->SetAttr(QN_GOOGLE_ALLOW_GENERATED_JID_XMPP_LOGIN, "true");
-> auth->SetAttr(QN_GOOGLE_AUTH_CLIENT_USES_FULL_BIND_RESULT, "true");
->
-diff -r libjingle-0.4.0/talk/xmpp/xmpplogintask.h libjingle/files/talk/xmpp/xmpplogintask.h
-93c93
-< #ifdef _DEBUG
----
-> #if !defined(NDEBUG)
-95c95
-< #endif // _DEBUG
----
-> #endif // !defined(NDEBUG)
-diff -r libjingle-0.4.0/talk/xmpp/xmppstanzaparser.cc libjingle/files/talk/xmpp/xmppstanzaparser.cc
-32c32
-< #include "talk/xmpp/constants.h"
----
-> #include "talk/xmpp/xmppconstants.h"
-diff -r libjingle-0.4.0/talk/xmpp/xmpptask.cc libjingle/files/talk/xmpp/xmpptask.cc
-31c31
-< #include "talk/xmpp/constants.h"
----
-> #include "talk/xmpp/xmppconstants.h"
-40c40
-< #ifdef _DEBUG
----
-> #if !defined(NDEBUG)
-88c88
-< #ifdef _DEBUG
----
-> #if !defined(NDEBUG)
-174c174
-< }
-\ No newline at end of file
----
-> }
-diff -r libjingle-0.4.0/talk/xmpp/xmpptask.h libjingle/files/talk/xmpp/xmpptask.h
-80c80
-< #ifdef _DEBUG
----
-> #if !defined(NDEBUG)
-106,107c106,107
-< XmlElement *MakeIqResult(const XmlElement* query);
-< XmlElement *MakeIq(const std::string& type,
----
-> static XmlElement *MakeIqResult(const XmlElement* query);
-> static XmlElement *MakeIq(const std::string& type,
-123c123
-< #ifdef _DEBUG
----
-> #if !defined(NDEBUG)
+---
+> 1. Install Visual C++ Express 2005. It is free from this link:
+> http://msdn.microsoft.com/vstudio/express/visualc/
+>
+> 2. Install the platform SDK and integrate it into VC++ express
+> http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/
+>
+> 3. Download and install binary package for expat:
+> http://sourceforge.net/project/showfiles.php?group_id=10127&package_id=11277
+>
+> 4. Update the Visual C++ directories in the Projects and Solutions section in the Options dialog box
+> Library files: C:\expat-VERSION\StaticLibs
+> Include files: C:\expat-VERSION\Source\Lib
+> where VERSION is the version of expat you've downoaded
+>
+> 5. Unzip the libjingle files and open the solution.
+>
+> 6. If you wish to build the call example with GIPS Voice Engine Lite, download Voice Engine Lite from http://developer.globalipsound.com
+>
+> 7. Extract the Interface and Library directories from the Voice Engine Lite zip file into talk\third_party\gips
+>
+> 8. Open talk\third_party\gips\expiration.h and set the GIPS_EXPIRATION #defines to the expiration date provided by GIPS and remove the #error directive
+>
+> 9. Build the solution
+>
+Only in libjingle-0.4.0: aclocal.m4
+Only in libjingle-0.4.0: config.guess
+diff -r libjingle-0.4.0/config.h libjingle/files/config.h
+14c14
+< #define HAVE_ALSA_ASOUNDLIB_H 1
+---
+> /* #undef HAVE_ALSA_ASOUNDLIB_H */
+23c23
+< #define HAVE_GLIB 1
+---
+> /* #undef HAVE_GLIB */
+38c38
+< #define HAVE_ORTP 1
+---
+> /* #undef HAVE_ORTP */
+41c41
+< #define HAVE_SPEEX 1
+---
+> /* #undef HAVE_SPEEX */
+47c47
+< #define HAVE_SPEEX_SPEEX_H 1
+---
+> /* #undef HAVE_SPEEX_SPEEX_H */
+71c71
+< #define LINUX 1
+---
+> /* #undef LINUX */
+113c113
+< #define __ALSA_ENABLED__ 1
+---
+> /* #undef __ALSA_ENABLED__ */
+Only in libjingle-0.4.0: config.h.in
+Only in libjingle-0.4.0: config.sub
+Only in libjingle-0.4.0: configure
+Only in libjingle-0.4.0: depcomp
+Only in libjingle-0.4.0: install-sh
+Only in libjingle-0.4.0: ltmain.sh
+Only in libjingle-0.4.0: missing
+Only in libjingle-0.4.0/talk: Makefile.in
+Only in libjingle-0.4.0/talk/base: Makefile.in
+diff -r libjingle-0.4.0/talk/base/asynchttprequest.cc libjingle/files/talk/base/asynchttprequest.cc
+73c73
+< talk_base::SSLAdapter * ssl_adapter = talk_base::SSLAdapter::Create(socket);
+---
+> talk_base::SSLAdapter * ssl_adapter = factory_->CreateSSLAdapter(socket);
+75c75,81
+< ssl_adapter->StartSSL(hostname_.c_str(), true);
+---
+> int error = ssl_adapter->StartSSL(hostname_.c_str(),
+> use_restartable_ssl_sockets_);
+> if (error != 0) {
+> LOG(LS_WARNING) << "Could not start SSL; error = " << error;
+> delete ssl_adapter;
+> return 0;
+> }
+diff -r libjingle-0.4.0/talk/base/asynchttprequest.h libjingle/files/talk/base/asynchttprequest.h
+23,24c23
+< public SignalThread,
+< public sigslot::has_slots<> {
+---
+> public SignalThread {
+106c105,106
+< binary_mode_(false), agent_(user_agent) { }
+---
+> binary_mode_(false), agent_(user_agent),
+> ignore_bad_cert_(false), use_restartable_ssl_sockets_(false) { }
+114a115,120
+> bool use_restartable_ssl_sockets() const {
+> return use_restartable_ssl_sockets_;
+> }
+> void SetUseRestartableSSLSockets(bool use_restartable_ssl_sockets) {
+> use_restartable_ssl_sockets_ = use_restartable_ssl_sockets;
+> }
+133a140
+> bool use_restartable_ssl_sockets_;
+diff -r libjingle-0.4.0/talk/base/asynctcpsocket.cc libjingle/files/talk/base/asynctcpsocket.cc
+31a32,33
+> #include <cstring>
+>
+diff -r libjingle-0.4.0/talk/base/autodetectproxy.cc libjingle/files/talk/base/autodetectproxy.cc
+29c29
+< #include "talk/base/httpcommon.h"
+---
+> #include "talk/base/httpcommon-inl.h"
+114c114
+< Thread::Current()->MessageQueue::Stop();
+---
+> Thread::Current()->Quit();
+diff -r libjingle-0.4.0/talk/base/autodetectproxy.h libjingle/files/talk/base/autodetectproxy.h
+22c22
+< class AutoDetectProxy : public SignalThread, public sigslot::has_slots<> {
+---
+> class AutoDetectProxy : public SignalThread {
+diff -r libjingle-0.4.0/talk/base/base64.h libjingle/files/talk/base/base64.h
+26,27c26,27
+< static const std::string Base64::Base64Table;
+< static const std::string::size_type Base64::DecodeTable[];
+---
+> static const std::string Base64Table;
+> static const std::string::size_type DecodeTable[];
+diff -r libjingle-0.4.0/talk/base/common.h libjingle/files/talk/base/common.h
+54c54
+< #define stdmax(x,y) max(x,y)
+---
+> #define stdmax(x,y) _max(x,y)
+114,119d113
+< // A macro to disallow the evil copy constructor and operator= functions
+< // This should be used in the private: declarations for a class
+< #define DISALLOW_EVIL_CONSTRUCTORS(TypeName) \
+< TypeName(const TypeName&); \
+< void operator=(const TypeName&)
+<
+diff -r libjingle-0.4.0/talk/base/criticalsection.h libjingle/files/talk/base/criticalsection.h
+39c39
+< #ifdef _DEBUG
+---
+> #if !defined(NDEBUG)
+41c41
+< #endif // _DEBUG
+---
+> #endif // !defined(NDEBUG)
+83c83
+< public:
+---
+> public:
+85a86
+> pthread_mutexattr_init(&mutex_attribute);
+87a89,90
+> pthread_mutexattr_destroy(&mutex_attribute);
+> TRACK_OWNER(thread_ = 0);
+93a97
+> TRACK_OWNER(thread_ = pthread_self());
+95a100
+> TRACK_OWNER(thread_ = 0);
+98c103,110
+< private:
+---
+>
+> #if CS_TRACK_OWNER
+> bool CurrentThreadIsOwner() const {
+> return pthread_equal(thread_, pthread_self());
+> }
+> #endif // CS_TRACK_OWNER
+>
+> private:
+99a112
+> TRACK_OWNER(pthread_t thread_);
+diff -r libjingle-0.4.0/talk/base/cryptstring.h libjingle/files/talk/base/cryptstring.h
+30a31
+> #include <string.h>
+diff -r libjingle-0.4.0/talk/base/diskcache.cc libjingle/files/talk/base/diskcache.cc
+43c43
+< #ifdef _DEBUG
+---
+> #if !defined(NDEBUG)
+45c45
+< #else // !_DEBUG
+---
+> #else // defined(NDEBUG)
+47c47
+< #endif // !_DEBUG
+---
+> #endif // !defined(NDEBUG)
+231c231
+< #ifdef _DEBUG
+---
+> #if !defined(NDEBUG)
+238c238
+< #endif // _DEBUG
+---
+> #endif // !defined(NDEBUG)
+diff -r libjingle-0.4.0/talk/base/diskcache_win32.cc libjingle/files/talk/base/diskcache_win32.cc
+38c38
+< entry->streams = max(entry->streams, index + 1);
+---
+> entry->streams = _max(entry->streams, index + 1);
+diff -r libjingle-0.4.0/talk/base/helpers.cc libjingle/files/talk/base/helpers.cc
+38a39
+> #include <wincrypt.h>
+diff -r libjingle-0.4.0/talk/base/host.cc libjingle/files/talk/base/host.cc
+30a31
+> #include <cstdlib>
+diff -r libjingle-0.4.0/talk/base/httpclient.cc libjingle/files/talk/base/httpclient.cc
+670a671
+> HttpAuthContext *context = context_.get();
+676c677,678
+< *context_.use(), response, auth_method);
+---
+> context, response, auth_method);
+> context_.reset(context);
+diff -r libjingle-0.4.0/talk/base/httpcommon.h libjingle/files/talk/base/httpcommon.h
+172c172
+< inline const uint16 UrlDefaultPort(bool secure) {
+---
+> inline uint16 UrlDefaultPort(bool secure) {
+diff -r libjingle-0.4.0/talk/base/logging.cc libjingle/files/talk/base/logging.cc
+27a28
+> #include <stdio.h>
+76c77
+< #if _DEBUG
+---
+> #if LOGGING
+78c79
+< #else // !_DEBUG
+---
+> #else
+80c81
+< #endif // !_DEBUG
+---
+> #endif
+diff -r libjingle-0.4.0/talk/base/logging.h libjingle/files/talk/base/logging.h
+67a68,69
+>
+> #if defined(SAFE_TO_DEFINE_TALK_BASE_LOGGING_MACROS)
+70a73
+> #endif // defined(SAFE_TO_DEFINE_TALK_BASE_LOGGING_MACROS)
+195a199
+> #if defined(SAFE_TO_DEFINE_TALK_BASE_LOGGING_MACROS)
+197c201
+< #if defined(_DEBUG) && !defined(NDEBUG)
+---
+> #if !defined(NDEBUG)
+290a295
+> #endif // defined(SAFE_TO_DEFINE_TALK_BASE_LOGGING_MACROS)
+diff -r libjingle-0.4.0/talk/base/messagequeue.cc libjingle/files/talk/base/messagequeue.cc
+98,99c98,99
+< new_ss = true;
+< ss_ = new PhysicalSocketServer();
+---
+> default_ss_.reset(new PhysicalSocketServer());
+> ss_ = default_ss_.get();
+103a104,107
+> // The signal is done from here to ensure
+> // that it always gets called when the queue
+> // is going away.
+> SignalQueueDestroyed();
+108,109d111
+< if (new_ss)
+< delete ss_;
+113,115d114
+< if (new_ss)
+< delete ss_;
+< new_ss = false;
+119c118
+< void MessageQueue::Stop() {
+---
+> void MessageQueue::Quit() {
+124c123
+< bool MessageQueue::IsStopping() {
+---
+> bool MessageQueue::IsQuitting() {
+diff -r libjingle-0.4.0/talk/base/messagequeue.h libjingle/files/talk/base/messagequeue.h
+35a36
+> #include "talk/base/scoped_ptr.h"
+162,164c163,164
+<
+< virtual void Stop();
+< virtual bool IsStopping();
+---
+> virtual void Quit();
+> virtual bool IsQuitting();
+188a189,192
+> // When this signal is sent out, any references to this queue should
+> // no longer be used.
+> sigslot::signal0<> SignalQueueDestroyed;
+>
+192a197,198
+> // If a server isn't supplied in the constructor, use this one.
+> scoped_ptr<SocketServer> default_ss_;
+diff -r libjingle-0.4.0/talk/base/natserver.cc libjingle/files/talk/base/natserver.cc
+28a29
+> #include <cstring>
+diff -r libjingle-0.4.0/talk/base/natsocketfactory.cc libjingle/files/talk/base/natsocketfactory.cc
+29a30
+> #include <cstring>
+diff -r libjingle-0.4.0/talk/base/openssladapter.cc libjingle/files/talk/base/openssladapter.cc
+619c619
+< #ifdef _DEBUG
+---
+> #if !defined(NDEBUG)
+707c707
+< #if _DEBUG
+---
+> #if !defined(NDEBUG)
+736c736
+< #endif // _DEBUG
+---
+> #endif // !defined(NDEBUG)
+740c740
+< #if _DEBUG
+---
+> #if !defined(NDEBUG)
+798c798
+< #ifdef _DEBUG
+---
+> #if !defined(NDEBUG)
+diff -r libjingle-0.4.0/talk/base/openssladapter.h libjingle/files/talk/base/openssladapter.h
+72c72
+< #if _DEBUG
+---
+> #if !defined(NDEBUG)
+74c74
+< #endif // !_DEBUG
+---
+> #endif // !defined(NDEBUG)
+diff -r libjingle-0.4.0/talk/base/physicalsocketserver.cc libjingle/files/talk/base/physicalsocketserver.cc
+61a62
+> #include "talk/base/winsock_initializer.h"
+67,86d67
+< #ifdef WIN32
+< class WinsockInitializer {
+< public:
+< WinsockInitializer() {
+< WSADATA wsaData;
+< WORD wVersionRequested = MAKEWORD(1, 0);
+< err_ = WSAStartup(wVersionRequested, &wsaData);
+< }
+< ~WinsockInitializer() {
+< WSACleanup();
+< }
+< int error() {
+< return err_;
+< }
+< private:
+< int err_;
+< };
+< WinsockInitializer g_winsockinit;
+< #endif
+<
+124a106,108
+> #ifdef WIN32
+> EnsureWinsockInit();
+> #endif
+187c171,177
+< addr2.Resolve(); // TODO: Do this async later?
+---
+> // TODO: Do this async later?
+> if (!addr2.Resolve()) {
+> LOG(LS_ERROR) << "Resolving addr failed";
+> UpdateLastError();
+> Close();
+> return SOCKET_ERROR;
+> }
+265a256,259
+> LOG(LS_WARNING) << "EOF from socket; deferring close event";
+> // Must turn this back on so that the select() loop will notice the close
+> // event.
+> enabled_events_ |= kfRead;
+402a397
+> virtual bool IsDescriptorClosed() = 0;
+452a448,451
+> virtual bool IsDescriptorClosed() {
+> return false;
+> }
+>
+490a490,497
+> virtual bool IsDescriptorClosed() {
+> // We don't have a reliable way of distinguishing end-of-stream
+> // from readability. So test on each readable call. Is this
+> // inefficient? Probably.
+> char ch;
+> return (0 == ::recv(s_, &ch, 1, MSG_PEEK));
+> }
+>
+546a554,557
+> virtual bool IsDescriptorClosed() {
+> return false;
+> }
+>
+916c927,931
+< ff |= kfRead;
+---
+> if (pdispatcher->IsDescriptorClosed()) {
+> ff |= kfClose;
+> } else {
+> ff |= kfRead;
+> }
+diff -r libjingle-0.4.0/talk/base/proxydetect.cc libjingle/files/talk/base/proxydetect.cc
+205,206c205,206
+< const char* list = slist.c_str();
+< while (*list) {
+---
+> const char* clist = slist.c_str();
+> while (*clist) {
+208,209c208,209
+< if (isspace(*list)) {
+< ++list;
+---
+> if (isspace(*clist)) {
+> ++clist;
+214,217c214,217
+< const char * start = list;
+< if (const char * end = strchr(list, sep)) {
+< len = (end - list);
+< list += len + 1;
+---
+> const char * start = clist;
+> if (const char * end = strchr(clist, sep)) {
+> len = (end - clist);
+> clist += len + 1;
+219,220c219,220
+< len = strlen(list);
+< list += len;
+---
+> len = strlen(clist);
+> clist += len;
+diff -r libjingle-0.4.0/talk/base/schanneladapter.cc libjingle/files/talk/base/schanneladapter.cc
+607c607
+< size_t read = min(cb, readable.size());
+---
+> size_t read = _min(cb, readable.size());
+diff -r libjingle-0.4.0/talk/base/scoped_ptr.h libjingle/files/talk/base/scoped_ptr.h
+36,257c36
+< namespace talk_base {
+<
+< template <typename T>
+< class scoped_ptr {
+< private:
+<
+< T* ptr;
+<
+< scoped_ptr(scoped_ptr const &);
+< scoped_ptr & operator=(scoped_ptr const &);
+<
+< public:
+<
+< typedef T element_type;
+<
+< explicit scoped_ptr(T* p = 0): ptr(p) {}
+<
+< ~scoped_ptr() {
+< typedef char type_must_be_complete[sizeof(T)];
+< delete ptr;
+< }
+<
+< void reset(T* p = 0) {
+< typedef char type_must_be_complete[sizeof(T)];
+<
+< if (ptr != p) {
+< delete ptr;
+< ptr = p;
+< }
+< }
+<
+< T& operator*() const {
+< assert(ptr != 0);
+< return *ptr;
+< }
+<
+< T* operator->() const {
+< assert(ptr != 0);
+< return ptr;
+< }
+<
+< T* get() const {
+< return ptr;
+< }
+<
+< void swap(scoped_ptr & b) {
+< T* tmp = b.ptr;
+< b.ptr = ptr;
+< ptr = tmp;
+< }
+<
+< T* release() {
+< T* tmp = ptr;
+< ptr = 0;
+< return tmp;
+< }
+<
+< T** accept() {
+< if (ptr) {
+< delete ptr;
+< ptr = 0;
+< }
+< return &ptr;
+< }
+<
+< T** use() {
+< return &ptr;
+< }
+< };
+<
+< template<typename T> inline
+< void swap(scoped_ptr<T>& a, scoped_ptr<T>& b) {
+< a.swap(b);
+< }
+<
+<
+<
+<
+< // scoped_array extends scoped_ptr to arrays. Deletion of the array pointed to
+< // is guaranteed, either on destruction of the scoped_array or via an explicit
+< // reset(). Use shared_array or std::vector if your needs are more complex.
+<
+< template<typename T>
+< class scoped_array {
+< private:
+<
+< T* ptr;
+<
+< scoped_array(scoped_array const &);
+< scoped_array & operator=(scoped_array const &);
+<
+< public:
+<
+< typedef T element_type;
+<
+< explicit scoped_array(T* p = 0) : ptr(p) {}
+<
+< ~scoped_array() {
+< typedef char type_must_be_complete[sizeof(T)];
+< delete[] ptr;
+< }
+<
+< void reset(T* p = 0) {
+< typedef char type_must_be_complete[sizeof(T)];
+<
+< if (ptr != p) {
+< delete [] ptr;
+< ptr = p;
+< }
+< }
+<
+< T& operator[](std::ptrdiff_t i) const {
+< assert(ptr != 0);
+< assert(i >= 0);
+< return ptr[i];
+< }
+<
+< T* get() const {
+< return ptr;
+< }
+<
+< void swap(scoped_array & b) {
+< T* tmp = b.ptr;
+< b.ptr = ptr;
+< ptr = tmp;
+< }
+<
+< T* release() {
+< T* tmp = ptr;
+< ptr = 0;
+< return tmp;
+< }
+<
+< T** accept() {
+< if (ptr) {
+< delete [] ptr;
+< ptr = 0;
+< }
+< return &ptr;
+< }
+< };
+<
+< template<class T> inline
+< void swap(scoped_array<T>& a, scoped_array<T>& b) {
+< a.swap(b);
+< }
+<
+< // scoped_ptr_malloc<> is similar to scoped_ptr<>, but it accepts a
+< // second template argument, the function used to free the object.
+<
+< template<typename T, void (*FF)(void*) = free> class scoped_ptr_malloc {
+< private:
+<
+< T* ptr;
+<
+< scoped_ptr_malloc(scoped_ptr_malloc const &);
+< scoped_ptr_malloc & operator=(scoped_ptr_malloc const &);
+<
+< public:
+<
+< typedef T element_type;
+<
+< explicit scoped_ptr_malloc(T* p = 0): ptr(p) {}
+<
+< ~scoped_ptr_malloc() {
+< typedef char type_must_be_complete[sizeof(T)];
+< FF(static_cast<void*>(ptr));
+< }
+<
+< void reset(T* p = 0) {
+< typedef char type_must_be_complete[sizeof(T)];
+<
+< if (ptr != p) {
+< FF(static_cast<void*>(ptr));
+< ptr = p;
+< }
+< }
+<
+< T& operator*() const {
+< assert(ptr != 0);
+< return *ptr;
+< }
+<
+< T* operator->() const {
+< assert(ptr != 0);
+< return ptr;
+< }
+<
+< T* get() const {
+< return ptr;
+< }
+<
+< void swap(scoped_ptr_malloc & b) {
+< T* tmp = b.ptr;
+< b.ptr = ptr;
+< ptr = tmp;
+< }
+<
+< T* release() {
+< T* tmp = ptr;
+< ptr = 0;
+< return tmp;
+< }
+<
+< T** accept() {
+< if (ptr) {
+< FF(static_cast<void*>(ptr));
+< ptr = 0;
+< }
+< return &ptr;
+< }
+< };
+<
+< template<typename T, void (*FF)(void*)> inline
+< void swap(scoped_ptr_malloc<T,FF>& a, scoped_ptr_malloc<T,FF>& b) {
+< a.swap(b);
+< }
+<
+< } // namespace talk_base
+<
+< // TODO: get rid of this global using
+< using talk_base::scoped_ptr;
+---
+> #include "base/scoped_ptr.h"
+diff -r libjingle-0.4.0/talk/base/signalthread.cc libjingle/files/talk/base/signalthread.cc
+12a13,15
+> main_->SignalQueueDestroyed.connect(this,
+> &SignalThread::OnMainThreadDestroyed);
+> refcount_ = 1;
+15a19,23
+> void SignalThread::OnMainThreadDestroyed() {
+> EnterExit ee(this);
+> main_ = NULL;
+> }
+>
+19a28
+> EnterExit ee(this);
+25a35
+> EnterExit ee(this);
+27c37
+< if (kInit == state_) {
+---
+> if (kInit == state_ || kComplete == state_) {
+36c46,47
+< void SignalThread::Destroy() {
+---
+> void SignalThread::Destroy(bool wait) {
+> EnterExit ee(this);
+39,40c50,51
+< delete this;
+< } else if (kRunning == state_) {
+---
+> refcount_--;
+> } else if (kRunning == state_ || kReleasing == state_) {
+42,47c53,63
+< // A couple tricky issues here:
+< // 1) Thread::Stop() calls Join(), which we don't want... we just want
+< // to stop the MessageQueue, which causes ContinueWork() to return false.
+< // 2) OnWorkStop() must follow Stop(), so that when the thread wakes up
+< // due to OWS(), ContinueWork() will return false.
+< worker_.MessageQueue::Stop();
+---
+> // OnWorkStop() must follow Quit(), so that when the thread wakes up due to
+> // OWS(), ContinueWork() will return false.
+> if (wait) {
+> // Release the thread's lock so that it can return from ::Run.
+> cs_.Leave();
+> worker_.Stop();
+> cs_.Enter();
+> refcount_--;
+> } else {
+> worker_.Quit();
+> }
+54a71
+> EnterExit ee(this);
+57c74
+< delete this;
+---
+> refcount_--;
+66a84
+> EnterExit ee(this);
+71a90
+> EnterExit ee(this);
+81a101,111
+> // Before signaling that the work is done, make sure that the worker
+> // thread actually is done. We got here because DoWork() finished and
+> // Run() posted the ST_MSG_WORKER_DONE message. This means the worker
+> // thread is about to go away anyway, but sometimes it doesn't actually
+> // finish before SignalWorkDone is processed, and for a reusable
+> // SignalThread this makes an assert in thread.cc fire.
+> //
+> // Calling Stop() on the worker ensures that the OS thread that underlies
+> // the worker will finish, and will be set to NULL, enabling us to call
+> // Start() again.
+> worker_.Stop();
+85c115
+< delete this;
+---
+> refcount_--;
+92c122,127
+< main_->Post(this, ST_MSG_WORKER_DONE);
+---
+> {
+> EnterExit ee(this);
+> if (main_) {
+> main_->Post(this, ST_MSG_WORKER_DONE);
+> }
+> }
+diff -r libjingle-0.4.0/talk/base/signalthread.h libjingle/files/talk/base/signalthread.h
+15a16,19
+> // Periodic tasks: Wait for SignalWorkDone, then eventually call Start()
+> // again to repeat the task. When the instance isn't needed anymore,
+> // call Release. DoWork, OnWorkStart and OnWorkStop are called again,
+> // on a new thread.
+22c26
+< class SignalThread : protected MessageHandler {
+---
+> class SignalThread : public sigslot::has_slots<>, protected MessageHandler {
+35,36c39,41
+< // SignalWorkDone will not be signalled.
+< void Destroy();
+---
+> // SignalWorkDone will not be signalled. If wait is true, does not return
+> // until the thread is deleted.
+> void Destroy(bool wait);
+53c58
+<
+---
+>
+57c62
+< // Context: Worker Thread. Subclass should call periodically to
+---
+> // Context: Worker Thread. Subclass should call periodically to
+67c72
+<
+---
+>
+79a85,106
+> class EnterExit {
+> friend class SignalThread;
+>
+> SignalThread * t_;
+>
+> EnterExit(SignalThread * t) : t_(t) {
+> t_->cs_.Enter();
+> t_->refcount_ += 1;
+> }
+> ~EnterExit() {
+> bool d = (0 == (--(t_->refcount_)));
+> t_->cs_.Leave();
+> if (d)
+> delete t_;
+> }
+> };
+>
+> friend class EnterExit;
+>
+> CriticalSection cs_;
+> int refcount_;
+>
+80a108
+> void OnMainThreadDestroyed();
+84c112,118
+< enum State { kInit, kRunning, kComplete, kStopping, kReleasing } state_;
+---
+> enum State {
+> kInit, // Initialized, but not started
+> kRunning, // Started and doing work
+> kReleasing, // Same as running, but to be deleted when work is done
+> kComplete, // Work is done
+> kStopping, // Work is being interrupted
+> } state_;
+diff -r libjingle-0.4.0/talk/base/sigslot.h libjingle/files/talk/base/sigslot.h
+530c530
+< #ifdef _DEBUG
+---
+> #if !defined(NDEBUG)
+676c676
+< #ifdef _DEBUG
+---
+> #if !defined(NDEBUG)
+807c807
+< #ifdef _DEBUG
+---
+> #if !defined(NDEBUG)
+937c937
+< #ifdef _DEBUG
+---
+> #if !defined(NDEBUG)
+1067c1067
+< #ifdef _DEBUG
+---
+> #if !defined(NDEBUG)
+1199c1199
+< #ifdef _DEBUG
+---
+> #if !defined(NDEBUG)
+1331c1331
+< #ifdef _DEBUG
+---
+> #if !defined(NDEBUG)
+1463c1463
+< #ifdef _DEBUG
+---
+> #if !defined(NDEBUG)
+1596c1596
+< #ifdef _DEBUG
+---
+> #if !defined(NDEBUG)
+diff -r libjingle-0.4.0/talk/base/socket.h libjingle/files/talk/base/socket.h
+77a78
+> #undef ETIMEDOUT // remove pthread.h's definition
+diff -r libjingle-0.4.0/talk/base/socketadapters.cc libjingle/files/talk/base/socketadapters.cc
+43a44,45
+> #include <cstring>
+>
+diff -r libjingle-0.4.0/talk/base/socketaddress.cc libjingle/files/talk/base/socketaddress.cc
+52c52
+< #ifdef _DEBUG
+---
+> #if !defined(NDEBUG)
+54c54
+< #else // !_DEBUG
+---
+> #else // defined(NDEBUG)
+56c56
+< #endif // !_DEBUG
+---
+> #endif // !defined(NDEBUG)
+diff -r libjingle-0.4.0/talk/base/socketfactory.h libjingle/files/talk/base/socketfactory.h
+32a33
+> #include "talk/base/ssladapter.h"
+46a48,52
+>
+> // Wraps the given socket in an SSL adapter.
+> virtual SSLAdapter* CreateSSLAdapter(AsyncSocket* socket) {
+> return SSLAdapter::Create(socket);
+> }
+diff -r libjingle-0.4.0/talk/base/socketpool.cc libjingle/files/talk/base/socketpool.cc
+142d141
+< ASSERT(false);
+189d187
+< ASSERT(false);
+diff -r libjingle-0.4.0/talk/base/ssladapter.cc libjingle/files/talk/base/ssladapter.cc
+34c34,35
+< #define SSL_USE_OPENSSL 1
+---
+> // Turn off OpenSSL
+> //#define SSL_USE_OPENSSL 1
+84a86
+> #if SSL_USE_OPENSSL || SSL_USE_SCHANNEL
+85a88,90
+> #else
+> return NULL;
+> #endif
+diff -r libjingle-0.4.0/talk/base/stream.cc libjingle/files/talk/base/stream.cc
+27a28
+> #include <stdio.h>
+diff -r libjingle-0.4.0/talk/base/stringencode.cc libjingle/files/talk/base/stringencode.cc
+34a35
+> #include <stdlib.h>
+525c526
+< #ifdef _DEBUG
+---
+> #if !defined(NDEBUG)
+575c576
+< #endif // _DEBUG
+---
+> #endif // !defined(NDEBUG)
+diff -r libjingle-0.4.0/talk/base/stringutils.cc libjingle/files/talk/base/stringutils.cc
+72c72
+< #if _DEBUG
+---
+> #if !defined(NDEBUG)
+76c76
+< #endif // _DEBUG
+---
+> #endif // !defined(NDEBUG)
+diff -r libjingle-0.4.0/talk/base/stringutils.h libjingle/files/talk/base/stringutils.h
+33a34
+> #include <string.h>
+87a89
+> #if 0
+93a96
+> #endif
+200,208d202
+< size_t sprintfn(CTYPE* buffer, size_t buflen, const CTYPE* format, ...) {
+< va_list args;
+< va_start(args, format);
+< size_t len = vsprintfn(buffer, buflen, format, args);
+< va_end(args);
+< return len;
+< }
+<
+< template<class CTYPE>
+218a213,221
+> template<class CTYPE>
+> size_t sprintfn(CTYPE* buffer, size_t buflen, const CTYPE* format, ...) {
+> va_list args;
+> va_start(args, format);
+> size_t len = vsprintfn(buffer, buflen, format, args);
+> va_end(args);
+> return len;
+> }
+>
+272c275
+< inline static const char* Traits<char>::empty_str() { return ""; }
+---
+> inline static const char* empty_str() { return ""; }
+diff -r libjingle-0.4.0/talk/base/task.cc libjingle/files/talk/base/task.cc
+5c5
+< * Redistribution and use in source and binary forms, with or without
+---
+> * Redistribution and use in source and binary forms, with or without
+8c8
+< * 1. Redistributions of source code must retain the above copyright notice,
+---
+> * 1. Redistributions of source code must retain the above copyright notice,
+13c13
+< * 3. The name of the author may not be used to endorse or promote products
+---
+> * 3. The name of the author may not be used to endorse or promote products
+17c17
+< * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+---
+> * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+19c19
+< * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+---
+> * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+23,24c23,24
+< * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+< * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+---
+> * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+> * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+141c141
+< if (aborted_ || done_)
+---
+> if (done_)
+150c150
+< Wake(); // to self-delete
+---
+> GetRunner()->WakeTasks();
+diff -r libjingle-0.4.0/talk/base/taskrunner.h libjingle/files/talk/base/taskrunner.h
+63a64,68
+> bool HasPendingTimeoutTask() {
+> return next_timeout_task_ != NULL &&
+> next_timeout_task_->TimedOut();
+> }
+>
+diff -r libjingle-0.4.0/talk/base/testclient.cc libjingle/files/talk/base/testclient.cc
+29a30
+> #include <cstring>
+diff -r libjingle-0.4.0/talk/base/thread.cc libjingle/files/talk/base/thread.cc
+100a101,105
+> bool ThreadManager::ThreadActive(Thread *thread) {
+> CritScope cs(&crit_);
+> return(std::find(threads_.begin(), threads_.end(), thread) != threads_.end());
+> }
+>
+103a109
+> stopped_ = false;
+124,125c130,135
+< pthread_create(&thread_, &attr, PreRun, this);
+< started_ = true;
+---
+> CritScope cs(&started_crit_);
+> // Make sure Join() hasn't been called yet.
+> if (stopped_)
+> return;
+> if (pthread_create(&thread_, &attr, PreRun, this) == 0)
+> started_ = true;
+128a139,140
+> CritScope cs(&started_crit_);
+> stopped_ = true;
+131a144
+> started_ = false;
+168a182,185
+> CritScope cs(&started_crit_);
+> // Make sure Join() hasn't been called yet.
+> if (stopped_)
+> return;
+181a199,200
+> CritScope cs(&started_crit_);
+> stopped_ = true;
+191a211,213
+> // Make sure the thread hasn't been deleted.
+> if (!g_thmgr.ThreadActive(thread))
+> return NULL;
+207c229
+< MessageQueue::Stop();
+---
+> MessageQueue::Quit();
+329c351
+< return false;
+---
+> return !IsQuitting();
+diff -r libjingle-0.4.0/talk/base/thread.h libjingle/files/talk/base/thread.h
+57a58
+> bool ThreadActive(Thread *thread);
+134a136
+> CriticalSection started_crit_;
+135a138
+> bool stopped_;
+diff -r libjingle-0.4.0/talk/base/urlencode.cc libjingle/files/talk/base/urlencode.cc
+0a1,2
+> #include <stdlib.h>
+> #include <string.h>
+Only in libjingle-0.4.0/talk/base: win32socketserver.cc
+Only in libjingle-0.4.0/talk/base: win32socketserver.h
+Only in libjingle/files/talk/base: win32window.cc
+diff -r libjingle-0.4.0/talk/base/winping.cc libjingle/files/talk/base/winping.cc
+133c133
+< return sizeof(ICMP_ECHO_REPLY) + max(8UL, data_size);
+---
+> return sizeof(ICMP_ECHO_REPLY) + _max((uint32)(8UL), data_size);
+317c317
+< } // namespace talk_base
+\ No newline at end of file
+---
+> } // namespace talk_base
+Only in libjingle/files/talk/base: winsock_initializer.cc
+Only in libjingle/files/talk/base: winsock_initializer.h
+Only in libjingle-0.4.0/talk: examples
+Only in libjingle-0.4.0/talk: libjingle.sln
+Only in libjingle-0.4.0/talk: libjingle.vcproj
+Only in libjingle-0.4.0/talk: p2p
+Only in libjingle-0.4.0/talk: session
+Only in libjingle-0.4.0/talk: third_party
+Only in libjingle-0.4.0/talk/xmllite: Makefile.in
+diff -r libjingle-0.4.0/talk/xmllite/qname.cc libjingle/files/talk/xmllite/qname.cc
+39c39
+< int result = ns.size() * 101;
+---
+> int result = static_cast<int>(ns.size()) * 101;
+diff -r libjingle-0.4.0/talk/xmllite/qname.h libjingle/files/talk/xmllite/qname.h
+64d63
+< refcount_(1),
+66c65,66
+< localPart_(local) {}
+---
+> localPart_(local),
+> refcount_(1) {}
+diff -r libjingle-0.4.0/talk/xmllite/xmlelement.cc libjingle/files/talk/xmllite/xmlelement.cc
+88c88,89
+< pLastChild_(NULL) {
+---
+> pLastChild_(NULL),
+> cdata_(false) {
+97c98,99
+< pLastChild_(NULL) {
+---
+> pLastChild_(NULL),
+> cdata_(false) {
+125a128
+> cdata_ = elt.cdata_;
+133c136,137
+< pLastChild_(NULL) {
+---
+> pLastChild_(NULL),
+> cdata_(false) {
+393a398,403
+> XmlElement::AddCDATAText(const char * buf, int len) {
+> cdata_ = true;
+> AddParsedText(buf, len);
+> }
+>
+> void
+diff -r libjingle-0.4.0/talk/xmllite/xmlelement.h libjingle/files/talk/xmllite/xmlelement.h
+203a204,206
+> // Note: CDATA is not supported by XMPP, therefore using this function will
+> // generate non-XMPP compatible XML.
+> void AddCDATAText(const char * buf, int len);
+217a221,222
+> bool IsCDATA() const { return cdata_; }
+>
+228a234
+> bool cdata_;
+diff -r libjingle-0.4.0/talk/xmllite/xmlparser.cc libjingle/files/talk/xmllite/xmlparser.cc
+28,29d27
+< #include "talk/xmllite/xmlparser.h"
+<
+35a34
+> #include "talk/xmllite/xmlconstants.h"
+38c37
+< #include "talk/xmllite/xmlconstants.h"
+---
+> #include "talk/xmllite/xmlparser.h"
+119a119,121
+> context_.SetPosition(XML_GetCurrentLineNumber(expat_),
+> XML_GetCurrentColumnNumber(expat_),
+> XML_GetCurrentByteIndex(expat_));
+127a130,132
+> context_.SetPosition(XML_GetCurrentLineNumber(expat_),
+> XML_GetCurrentColumnNumber(expat_),
+> XML_GetCurrentByteIndex(expat_));
+134a140,142
+> context_.SetPosition(XML_GetCurrentLineNumber(expat_),
+> XML_GetCurrentColumnNumber(expat_),
+> XML_GetCurrentByteIndex(expat_));
+168c176,180
+< if (XML_Parse(expat_, data, static_cast<int>(len), isFinal) != XML_STATUS_OK)
+---
+> if (XML_Parse(expat_, data, static_cast<int>(len), isFinal) !=
+> XML_STATUS_OK) {
+> context_.SetPosition(XML_GetCurrentLineNumber(expat_),
+> XML_GetCurrentColumnNumber(expat_),
+> XML_GetCurrentByteIndex(expat_));
+169a182
+> }
+193c206,209
+< raised_(XML_ERROR_NONE) {
+---
+> raised_(XML_ERROR_NONE),
+> line_number_(0),
+> column_number_(0),
+> byte_index_(0) {
+247c263,285
+< XmlParser::ParseContext::~ParseContext() {
+---
+> void
+> XmlParser::ParseContext::SetPosition(XML_Size line, XML_Size column,
+> XML_Index byte_index) {
+> line_number_ = line;
+> column_number_ = column;
+> byte_index_ = byte_index;
+> }
+>
+> void
+> XmlParser::ParseContext::GetPosition(unsigned long * line,
+> unsigned long * column,
+> unsigned long * byte_index) {
+> if (line != NULL) {
+> *line = static_cast<unsigned long>(line_number_);
+> }
+>
+> if (column != NULL) {
+> *column = static_cast<unsigned long>(column_number_);
+> }
+>
+> if (byte_index != NULL) {
+> *byte_index = static_cast<unsigned long>(byte_index_);
+> }
+249a288
+> XmlParser::ParseContext::~ParseContext() {
+251a291
+> }
+diff -r libjingle-0.4.0/talk/xmllite/xmlparser.h libjingle/files/talk/xmllite/xmlparser.h
+48a49,50
+> virtual void GetPosition(unsigned long * line, unsigned long * column,
+> unsigned long * byte_index) = 0;
+85a88,89
+> virtual void GetPosition(unsigned long * line, unsigned long * column,
+> unsigned long * byte_index);
+91a96
+> void SetPosition(XML_Size line, XML_Size column, XML_Index byte_index);
+96a102,104
+> XML_Size line_number_;
+> XML_Size column_number_;
+> XML_Index byte_index_;
+diff -r libjingle-0.4.0/talk/xmllite/xmlprinter.cc libjingle/files/talk/xmllite/xmlprinter.cc
+46a47
+> void PrintCDATAText(const std::string & text);
+134,136c135,141
+< if (pchild->IsText())
+< PrintBodyText(pchild->AsText()->Text());
+< else
+---
+> if (pchild->IsText()) {
+> if (element->IsCDATA()) {
+> PrintCDATAText(pchild->AsText()->Text());
+> } else {
+> PrintBodyText(pchild->AsText()->Text());
+> }
+> } else
+188a194,197
+> void
+> XmlPrinterImpl::PrintCDATAText(const std::string & text) {
+> *pout_ << "<![CDATA[" << text << "]]>";
+> }
+Only in libjingle-0.4.0/talk/xmpp: Makefile.in
+Only in libjingle-0.4.0/talk/xmpp: constants.cc
+Only in libjingle-0.4.0/talk/xmpp: constants.h
+diff -r libjingle-0.4.0/talk/xmpp/jid.cc libjingle/files/talk/xmpp/jid.cc
+33c33
+< #include "talk/xmpp/constants.h"
+---
+> #include "talk/xmpp/xmppconstants.h"
+diff -r libjingle-0.4.0/talk/xmpp/plainsaslhandler.h libjingle/files/talk/xmpp/plainsaslhandler.h
+31d30
+< #include "talk/xmpp/saslhandler.h"
+32a32,34
+> #include <string>
+>
+> #include "talk/xmpp/saslhandler.h"
+68a71,76
+>
+> virtual bool GetTlsServerInfo(const talk_base::SocketAddress& server,
+> std::string* tls_server_hostname,
+> std::string* tls_server_domain) {
+> return false;
+> }
+diff -r libjingle-0.4.0/talk/xmpp/prexmppauth.h libjingle/files/talk/xmpp/prexmppauth.h
+33d32
+< #include "talk/xmpp/saslhandler.h"
+64c63
+< class PreXmppAuth : public SaslHandler {
+---
+> class PreXmppAuth {
+diff -r libjingle-0.4.0/talk/xmpp/saslcookiemechanism.h libjingle/files/talk/xmpp/saslcookiemechanism.h
+33c33
+< #include "talk/xmpp/constants.h"
+---
+> #include "talk/xmpp/xmppconstants.h"
+40,41c40,55
+< SaslCookieMechanism(const std::string & mechanism, const std::string & username, const std::string & cookie) :
+< mechanism_(mechanism), username_(username), cookie_(cookie) {}
+---
+> SaslCookieMechanism(const std::string & mechanism,
+> const std::string & username,
+> const std::string & cookie,
+> const std::string & token_service)
+> : mechanism_(mechanism),
+> username_(username),
+> cookie_(cookie),
+> token_service_(token_service) {}
+>
+> SaslCookieMechanism(const std::string & mechanism,
+> const std::string & username,
+> const std::string & cookie)
+> : mechanism_(mechanism),
+> username_(username),
+> cookie_(cookie),
+> token_service_("") {}
+48a63,67
+> if (!token_service_.empty()) {
+> el->AddAttr(
+> QName(true, "http://www.google.com/talk/protocol/auth", "service"),
+> token_service_);
+> }
+62a82
+> std::string token_service_;
+diff -r libjingle-0.4.0/talk/xmpp/saslhandler.h libjingle/files/talk/xmpp/saslhandler.h
+31a32,34
+> #include <vector>
+>
+> #include "talk/base/socketaddress.h"
+53a57,63
+>
+> // Fills in the tls server hostname/domain to use for the given
+> // server (and returns true). Return false if you want the defaults
+> // to be used.
+> virtual bool GetTlsServerInfo(const talk_base::SocketAddress& server,
+> std::string* tls_server_hostname,
+> std::string* tls_server_domain) = 0;
+diff -r libjingle-0.4.0/talk/xmpp/saslmechanism.cc libjingle/files/talk/xmpp/saslmechanism.cc
+30c30
+< #include "talk/xmpp/constants.h"
+---
+> #include "talk/xmpp/xmppconstants.h"
+diff -r libjingle-0.4.0/talk/xmpp/xmppclient.cc libjingle/files/talk/xmpp/xmppclient.cc
+30c30
+< #include "talk/xmpp/constants.h"
+---
+> #include "talk/xmpp/xmppconstants.h"
+32a33
+> #include "talk/xmpp/saslhandler.h"
+68a70
+> scoped_ptr<SaslHandler> sasl_handler_;
+93c95,99
+< XmppClient::Connect(const XmppClientSettings & settings, const std::string & lang, AsyncSocket * socket, PreXmppAuth * pre_auth) {
+---
+> XmppClient::Connect(const XmppClientSettings & settings,
+> const std::string & lang,
+> AsyncSocket * socket,
+> PreXmppAuth * pre_auth,
+> SaslHandler * sasl_handler) {
+113,125c119,125
+< //
+< // The talk.google.com server expects you to use "gmail.com" in the
+< // stream, and expects the domain certificate to be "gmail.com" as well.
+< // For all other servers, we leave the strings empty, which causes
+< // the jid's domain to be used. "foo@example.com" -> stream to="example.com"
+< // tls certificate for "example.com"
+< //
+< // This is only true when using Gaia auth, so let's say if there's no preauth,
+< // we should use the actual server name
+< if ((settings.server().IPAsString() == buzz::STR_TALK_GOOGLE_COM ||
+< settings.server().IPAsString() == buzz::STR_TALKX_L_GOOGLE_COM) &&
+< pre_auth != NULL) {
+< d_->engine_->SetTlsServer(buzz::STR_GMAIL_COM, buzz::STR_GMAIL_COM);
+---
+> if (sasl_handler) {
+> std::string tls_server_hostname, tls_server_domain;
+> if (sasl_handler->GetTlsServerInfo(settings.server(),
+> &tls_server_hostname,
+> &tls_server_domain)) {
+> d_->engine_->SetTlsServer(tls_server_hostname, tls_server_domain);
+> }
+139a140
+> d_->sasl_handler_.reset(sasl_handler);
+200a202,209
+> if (d_->sasl_handler_.get()) {
+> d_->engine_->SetSaslHandler(d_->sasl_handler_.release());
+> }
+> else {
+> d_->engine_->SetSaslHandler(new PlainSaslHandler(
+> d_->engine_->GetUser(), d_->pass_, d_->allow_plain_));
+> }
+>
+209,210d217
+< d_->engine_->SetSaslHandler(new PlainSaslHandler(
+< d_->engine_->GetUser(), d_->pass_, d_->allow_plain_));
+253,254d259
+< // transfer ownership of pre_auth_ to engine
+< d_->engine_->SetSaslHandler(d_->pre_auth_.release());
+261a267,268
+> d_->pre_engine_error_ = XmppEngine::ERROR_SOCKET;
+> d_->pre_engine_subcode_ = d_->socket_->GetError();
+347c354
+< //#ifdef _DEBUG
+---
+> //#if !defined(NDEBUG)
+375c382
+< //#ifdef _DEBUG
+---
+> //#if !defined(NDEBUG)
+diff -r libjingle-0.4.0/talk/xmpp/xmppclient.h libjingle/files/talk/xmpp/xmppclient.h
+42a43
+> class SaslHandler;
+80c81,82
+< PreXmppAuth * preauth);
+---
+> PreXmppAuth * preauth,
+> SaslHandler * sasl_handler);
+141c143
+< std::string XmppClient::GetStateName(int state) const {
+---
+> std::string GetStateName(int state) const {
+diff -r libjingle-0.4.0/talk/xmpp/xmppclientsettings.h libjingle/files/talk/xmpp/xmppclientsettings.h
+31d30
+< #include "talk/p2p/base/port.h"
+32a32,45
+> #include "talk/base/proxyinfo.h"
+>
+> namespace cricket {
+>
+> // This enum was taken from talk/p2p/base/port.h, which is the only
+> // thing we actually need from the p2p directory.
+> enum ProtocolType {
+> PROTO_UDP,
+> PROTO_TCP,
+> PROTO_SSLTCP,
+> PROTO_LAST = PROTO_SSLTCP
+> };
+>
+> } // namespace cricket
+59a73,75
+> void set_token_service(const std::string & token_service) {
+> token_service_ = token_service;
+> }
+75a92
+> const std::string & token_service() const { return token_service_; }
+93a111
+> std::string token_service_;
+Only in libjingle/files/talk/xmpp: xmppconstants.cc
+Only in libjingle/files/talk/xmpp: xmppconstants.h
+diff -r libjingle-0.4.0/talk/xmpp/xmppengineimpl.cc libjingle/files/talk/xmpp/xmppengineimpl.cc
+37c37
+< #include "talk/xmpp/constants.h"
+---
+> #include "talk/xmpp/xmppconstants.h"
+diff -r libjingle-0.4.0/talk/xmpp/xmppengineimpl_iq.cc libjingle/files/talk/xmpp/xmppengineimpl_iq.cc
+32c32
+< #include "talk/xmpp/constants.h"
+---
+> #include "talk/xmpp/xmppconstants.h"
+diff -r libjingle-0.4.0/talk/xmpp/xmpplogintask.cc libjingle/files/talk/xmpp/xmpplogintask.cc
+34c34
+< #include "talk/xmpp/constants.h"
+---
+> #include "talk/xmpp/xmppconstants.h"
+44c44
+< #ifdef _DEBUG
+---
+> #if !defined(NDEBUG)
+59c59
+< #endif // _DEBUG
+---
+> #endif // !defined(NDEBUG)
+103c103
+< #if _DEBUG
+---
+> #if !defined(NDEBUG)
+106c106
+< #endif // _DEBUG
+---
+> #endif // !defined(NDEBUG)
+218a219,221
+> auth->SetAttr(QN_GOOGLE_ALLOW_GENERATED_JID_XMPP_LOGIN, "true");
+> auth->SetAttr(QN_GOOGLE_AUTH_CLIENT_USES_FULL_BIND_RESULT, "true");
+>
+diff -r libjingle-0.4.0/talk/xmpp/xmpplogintask.h libjingle/files/talk/xmpp/xmpplogintask.h
+93c93
+< #ifdef _DEBUG
+---
+> #if !defined(NDEBUG)
+95c95
+< #endif // _DEBUG
+---
+> #endif // !defined(NDEBUG)
+diff -r libjingle-0.4.0/talk/xmpp/xmppstanzaparser.cc libjingle/files/talk/xmpp/xmppstanzaparser.cc
+32c32
+< #include "talk/xmpp/constants.h"
+---
+> #include "talk/xmpp/xmppconstants.h"
+diff -r libjingle-0.4.0/talk/xmpp/xmpptask.cc libjingle/files/talk/xmpp/xmpptask.cc
+31c31
+< #include "talk/xmpp/constants.h"
+---
+> #include "talk/xmpp/xmppconstants.h"
+40c40
+< #ifdef _DEBUG
+---
+> #if !defined(NDEBUG)
+88c88
+< #ifdef _DEBUG
+---
+> #if !defined(NDEBUG)
+174c174
+< }
+\ No newline at end of file
+---
+> }
+diff -r libjingle-0.4.0/talk/xmpp/xmpptask.h libjingle/files/talk/xmpp/xmpptask.h
+80c80
+< #ifdef _DEBUG
+---
+> #if !defined(NDEBUG)
+106,107c106,107
+< XmlElement *MakeIqResult(const XmlElement* query);
+< XmlElement *MakeIq(const std::string& type,
+---
+> static XmlElement *MakeIqResult(const XmlElement* query);
+> static XmlElement *MakeIq(const std::string& type,
+123c123
+< #ifdef _DEBUG
+---
+> #if !defined(NDEBUG)
+diff -r libjingle-0.4.0/talk/base/common.cc libjingle/files/talk/base/common.cc
+62c62
+< } // namespace talk_base
+\ No newline at end of file
+---
+> } // namespace talk_base
+diff -r libjingle-0.4.0/talk/base/httpbase.cc libjingle/files/talk/base/httpbase.cc
+154c154
+< if (sscanf(value, "%d", &data_size_) != 1) {
+---
+> if (sscanf(value, "%zu", &data_size_) != 1) {
+diff -r libjingle-0.4.0/talk/base/httpcommon.cc libjingle/files/talk/base/httpcommon.cc
+339c339
+< &tval.tm_hour, &tval.tm_min, &tval.tm_sec, &zone)) {
+---
+> &tval.tm_hour, &tval.tm_min, &tval.tm_sec, zone)) {
+472c472
+< uint32 vmajor, vminor;
+---
+> unsigned long vmajor, vminor;
+549,550c549,550
+< uint32 vmajor, vminor;
+< if ((sscanf(line, "HTTP/%lu.%lu %lu%n", &vmajor, &vminor, &scode, &pos) != 3)
+---
+> unsigned long vmajor, vminor;
+> if ((sscanf(line, "HTTP/%lu.%lu %lu%zu", &vmajor, &vminor, &scode, &pos) != 3)
+693c693
+< sprintf(buffer, "%d", time(0));
+---
+> sprintf(buffer, "%ld", time(0));
+diff -r libjingle-0.4.0/talk/base/httpcommon.h libjingle/files/talk/base/httpcommon.h
+329c329
+< uint32 scode;
+---
+> unsigned long scode;
+diff -r libjingle-0.4.0/talk/base/diskcache.cc libjingle/files/talk/base/diskcache.cc
+300c300
+< if (1 != sscanf(pathname.extension().c_str(), ".%u", index))
+---
+> if (1 != sscanf(pathname.extension().c_str(), ".%zu", index))
+diff -r libjingle-0.4.0/talk/base/logging.cc libjingle/files/talk/base/logging.cc
+69c69
+< snprintf(buffer, sizeof(buffer), "0x%08lx", err);
+---
+> snprintf(buffer, sizeof(buffer), "0x%08x", err);
+diff -r libjingle-0.4.0/talk/base/socketadapters.cc libjingle/files/talk/base/socketadapters.cc
+360,361c360,361
+< uint32 code;
+< if (sscanf(data, "HTTP/%*lu.%*lu %lu", &code) != 1) {
+---
+> unsigned long code;
+> if (sscanf(data, "HTTP/%*u.%*u %lu", &code) != 1) {