sm.h.patch   [plain text]


--- /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);