Top | ![]() |
![]() |
![]() |
![]() |
Functions
Properties
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 |
Signals
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 |
Types and Values
Object Hierarchy
GObject ╰── MilterAgent ╰── MilterProtocolAgent ╰── MilterServerContext ╰── MilterManagerChild
Description
The MilterServerContext
processes one server side milter
protocol session. It means MilterServerContext
instance
is created for each milter protocol session.
Functions
milter_server_context_new ()
MilterServerContext *
milter_server_context_new (void
);
Creates a new context object.
milter_server_context_set_connection_timeout ()
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.
Parameters
context |
||
timeout |
the connection timeout in seconds. (default is
|
milter_server_context_set_writing_timeout ()
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.
Parameters
context |
||
timeout |
the writing timeout in seconds. (default is
|
milter_server_context_set_reading_timeout ()
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.
Parameters
context |
||
timeout |
the reading timeout in seconds. (default is
|
milter_server_context_set_end_of_message_timeout ()
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.
Parameters
context |
||
timeout |
the timeout in seconds on end-of-message.
(default is
|
milter_server_context_set_all_timeouts ()
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
milter_server_context_set_connection_spec ()
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
.
milter_server_context_establish_connection ()
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
.
milter_server_context_get_status ()
MilterStatus
milter_server_context_get_status (MilterServerContext *context
);
Gets the current status.
milter_server_context_set_status ()
void milter_server_context_set_status (MilterServerContext *context
,MilterStatus status
);
Sets the current status.
milter_server_context_get_state ()
MilterServerContextState
milter_server_context_get_state (MilterServerContext *context
);
Gets the current state.
milter_server_context_set_state ()
void milter_server_context_set_state (MilterServerContext *context
,MilterServerContextState state
);
Sets the current state.
milter_server_context_get_last_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.
milter_server_context_is_processing ()
gboolean
milter_server_context_is_processing (MilterServerContext *context
);
Gets whether waiting response.
milter_server_context_negotiate ()
gboolean milter_server_context_negotiate (MilterServerContext *context
,MilterOption *option
);
Negotiates with client.
milter_server_context_connect ()
gboolean milter_server_context_connect (MilterServerContext *context
,const gchar *host_name
,struct sockaddr *address
,socklen_t address_length
);
Sends connected SMTP client information.
milter_server_context_helo ()
gboolean milter_server_context_helo (MilterServerContext *context
,const gchar *fqdn
);
Sends the FQDN passed on HELO.
milter_server_context_envelope_from ()
gboolean milter_server_context_envelope_from (MilterServerContext *context
,const gchar *from
);
Sends the parameter passed on MAIL FROM.
milter_server_context_envelope_recipient ()
gboolean milter_server_context_envelope_recipient (MilterServerContext *context
,const gchar *recipient
);
Sends the parameter passed on RCPT TO.
milter_server_context_data ()
gboolean
milter_server_context_data (MilterServerContext *context
);
Notifies DATA is received.
milter_server_context_unknown ()
gboolean milter_server_context_unknown (MilterServerContext *context
,const gchar *command
);
Sends received unknown SMTP command.
milter_server_context_header ()
gboolean milter_server_context_header (MilterServerContext *context
,const gchar *name
,const gchar *value
);
Sends a header.
milter_server_context_end_of_header ()
gboolean
milter_server_context_end_of_header (MilterServerContext *context
);
Notifies all headers are sent.
milter_server_context_body ()
gboolean milter_server_context_body (MilterServerContext *context
,const gchar *chunk
,gsize size
);
Sends a body chunk.
milter_server_context_end_of_message ()
gboolean milter_server_context_end_of_message (MilterServerContext *context
,const gchar *chunk
,gsize size
);
Notifies all body chunks are sent with optional the last body chunk.
milter_server_context_quit ()
gboolean
milter_server_context_quit (MilterServerContext *context
);
Quits the current connection.
milter_server_context_abort ()
gboolean
milter_server_context_abort (MilterServerContext *context
);
Aborts the current connection.
milter_server_context_set_option ()
void milter_server_context_set_option (MilterServerContext *context
,MilterOption *option
);
Set negotiate option.
milter_server_context_get_option ()
MilterOption *
milter_server_context_get_option (MilterServerContext *context
);
Get negotiate option.
milter_server_context_is_enable_step ()
gboolean milter_server_context_is_enable_step (MilterServerContext *context
,MilterStepFlags step
);
Gets whether step
flag is enabled in the context
's option.
milter_server_context_get_skip_body ()
gboolean
milter_server_context_get_skip_body (MilterServerContext *context
);
Gets whether context
received skip response on sending
body chunks.
milter_server_context_get_name ()
const gchar *
milter_server_context_get_name (MilterServerContext *context
);
Gets the name of context
.
milter_server_context_set_name ()
void milter_server_context_set_name (MilterServerContext *context
,const gchar *name
);
Sets the name of context
.
milter_server_context_get_elapsed ()
gdouble
milter_server_context_get_elapsed (MilterServerContext *context
);
Gets the elapsed time.
milter_server_context_is_negotiated ()
gboolean
milter_server_context_is_negotiated (MilterServerContext *context
);
Gets whether negotiation is succeeded.
milter_server_context_is_processing_message ()
gboolean
milter_server_context_is_processing_message
(MilterServerContext *context
);
Gets whether the context is processing message.
milter_server_context_set_processing_message ()
void milter_server_context_set_processing_message (MilterServerContext *context
,gboolean processing_message
);
Sets whether the context is processing message.
milter_server_context_is_quitted ()
gboolean
milter_server_context_is_quitted (MilterServerContext *context
);
Gets whether the context is quitted.
milter_server_context_set_quitted ()
void milter_server_context_set_quitted (MilterServerContext *context
,gboolean quitted
);
Sets whether the context is quitted.
milter_server_context_reset_message_related_data ()
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.
milter_server_context_get_message_result ()
MilterMessageResult *
milter_server_context_get_message_result
(MilterServerContext *context
);
Gets the message result of context
.
milter_server_context_set_message_result ()
void milter_server_context_set_message_result (MilterServerContext *context
,MilterMessageResult *result
);
Sets the message result of context
.
milter_server_context_need_reply ()
gboolean milter_server_context_need_reply (MilterServerContext *context
,MilterServerContextState state
);
Gets whether the context needs to reply on state
.
milter_server_context_has_accepted_recipient ()
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
.
Types and Values
MILTER_SERVER_CONTEXT_ERROR
#define MILTER_SERVER_CONTEXT_ERROR (milter_server_context_error_quark())
Used to get the GError quark for MilterServerContext errors.
MILTER_SERVER_CONTEXT_DEFAULT_CONNECTION_TIMEOUT
#define MILTER_SERVER_CONTEXT_DEFAULT_CONNECTION_TIMEOUT 300
The default connection timeout in seconds.
MILTER_SERVER_CONTEXT_DEFAULT_WRITING_TIMEOUT
#define MILTER_SERVER_CONTEXT_DEFAULT_WRITING_TIMEOUT 10
The default writing timeout in seconds.
MILTER_SERVER_CONTEXT_DEFAULT_READING_TIMEOUT
#define MILTER_SERVER_CONTEXT_DEFAULT_READING_TIMEOUT 10
The default reading timeout in seconds.
MILTER_SERVER_CONTEXT_DEFAULT_END_OF_MESSAGE_TIMEOUT
#define MILTER_SERVER_CONTEXT_DEFAULT_END_OF_MESSAGE_TIMEOUT 300
The default end-of-message response timeout in seconds.
enum MilterServerContextError
These identify the variable errors that can occur while
calling MilterServerContext
functions.
Members
Indicates a connection failure. |
||
Indicates the connection spec isn't set. |
||
Indicates
unexpected response is received on the current
|
||
Indicates a new operation is requested before the previous operation's response is received. |
||
Indicates an IO error causing on writing/reading milter protocol data. |
||
Indicates unsupported newer version is requested. |
enum MilterServerContextState
These identify the state of MilterServerContext
.
Members
Invalid state. |
||
Just started. |
||
Sent macro definition. |
||
Negotiating. |
||
Sent connection information. |
||
Sent HELO information. |
||
Sent MAIL FROM command information. |
||
Sent RCPT TO command information. |
||
Sent DATA command information. |
||
Sent unknown SMTP command. |
||
Sent a header. |
||
Sent all headers. |
||
Sent a body chunk. |
||
Sent all body chunks. |
||
Sent quit request. |
||
Sent abort request. |
Property Details
The “connection-timeout”
property
“connection-timeout” gdouble
The timeout seconds for connecting to a filter.
Flags: Read / Write / Construct
Allowed values: >= 0
Default value: 300
The “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.
Flags: Read / Write / Construct
Allowed values: >= 0
Default value: 300
The “message-result”
property
“message-result” MilterMessageResult *
Result of the current processing message.
Flags: Read / Write
The “name”
property
“name” gchar *
The name of the MilterServerContext.
Flags: Read / Write
Default value: NULL
The “reading-timeout”
property
“reading-timeout” gdouble
The timeout seconds for reading reply from a filter.
Flags: Read / Write / Construct
Allowed values: >= 0
Default value: 10
The “state”
property
“state” MilterServerContextState
The state of the MilterServerContext.
Flags: Read / Write
Default value: MILTER_SERVER_CONTEXT_STATE_START
The “status”
property
“status” MilterStatus
The status of the MilterServerContext.
Flags: Read / Write
Default value: MILTER_STATUS_NOT_CHANGE
Signal Details
The “connection-timeout”
signal
void user_function (MilterServerContext *milterservercontext, gpointer user_data)
Flags: Run Last
The “end-of-message-timeout”
signal
void user_function (MilterServerContext *milterservercontext, gpointer user_data)
Flags: Run Last
The “message-processed”
signal
void user_function (MilterServerContext *milterservercontext, MilterMessageResult *arg1, gpointer user_data)
Flags: Run Last
The “reading-timeout”
signal
void user_function (MilterServerContext *milterservercontext, gpointer user_data)
Flags: Run Last
The “ready”
signal
void user_function (MilterServerContext *milterservercontext, gpointer user_data)
Flags: Run Last
The “state-transited”
signal
void user_function (MilterServerContext *milterservercontext, MilterServerContextState arg1, gpointer user_data)
Flags: Run Last
The “stop-on-body”
signal
gboolean user_function (MilterServerContext *milterservercontext, gchar *arg1, guint64 arg2, gpointer user_data)
Flags: Run Last
The “stop-on-connect”
signal
gboolean user_function (MilterServerContext *milterservercontext, gchar *arg1, gpointer arg2, guint arg3, gpointer user_data)
Flags: Run Last
The “stop-on-data”
signal
gboolean user_function (MilterServerContext *milterservercontext, gpointer user_data)
Flags: Run Last
The “stop-on-end-of-header”
signal
gboolean user_function (MilterServerContext *milterservercontext, gpointer user_data)
Flags: Run Last
The “stop-on-end-of-message”
signal
gboolean user_function (MilterServerContext *milterservercontext, gchar *arg1, guint64 arg2, gpointer user_data)
Flags: Run Last
The “stop-on-envelope-from”
signal
gboolean user_function (MilterServerContext *milterservercontext, gchar *arg1, gpointer user_data)
Flags: Run Last
The “stop-on-envelope-recipient”
signal
gboolean user_function (MilterServerContext *milterservercontext, gchar *arg1, gpointer user_data)
Flags: Run Last
The “stop-on-header”
signal
gboolean user_function (MilterServerContext *milterservercontext, gchar *arg1, gchar *arg2, gpointer user_data)
Flags: Run Last
The “stop-on-helo”
signal
gboolean user_function (MilterServerContext *milterservercontext, gchar *arg1, gpointer user_data)
Flags: Run Last
The “stopped”
signal
void user_function (MilterServerContext *milterservercontext, gpointer user_data)
Flags: Run Last
The “writing-timeout”
signal
void user_function (MilterServerContext *milterservercontext, gpointer user_data)
Flags: Run Last