blob: 474f383bd9dd4ceca2849171dcf87ec0f89a6d53 (
plain)
| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
 | /*
** Copyright 2003, Double Precision Inc.
**
** See COPYING for distribution information.
*/
#include "nntplogout.H"
mail::nntp::LogoutTask::LogoutTask(callback *callbackArg, nntp &myserverArg,
				   bool inactivityTimeoutArg)
	: Task(callbackArg, myserverArg),
	  inactivityTimeout(inactivityTimeoutArg),
	  goodDisconnect(false)
{
}
mail::nntp::LogoutTask::~LogoutTask()
{
}
void mail::nntp::LogoutTask::installedTask()
{
	if (myserver->getfd() < 0)
	{
		success("Ok.");
		return;
	}
	myserver->socketWrite("QUIT\r\n");
}
void mail::nntp::LogoutTask::done()
{
	if (inactivityTimeout)
	{
		Task::done();
		return;
	}
	callback::disconnect *d=myserver->disconnectCallback;
	myserver->disconnectCallback=NULL;
	Task::done();
	if (d)
		d->disconnected("");
}
void mail::nntp::LogoutTask::serverResponse(const char *msg)
{
	goodDisconnect=true;
	if (!myserver->socketEndEncryption())
	{
		myserver->socketDisconnect();
		success("Ok");
	}
}
void mail::nntp::LogoutTask::disconnected(const char *reason)
{
	if (goodDisconnect)
		reason="";
	if (inactivityTimeout)
	{
		success("Ok.");
		return;
	}
	callback::disconnect *d=myserver->disconnectCallback;
	myserver->disconnectCallback=NULL;
	success("Ok.");
	if (d)
		d->disconnected(reason);
}
void mail::nntp::LogoutTask::emptyQueue()
{
}
 |