Top | ![]() |
![]() |
![]() |
![]() |
gdouble | connection-timeout | Read / Write / Construct |
gdouble | end-of-message-timeout | Read / Write / Construct |
MilterMessageResult * | message-result | Read / Write |
gchar * | name | Read / Write |
gdouble | reading-timeout | Read / Write / Construct |
MilterServerContextState | state | Read / Write |
MilterStatus | status | Read / Write |
gdouble | writing-timeout | Read / Write / Construct |
void | connection-timeout | Run Last |
void | end-of-message-timeout | Run Last |
void | message-processed | Run Last |
void | reading-timeout | Run Last |
void | ready | Run Last |
void | state-transited | Run Last |
gboolean | stop-on-body | Run Last |
gboolean | stop-on-connect | Run Last |
gboolean | stop-on-data | Run Last |
gboolean | stop-on-end-of-header | Run Last |
gboolean | stop-on-end-of-message | Run Last |
gboolean | stop-on-envelope-from | Run Last |
gboolean | stop-on-envelope-recipient | Run Last |
gboolean | stop-on-header | Run Last |
gboolean | stop-on-helo | Run Last |
void | stopped | Run Last |
void | writing-timeout | Run Last |
GObject ╰── MilterAgent ╰── MilterProtocolAgent ╰── MilterServerContext ╰── MilterManagerChild
MilterServerContext
は1つのサーバ側のmilterプロトコルセッションを処理します。これは各milterプロトコルセッション毎にMilterServerContext
インスタンスが生成されるということです。
MilterServerContext *
milter_server_context_new (void
);
新しいコンテキストオブジェクトを生成します。
void milter_server_context_set_connection_timeout (MilterServerContext *context
,gdouble timeout
);
Sets the timeout in seconds on connection. If context
doesn't connects to client in timeout
seconds, “timeout” signal is emitted.
context |
||
timeout |
the connection timeout in seconds. (default is |
void milter_server_context_set_writing_timeout (MilterServerContext *context
,gdouble timeout
);
Sets the timeout in seconds on writing. If context
doesn't write to client socket in timeout
seconds, “timeout” signal is emitted.
context |
||
timeout |
the writing timeout in seconds. (default is |
void milter_server_context_set_reading_timeout (MilterServerContext *context
,gdouble timeout
);
Sets the timeout in seconds on reading. If context
doesn't receive response from client socket in timeout
seconds, “timeout” signal is emitted.
context |
||
timeout |
the reading timeout in seconds. (default is |
void milter_server_context_set_end_of_message_timeout (MilterServerContext *context
,gdouble timeout
);
Sets the timeout in seconds on end-of-message. If context
doesn't receive response for end-of-message from client socket in timeout
seconds, “timeout” signal is emitted.
context |
||
timeout |
the timeout in seconds on end-of-message. (default is |
void milter_server_context_set_all_timeouts (MilterServerContext *context
,gdouble timeout
);
Sets the timeout in seconds on connection, writing, reading and end-of-message at once.
See the comments of the fllowing functions about each timeout:
milter_server_context_set_connection_timeout()
milter_server_context_set_writing_timeout()
milter_server_context_set_reading_timeout()
milter_server_context_set_end_of_message_timeout()
Since: 2.1.0
gboolean milter_server_context_set_connection_spec (MilterServerContext *context
,const gchar *spec
,GError **error
);
Sets a connection specification of client. If spec
is invalid format and error
is not NULL
, error detail is stored into error
.
gboolean milter_server_context_establish_connection (MilterServerContext *context
,GError **error
);
Establishes a connection to client. If establishing is failed and error
is not NULL
, error detail is stored into error
.
MilterStatus
milter_server_context_get_status (MilterServerContext *context
);
現在の状態を取得します。
void milter_server_context_set_status (MilterServerContext *context
,MilterStatus status
);
Sets the current status.
MilterServerContextState
milter_server_context_get_state (MilterServerContext *context
);
現在の状態を取得します。
void milter_server_context_set_state (MilterServerContext *context
,MilterServerContextState state
);
現在の状態を設定します。
MilterServerContextState
milter_server_context_get_last_state (MilterServerContext *context
);
Gets the last state. It's one of start, negotiate, connect, helo, envelope-from, envelope-recipient, data, unknown, header, end-of-header, body and end-of-message.
gboolean
milter_server_context_is_processing (MilterServerContext *context
);
応答を待っているかどうかを取得します。
gboolean milter_server_context_negotiate (MilterServerContext *context
,MilterOption *option
);
クライアントとネゴシエーションします。
gboolean milter_server_context_connect (MilterServerContext *context
,const gchar *host_name
,struct sockaddr *address
,socklen_t address_length
);
接続されたSMTPクライアントの情報を送信します。
gboolean milter_server_context_helo (MilterServerContext *context
,const gchar *fqdn
);
HELOに渡されたFQDNを送信します。
gboolean milter_server_context_envelope_from (MilterServerContext *context
,const gchar *from
);
MAIL FROM時に渡されたパラメタを送信します。
gboolean milter_server_context_envelope_recipient (MilterServerContext *context
,const gchar *recipient
);
RCPT TO時に渡されたパラメタを送信します。
gboolean
milter_server_context_data (MilterServerContext *context
);
DATAコマンドを受信したことを通知します。
gboolean milter_server_context_unknown (MilterServerContext *context
,const gchar *command
);
受信した未知のSMTPコマンドを送信します。
gboolean milter_server_context_header (MilterServerContext *context
,const gchar *name
,const gchar *value
);
ヘッダを送信します。
gboolean
milter_server_context_end_of_header (MilterServerContext *context
);
すべてのヘッダが送信されたことを通知します。
gboolean milter_server_context_body (MilterServerContext *context
,const gchar *chunk
,gsize size
);
本文の1かたまりを送信します。
gboolean milter_server_context_end_of_message (MilterServerContext *context
,const gchar *chunk
,gsize size
);
すべての本文のかたまりを送信したことを通知します。未送信の最後の本文のかたまりも一緒に送信することができます。
gboolean
milter_server_context_quit (MilterServerContext *context
);
現在の接続を終了します。
gboolean
milter_server_context_abort (MilterServerContext *context
);
現在の接続を中止します。
void milter_server_context_set_option (MilterServerContext *context
,MilterOption *option
);
Set negotiate option.
MilterOption *
milter_server_context_get_option (MilterServerContext *context
);
Get negotiate option.
gboolean milter_server_context_is_enable_step (MilterServerContext *context
,MilterStepFlags step
);
Gets whether step
flag is enabled in the context
's option.
gboolean
milter_server_context_get_skip_body (MilterServerContext *context
);
context
が本文のかたまりを送っている間にスキップ応答を受け取ったかどうかを取得します。
const gchar *
milter_server_context_get_name (MilterServerContext *context
);
Gets the name of context
.
void milter_server_context_set_name (MilterServerContext *context
,const gchar *name
);
Sets the name of context
.
gdouble
milter_server_context_get_elapsed (MilterServerContext *context
);
Gets the elapsed time.
gboolean
milter_server_context_is_negotiated (MilterServerContext *context
);
Gets whether negotiation is succeeded.
gboolean
milter_server_context_is_processing_message
(MilterServerContext *context
);
Gets whether the context is processing message.
void milter_server_context_set_processing_message (MilterServerContext *context
,gboolean processing_message
);
Sets whether the context is processing message.
gboolean
milter_server_context_is_quitted (MilterServerContext *context
);
Gets whether the context is quitted.
void milter_server_context_set_quitted (MilterServerContext *context
,gboolean quitted
);
Sets whether the context is quitted.
void
milter_server_context_reset_message_related_data
(MilterServerContext *context
);
Resets message related data in the context. It should be called before each 2nd or later messages in the same milter session. There are no bad effects if it is called before 1st message.
MilterMessageResult *
milter_server_context_get_message_result
(MilterServerContext *context
);
Gets the message result of context
.
void milter_server_context_set_message_result (MilterServerContext *context
,MilterMessageResult *result
);
Sets the message result of context
.
gboolean milter_server_context_need_reply (MilterServerContext *context
,MilterServerContextState state
);
Gets whether the context needs to reply on state
.
gboolean
milter_server_context_has_accepted_recipient
(MilterServerContext *context
);
Returns TRUE
if the context has one or more accepted recipients. If the context doesn't know about recipients, it always returns FALSE
.
#define MILTER_SERVER_CONTEXT_ERROR (milter_server_context_error_quark())
MilterServerContextのエラー用のGErrorクォークを取得するために使われます。
#define MILTER_SERVER_CONTEXT_DEFAULT_CONNECTION_TIMEOUT 300
The default connection timeout in seconds.
#define MILTER_SERVER_CONTEXT_DEFAULT_WRITING_TIMEOUT 10
The default writing timeout in seconds.
#define MILTER_SERVER_CONTEXT_DEFAULT_READING_TIMEOUT 10
The default reading timeout in seconds.
#define MILTER_SERVER_CONTEXT_DEFAULT_END_OF_MESSAGE_TIMEOUT 300
The default end-of-message response timeout in seconds.
MilterServerContext
の関数呼び出し中に発生するエラーを識別します。
接続が失敗したことを示します。 |
||
接続指定が設定されていないことを示します。 |
||
現在の |
||
前の操作の結果を受け取る前に新しい操作が要求されたことを示します。 |
||
milterプロトコルデータの読み書き時に発生した入出力エラーを示します。 |
||
未サポートの新しいバージョンが要求されたことを示します。 |
MilterServerContext
の状態を識別します。
“connection-timeout”
property“connection-timeout” gdouble
The timeout seconds for connecting to a filter.
Owner: MilterServerContext
Flags: Read / Write / Construct
Allowed values: >= 0
Default value: 300
“end-of-message-timeout”
property“end-of-message-timeout” gdouble
The timeout seconds between sending end-of-message to a filter and waiting for its reply.
Owner: MilterServerContext
Flags: Read / Write / Construct
Allowed values: >= 0
Default value: 300
“message-result”
property“message-result” MilterMessageResult *
現在処理中のメッセージの結果。
Owner: MilterServerContext
Flags: Read / Write
“name”
property“name” gchar *
MilterServerContextの名前。
Owner: MilterServerContext
Flags: Read / Write
デフォルト値: NULL
“reading-timeout”
property“reading-timeout” gdouble
The timeout seconds for reading reply from a filter.
Owner: MilterServerContext
Flags: Read / Write / Construct
Allowed values: >= 0
デフォルト値: 10
“state”
property“state” MilterServerContextState
MilterServerContextの状態。
Owner: MilterServerContext
Flags: Read / Write
Default value: MILTER_SERVER_CONTEXT_STATE_START
“status”
property“status” MilterStatus
MilterServerContextのステータス。
Owner: MilterServerContext
Flags: Read / Write
Default value: MILTER_STATUS_NOT_CHANGE
“connection-timeout”
signalvoid user_function (MilterServerContext *milterservercontext, gpointer user_data)
Flags: Run Last
“end-of-message-timeout”
signalvoid user_function (MilterServerContext *milterservercontext, gpointer user_data)
Flags: Run Last
“message-processed”
signalvoid user_function (MilterServerContext *milterservercontext, MilterMessageResult *arg1, gpointer user_data)
Flags: Run Last
“reading-timeout”
signalvoid user_function (MilterServerContext *milterservercontext, gpointer user_data)
Flags: Run Last
“ready”
signalvoid user_function (MilterServerContext *milterservercontext, gpointer user_data)
Flags: Run Last
“state-transited”
signalvoid user_function (MilterServerContext *milterservercontext, MilterServerContextState arg1, gpointer user_data)
Flags: Run Last
“stop-on-body”
signalgboolean user_function (MilterServerContext *milterservercontext, gchar *arg1, guint64 arg2, gpointer user_data)
Flags: Run Last
“stop-on-connect”
signalgboolean user_function (MilterServerContext *milterservercontext, gchar *arg1, gpointer arg2, guint arg3, gpointer user_data)
Flags: Run Last
“stop-on-data”
signalgboolean user_function (MilterServerContext *milterservercontext, gpointer user_data)
Flags: Run Last
“stop-on-end-of-header”
signalgboolean user_function (MilterServerContext *milterservercontext, gpointer user_data)
Flags: Run Last
“stop-on-end-of-message”
signalgboolean user_function (MilterServerContext *milterservercontext, gchar *arg1, guint64 arg2, gpointer user_data)
Flags: Run Last
“stop-on-envelope-from”
signalgboolean user_function (MilterServerContext *milterservercontext, gchar *arg1, gpointer user_data)
Flags: Run Last
“stop-on-envelope-recipient”
signalgboolean user_function (MilterServerContext *milterservercontext, gchar *arg1, gpointer user_data)
Flags: Run Last
“stop-on-header”
signalgboolean user_function (MilterServerContext *milterservercontext, gchar *arg1, gchar *arg2, gpointer user_data)
Flags: Run Last
“stop-on-helo”
signalgboolean user_function (MilterServerContext *milterservercontext, gchar *arg1, gpointer user_data)
Flags: Run Last
“stopped”
signalvoid user_function (MilterServerContext *milterservercontext, gpointer user_data)
Flags: Run Last
“writing-timeout”
signalvoid user_function (MilterServerContext *milterservercontext, gpointer user_data)
Flags: Run Last