summaryrefslogtreecommitdiffstats
path: root/src/Net/ServerConnection.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/Net/ServerConnection.h')
-rw-r--r--src/Net/ServerConnection.h18
1 files changed, 6 insertions, 12 deletions
diff --git a/src/Net/ServerConnection.h b/src/Net/ServerConnection.h
index 0fd5f0b..ff88ad3 100644
--- a/src/Net/ServerConnection.h
+++ b/src/Net/ServerConnection.h
@@ -27,38 +27,32 @@
namespace Mad {
namespace Net {
+class Listener;
+
class ServerConnection : public Connection {
+ friend class Listener;
+
private:
IPAddress *peer;
bool daemon;
gnutls_anon_server_credentials_t anoncred;
- gnutls_dh_params_t dh_params;
void connectionHeaderReceiveHandler(const void *data, unsigned long length);
protected:
+ ServerConnection(int sock0, const IPAddress &address, gnutls_dh_params_t dh_params);
+
virtual void connectionHeader() {
rawReceive(sizeof(ConnectionHeader), sigc::mem_fun(this, &ServerConnection::connectionHeaderReceiveHandler));
}
public:
- ServerConnection() : daemon(false) {
- gnutls_anon_allocate_server_credentials(&anoncred);
-
- gnutls_dh_params_init(&dh_params);
- gnutls_dh_params_generate2(dh_params, 768);
- gnutls_anon_set_server_dh_params(anoncred, dh_params);
- }
-
virtual ~ServerConnection() {
- gnutls_dh_params_deinit(dh_params);
gnutls_anon_free_server_credentials(anoncred);
}
- void listen(const IPAddress &address) throw(ConnectionException);
-
bool isDaemonConnection() const {return daemon;}
};