+ if ( !url_proxy )
+ {
+ if ( ms_proxyDefault )
+ {
+ ms_proxyDefault->Close();
+ delete ms_proxyDefault;
+ ms_proxyDefault = NULL;
+ }
+ }
+ else
+ {
+ wxString tmp_str = url_proxy;
+ int pos = tmp_str.Find(wxT(':'));
+ if (pos == -1)
+ return;
+
+ wxString hostname = tmp_str(0, pos),
+ port = tmp_str(pos+1, tmp_str.Length()-pos);
+ wxIPV4address addr;
+
+ if (!addr.Hostname(hostname))
+ return;
+ if (!addr.Service(port))
+ return;
+
+ if (ms_proxyDefault)
+ // Finally, when all is right, we connect the new proxy.
+ ms_proxyDefault->Close();
+ else
+ ms_proxyDefault = new wxHTTP();
+ ms_proxyDefault->Connect(addr, TRUE); // Watcom needs the 2nd arg for some reason
+ }
+}
+
+void wxURL::SetProxy(const wxString& url_proxy)
+{
+ if ( !url_proxy )
+ {
+ if ( m_proxy && m_proxy != ms_proxyDefault )
+ {
+ m_proxy->Close();
+ delete m_proxy;
+ }
+
+ m_useProxy = FALSE;
+ }
+ else
+ {
+ wxString tmp_str;
+ wxString hostname, port;
+ int pos;
+ wxIPV4address addr;
+
+ tmp_str = url_proxy;
+ pos = tmp_str.Find(wxT(':'));
+ // This is an invalid proxy name.
+ if (pos == -1)
+ return;
+
+ hostname = tmp_str(0, pos);
+ port = tmp_str(pos, tmp_str.Length()-pos);
+
+ addr.Hostname(hostname);
+ addr.Service(port);
+
+ // Finally, create the whole stuff.
+ if (m_proxy && m_proxy != ms_proxyDefault)
+ delete m_proxy;
+ m_proxy = new wxHTTP();
+ m_proxy->Connect(addr, TRUE); // Watcom needs the 2nd arg for some reason
+
+ CleanData();
+ // Reparse url.
+ m_useProxy = TRUE;
+ ParseURL();
+ }
+}
+#endif // wxUSE_SOCKETS
+
+wxString wxURL::ConvertToValidURI(const wxString& uri, const wxChar* delims)
+{
+ wxString out_str;
+ wxString hexa_code;
+ size_t i;
+
+ for (i = 0; i < uri.Len(); i++)
+ {
+ wxChar c = uri.GetChar(i);