--- /tmp/jabberd-2.2.13/sm/sm.h 2011-02-23 08:24:34.000000000 -0800 +++ ./jabberd2/sm/sm.h 2011-02-24 16:25:21.000000000 -0800 @@ -173,6 +173,8 @@ struct sm_st { char *router_pass; /**< password to authenticate to the router with */ char *router_pemfile; /**< name of file containing a SSL certificate & key for channel to the router */ + char *router_private_key_password; /** password for private key if pemfile + key is encrypted */ mio_t mio; /**< mio context */ @@ -220,6 +222,17 @@ struct sm_st { xht hosts; /**< vHosts map */ + /** Database query rate limits */ + int query_rate_total; + int query_rate_seconds; + int query_rate_wait; + xht query_rates; + + /** mod_deliver: If defined, set the "from" in outgoing messages from JIDs in ACL "masquerade_sender" to masq_sender_replacement **/ + /** For Apple Notification server cluster support **/ + char *masq_sender_replacement; + + char *apple_notification_component_addr; }; /** data for a single user */ @@ -577,7 +590,8 @@ typedef enum { st_SUCCESS, /**< call completed successful */ st_FAILED, /**< call failed (driver internal error) */ st_NOTFOUND, /**< no matching objects were found */ - st_NOTIMPL /**< call not implemented */ + st_NOTIMPL, /**< call not implemented */ + st_RATELIMITED /**< Failure due to query rate limiting */ } st_ret_t; typedef struct st_driver_st *st_driver_t; @@ -638,6 +652,9 @@ SM_API st_ret_t storage_delete(st /** replace objects matching this filter with objects in this set (atomic delete + get) */ SM_API st_ret_t storage_replace(storage_t st, const char *type, const char *owner, const char *filter, os_t os); +/** Apple: Rate limiting for storage */ +SM_API st_ret_t storage_rate_limit(storage_t st, const char *owner); + /** type for the driver init function */ typedef st_ret_t (*st_driver_init_fn)(st_driver_t);