m_servname = serv;
m_cinfo = info;
m_needhost = need_host1;
- next = wxURL::g_protocols;
- wxURL::g_protocols = this;
+ next = wxURL::ms_protocols;
+ wxURL::ms_protocols = this;
}
/////////////////////////////////////////////////////////////////
return TRUE;
}
+// ----------------------------------------------------------------------------
+// Read a line from socket
+// ----------------------------------------------------------------------------
+
+// TODO ReadLine() should use buffers private to wxProtocol for efficiency!
+
+// static
+wxProtocolError wxProtocol::ReadLine(wxSocketBase *socket, wxString& result)
+{
+ result.Empty();
+ char ch, chLast = '\0';
+ while ( !socket->Read(&ch, sizeof(ch)).Error() )
+ {
+ switch ( ch )
+ {
+ case '\r':
+ // remember it, if the following is '\n', we're done
+ chLast = '\r';
+ break;
+
+ case '\n':
+ // only ends line if the previous character was '\r'
+ if ( chLast == '\r' )
+ {
+ // EOL found
+ return wxPROTO_NOERR;
+ }
+ //else: fall through
+
+ default:
+ // normal char
+ if ( chLast )
+ {
+ result += chLast;
+ chLast = '\0';
+ }
+
+ result += ch;
+ }
+ }
+
+ return wxPROTO_NETERR;
+}
+
+wxProtocolError wxProtocol::ReadLine(wxString& result)
+{
+ return ReadLine(this, result);
+}
+
+// old function which only chops '\n' and not '\r\n'
wxProtocolError GetLine(wxSocketBase *sock, wxString& result) {
#define PROTO_BSIZE 2048
size_t avail, size;
#undef PROTO_BSIZE
}
#endif
-
-// ----------------------------------------------------------------------
-// Module
-// ----------------------------------------------------------------------
-
-class wxProtocolModule: public wxModule {
- DECLARE_DYNAMIC_CLASS(wxProtocolModule)
-public:
- wxProtocolModule() {}
- bool OnInit();
- void OnExit();
-};
-
-IMPLEMENT_DYNAMIC_CLASS(wxProtocolModule, wxModule)
-
-bool wxProtocolModule::OnInit()
-{
-#if wxUSE_SOCKETS
- char *env_http_prox;
-
- wxURL::g_proxy = NULL;
- // Initialize the proxy when HTTP_PROXY is defined
- env_http_prox = getenv("HTTP_PROXY");
- if (env_http_prox)
- wxURL::SetDefaultProxy(env_http_prox);
-#endif
-
- return TRUE;
-}
-
-void wxProtocolModule::OnExit()
-{
-#if wxUSE_SOCKETS
- if (wxURL::g_proxy)
- delete wxURL::g_proxy;
- wxURL::g_proxy = NULL;
-#endif
-}
-