wxDialUpManagerImpl::wxDialUpManagerImpl()
{
- m_IsOnline = -2; // -1 or -2, unknown
+ /* The isOnline flag can have the following values internally:
+ 0 : not connected
+ 1 : connected
+ -1 : unknown/undefined status
+ */
+ m_IsOnline = -1;
m_DialProcess = NULL;
m_timer = NULL;
m_CanUseIfconfig = -1; // unknown
{
if(m_IsOnline == 1)
return FALSE;
- m_IsOnline = -1;
m_ISPname = isp;
wxString cmd;
if(m_ConnectCommand.Find(wxT("%s")))
if ( async )
{
m_DialProcess = new wxDialProcess(this);
- m_DialPId = wxExecute(cmd, FALSE, m_DialProcess);
+ m_DialPId = (int)wxExecute(cmd, FALSE, m_DialProcess);
if(m_DialPId == 0)
{
delete m_DialProcess;
wxLogError(_("Already dialling ISP."));
return FALSE;
}
- m_IsOnline = -1;
wxString cmd;
if(m_HangUpCommand.Find(wxT("%s")))
cmd.Printf(m_HangUpCommand,m_ISPname.c_str(), m_DialProcess);
void
wxDialUpManagerImpl::SetWellKnownHost(const wxString& hostname, int portno)
{
+ if(hostname.Length() == 0)
+ {
+ m_BeaconHost = WXDIALUP_MANAGER_DEFAULT_BEACONHOST;
+ m_BeaconPort = 80;
+ return;
+ }
+
/// does hostname contain a port number?
wxString port = hostname.After(wxT(':'));
if(port.Length())
( /* non-const */ (wxDialUpManagerImpl *)this)->CheckStatusInternal();
// now send the events as appropriate:
- if(m_IsOnline != oldIsOnline && m_IsOnline != -1 && oldIsOnline != -2) // -2: first time!
+ if(m_IsOnline != oldIsOnline // it changed
+ && ( m_IsOnline == 1 // and it is a defined status
+ || m_IsOnline == 0)
+ // only send events for well defined transitions
+ && ( oldIsOnline == 1 || oldIsOnline == 0)
+ )
{
wxDialUpEvent event(m_IsOnline, ! fromAsync);
(void)wxTheApp->ProcessEvent(event);
cmd << " -a";
#elif defined(__LINUX__) || defined (__FREEBSD__) || defined(__SGI__)
// nothing to be added to ifconfig
+#elif defined(__HPUX__)
+ // VZ: a wild guess (but without it, ifconfig fails completely)
+ cmd << _T(" ppp0");
#else
# pragma warning "No ifconfig information for this OS."
m_CanUseIfconfig = 0;
|| strstr(output,"pl"); // plip
#elif defined(__SGI__) // IRIX
rc = strstr(output, "ppp"); // PPP
+#elif defined(__HPUX__)
+ // if could run ifconfig on interface, then it exists
+ rc = TRUE;
#endif
}
file.Close();
m_CanUseIfconfig = 0; // donĀ“t try again
(void) wxRemoveFile(tmpfile);
}
- return rc;
+
+ return rc;
}
int
// nothing to add to ping command
#elif defined(__LINUX__)
cmd << "-c 1 "; // only ping once
+#elif defined(__HPUX__)
+ cmd << "64 1 "; // only ping once (need also specify the packet size)
#else
# pragma warning "No Ping information for this OS."
m_CanUsePing = 0;