Giter VIP home page Giter VIP logo

mod_push_appserver's Introduction

mod_push_appserver's People

Contributors

marc0s avatar tmolitor-stud-tu avatar weiss avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mod_push_appserver's Issues

lua5.2: arg no longer works for accessing variable arguments

When trying the module with lua5.2 I did find that the HTML form for registering didn't show the fields, just the title and the submit button.
This is because in Lua 5.2 to access the list of arguments the arg expression no longer works so ipairs(arg) iterates over nil (?) and no field is added to the form.
The expression to use is now ....

filter required

Having run this for a few months with actual users I have noticed that there is a need to block pushes. At the moment XMPP servers are too aggressive in what they send and in reality I just need to push out for stanzas. An ability to restrict push notifications to just a white list of stanzas would make this more usable and able to scale. Other stanzas should probably just be dropped.

/healthcheck end point

Thoughts on adding a health check end point that does nothing other than run a 200 OK? This would be useful for in hosted environments like AWS where the monitoring infrastructure can be pointed to this to do a quick check to make sure the application is running without putting any additional load on the server.

Feature Request: multiple APNS types

It would be nice to be able to run both sandbox and prod on the same server. Additionally, being able to run multiple APNS types on the same server would make things easier. APNS should probably actually be 3 different kinds with separate cert options.

  1. APNS-iOS-sandbox
  2. APNS-iOS-production
  3. APNS-macOS

How to use

Hi @tmolitor-stud-tu ,
After installed and setup configure, I haven't known how to use this modules.
Could you please make a tutorial a little bit?
I am sorry because I am new with prosody.
Now, I want to push a notification to iso device.
So, how do I register? how do I push a notification? and how do I use HTTP API endpoints?

I use browser to test HTTP API endpoints, but it seams doesn't work.

  1. I tested GET HTTP API:

Dec 26 19:57:42 socket debug server.lua: auto-starting ssl negotiation...
Dec 26 19:57:42 socket debug server.lua: attempting to start tls on tcp{client}: 0x12b1a68
Dec 26 19:57:42 socket debug server.lua: accepted new client connection from 115.77.157.254:51710 to 5281
Dec 26 19:57:42 socket debug server.lua: ssl handshake done
Dec 26 19:57:42 http.server debug Firing event: GET hfhdemo.xyz/push_appserver/GET

  • The browser showed:

404 Not Found
Whatever you were looking for is not here. Keep looking.

  1. I sent a stanza to prosody:
<iq to='[email protected]' id='x13' type='get'>
	<query xmlns='http://jabber.org/protocol/disco#info'/>
</iq>

But the result is not as XEP-0357 expectation. Here response from my server:

<iq id='x13' type='result' to='[email protected]/0e68d5d5-0d10-4545-8926-13ff3f494e9a' from='[email protected]'>
	<query xmlns='http://jabber.org/protocol/disco#info'>
		<identity type='pep' category='pubsub'/>
		<feature var='http://jabber.org/protocol/pubsub#publish'/>
	</query>
</iq>

Please help me finger out my issues?

  1. prosody configure:
    hfhdemo_prosody.cfg.lua.txt
  2. Prosody log after start:
    hfhdemo_prosody.log.txt

Invalid syntax? Lua has no support for C-like ternary operator

priority = summary["last-message-body"] ~= nil ? "high" : "silent";

The error is modulemanager error Unable to load module 'push_appserver_apns': ...ody/external-modules/mod_push_appserver_apns/mod_push_appserver_apns.lua:197: unexpected symbol near '?'

Replacing that statement with priority = summary["last-message-body"] ~= nil and "high" or "silent"; makes it work.

Would you like me to submit a PR?

loop or previous error loading module 'http.client'

Hey,

I've installed all of the dependencies, including lua-http, but still I get this error:

modulemanager error Error initializing module 'push_appserver_apns' on 'localhost': /usr/lib/prosody/util/startup.lua:197: loop or previous error loading module 'http.client'
stack traceback:
[C]: in function '_real_require'
/usr/lib/prosody/util/startup.lua:197: in function 'require'
/usr/lib/prosody/modules/mod_push_appserver_apns/mod_push_appserver_apns.lua:17: in main chunk
[C]: in function 'xpcall'
/usr/lib/prosody/core/modulemanager.lua:270: in function 'do_load_module'
/usr/lib/prosody/core/modulemanager.lua:353: in function 'load'
/usr/lib/prosody/core/modulemanager.lua:131: in function '?'
/usr/lib/prosody/util/events.lua:81: in function </usr/lib/prosody/util/events.lua:77>
(tail call): ?
/usr/lib/prosody/core/hostmanager.lua:108: in function 'activate'
/usr/lib/prosody/core/hostmanager.lua:58: in function '?'
/usr/lib/prosody/util/events.lua:81: in function </usr/lib/prosody/util/events.lua:77>
(tail call): ?
/usr/lib/prosody/util/startup.lua:428: in function 'prepare_to_start'
/usr/lib/prosody/util/startup.lua:703: in function 'f'
/usr/lib/prosody/util/async.lua:156: in function 'func'
/usr/lib/prosody/util/async.lua:144: in function </usr/lib/prosody/util/async.lua:142>

any Idea why?

purge invalid tokens

when a server has been running for a long enough time (or people have upgraded their devices) there will be old invalid tokens registered to an account. These result in extra HTTPs calls and error for every message that arrives. e.g.
Feb 19 01:34:14 ios13push.monal.im:push_appserver warn Push handler for type 'apns' not executed successfully: APNS error: Invalid token

When a apple server responds with invalid token the push server should purge it and reattempt it again and again.

apns connect error

Hello,
i got error after upgrade push notification to latest version.
i got this error after upgrading.

APNS connect error 97: starttls: Address family not supported by protocol

Thank you

sslv3 negotiation issue

when i restart prosodyctl restart then i got this error :-
push_appserver_apns error Could not negotiate TLS encryption with APNS: sslv3 alert handshake failure

Slow event 'unregister-push-token'

The unregistering of push tokens is synchronously blocking the prosody process, causing the server to stall. This happens from time to time, and the delay depends on the server load on Google servers, apparently. This is just from today's log:

Jul 02 07:07:20 mod_log_slow_events     warn    Slow event 'unregister-push-token' took 32.18s: no recognised data
Jul 02 07:07:27 mod_log_slow_events     warn    Slow event 'unregister-push-token' took 1.42s: no recognised data
Jul 02 08:08:17 mod_log_slow_events     warn    Slow event 'unregister-push-token' took 10.37s: no recognised data
Jul 02 08:39:09 mod_log_slow_events     warn    Slow event 'unregister-push-token' took 2.69s: no recognised data
Jul 02 09:07:38 mod_log_slow_events     warn    Slow event 'unregister-push-token' took 2.37s: no recognised data
Jul 02 10:43:55 mod_log_slow_events     warn    Slow event 'unregister-push-token' took 2.79s: no recognised data
Jul 02 12:17:47 mod_log_slow_events     warn    Slow event 'unregister-push-token' took 3.22s: no recognised data
Jul 02 14:59:06 mod_log_slow_events     warn    Slow event 'unregister-push-token' took 36.41s: no recognised data

Here is a single event that failed, look at the time gap after "Unregistering failing FCM token":

Jul 02 14:58:29 push.yax.im:push_appserver_fcm  warn    FCM returned 1 failures:
Jul 02 14:58:29 push.yax.im:push_appserver_fcm  warn    Got FCM error: 'NotRegistered'
Jul 02 14:58:29 push.yax.im:push_appserver_fcm  debug   Adding unregister-push-token to prosody event queue...
Jul 02 14:58:29 push.yax.im:push_appserver      warn    Push handler for type 'fcm' not executed successfully: NotRegistered
Jul 02 14:58:29 yax.im:cloud_notify     debug   Got error of type 'wait' (internal-server-error) for identifier 'push.yax.im<*********': NOT increasing error count for this identifier
Jul 02 14:58:29 push.yax.im:push_appserver_fcm  warn    Unregistering failing FCM token *************
<!-- server stalls for 36 seconds -->
Jul 02 14:59:06 datamanager     debug   Removing empty push_appserver datastore for user *****@push.yax.im
Jul 02 14:59:06 push.yax.im:push_appserver      info    Unregistered push device, returning: 'OK', '*****', '******************************'
Jul 02 14:59:06 push.yax.im:push_appserver      debug   settings were: {
  last_successful_push = "2020-07-02T03:56:02Z",
  type = "fcm",
  secret = "************************",
  last_push_error = "2020-07-02T12:58:29Z",
  renewed = "2020-07-02T03:39:27Z",
  token = "*************************************************",
  registered = "2020-07-01T13:59:27Z",
  node = "********"
}
Jul 02 14:59:06 mod_log_slow_events     warn    Slow event 'unregister-push-token' took 36.41s: no recognised data

Errors starting

using current master:
Feb 15 01:08:28 general error Top-level error, please report:
.../mod_push_appserver_apns/mod_push_appserver_apns.lua:261: attempt to index field '?' (a nil value)
Feb 15 01:08:28 general error
stack traceback:
.../mod_push_appserver_apns/mod_push_appserver_apns.lua:261: in function <.../mod_push_appserver_apns/mod_push_appserver_apns.lua:260>
(tail call): ?
(tail call): ?
/usr/lib/prosody/util/timer.lua:51: in function '?'
/usr/lib/prosody/net/server_select.lua:917: in function </usr/lib/prosody/net/server_select.lua:861>
[C]: in function 'xpcall'
/usr/bin/prosody:400: in function 'loop'
/usr/bin/prosody:431: in main chunk
[C]: ?

Can't serialize table: table has multiple references

Edit: I was confused. That has nothing to do with this module. Just ignore. Sorry for the noise.

Another error on Prosody 0.11.1

Dec 29 11:57:12 c2s55e6a95f5fa0 info Client connected
Dec 29 11:57:15 c2s55e6a95f5fa0 info Authenticated as [email protected]
Dec 29 11:57:19 c2s55e6a95f5fa0 error Traceback[c2s]: /usr/lib/prosody/util/serialization.lua:38: Can't serialize table: table has multiple references
stack traceback:
[C]: in function 'error'
/usr/lib/prosody/util/serialization.lua:38: in function 'fallback'
/usr/lib/prosody/util/serialization.lua:135: in function 'serialize_table'
/usr/lib/prosody/util/serialization.lua:194: in function 'serialize_table'
/usr/lib/prosody/util/serialization.lua:194: in function 'serialize_table'
/usr/lib/prosody/util/serialization.lua:194: in function 'serialize_table'
/usr/lib/prosody/util/serialization.lua:194: in function 'serialize_table'
/usr/lib/prosody/util/serialization.lua:194: in function 'serialize_table'
/usr/lib/prosody/util/serialization.lua:220: in function </usr/lib/prosody/util/serialization.lua:218>
(...tail calls...)
/usr/lib/prosody/util/datamanager.lua:206: in function </usr/lib/prosody/util/datamanager.lua:195>
(...tail calls...)
/opt/prosody-modules/mod_cloud_notify/mod_cloud_notify.lua:116: in function </opt/prosody-modules/mod_cloud_notify/mod_cloud_notify.lua:114>
(...tail calls...)
/opt/prosody-modules/mod_cloud_notify/mod_cloud_notify.lua:240: in function '?'
/usr/lib/prosody/util/events.lua:79: in function </usr/lib/prosody/util/events.lua:75>
(...tail calls...)
/usr/lib/prosody/util/events.lua:79: in function </usr/lib/prosody/util/events.lua:75>
(...tail calls...)
/usr/lib/prosody/core/stanza_router.lua:181: in function 'core_post_stanza'
/usr/lib/prosody/core/stanza_router.lua:127: in function 'core_process_stanza'
/usr/lib/prosody/modules/mod_c2s.lua:276: in function 'func'
/usr/lib/prosody/util/async.lua:127: in function </usr/lib/prosody/util/async.lua:125>

Error initializing module 'push_appserver_fcm'

I'm getting the following error with Prosody 0.11.1. Any idea what I can do to fix it?

Dec 24 21:50:20 modulemanager   error   Error initializing module 'push_appserver_fcm' on 'localhost': /usr/share/lua/5.2/ltn12.lua:
16: Attempt to set a global: ltn12 = table: 0x55cb45f25190
stack traceback:
        [C]: in function 'error'
        /usr/lib/prosody/util/startup.lua:336: in function '__newindex'
        /usr/share/lua/5.2/ltn12.lua:16: in main chunk
        [C]: in function '_real_require'
        /usr/lib/prosody/util/startup.lua:141: in function 'require'
        /usr/share/lua/5.2/ssl/https.lua:11: in main chunk
        [C]: in function '_real_require'
        /usr/lib/prosody/util/startup.lua:141: in function 'require'
        ...server/mod_push_appserver_fcm/mod_push_appserver_fcm.lua:12: in main chunk
        [C]: in function 'xpcall'
        /usr/lib/prosody/core/modulemanager.lua:178: in function 'do_load_module'
        /usr/lib/prosody/core/modulemanager.lua:256: in function 'load'
        /usr/lib/prosody/core/modulemanager.lua:78: in function '?'
        /usr/lib/prosody/util/events.lua:79: in function </usr/lib/prosody/util/events.lua:75>
        (...tail calls...)
        /usr/lib/prosody/core/hostmanager.lua:108: in function 'activate'
        /usr/lib/prosody/core/hostmanager.lua:58: in function '?'
        /usr/lib/prosody/util/events.lua:79: in function </usr/lib/prosody/util/events.lua:75>
        (...tail calls...)
        /usr/lib/prosody/util/startup.lua:327: in function 'prepare_to_start'
        /usr/lib/prosody/util/startup.lua:548: in function 'f'
        /usr/lib/prosody/util/async.lua:139: in function 'func'
        /usr/lib/prosody/util/async.lua:127: in function </usr/lib/prosody/util/async.lua:125>
Dec 24 21:50:20 localhost:push_appserver        info    Appserver started at URL: <http://localhost:5280/push_appserver/>

FCM: Handling of NotRegistered errors

Hi, as stated in https://firebase.google.com/docs/cloud-messaging/http-server-ref#table9 whenever a NotRegistered error from FCM is received, app server should drop the failing token and never use it again to send push notifications.

I have added such a feature by firing unregister-push-token inside the fcm_handler if such an error is received. See diff below.

The problem with this patch is that mod_push_appserver keeps the information about whether the registration works ok or not by setting last_successful_push or last_push_error accordingly and this undoes the deleting of the registration just done in fcm_handler.

I'm not sure how to tackle this. Should the return value of the fcm_handler provide more information on what to do? Or maybe just because an error happened, this token should not be used anymore even if it's present in the storage?

diff --git a/mod_push_appserver_fcm/mod_push_appserver_fcm.lua b/mod_push_appserver_fcm/mod_push_appserver_fcm.lua
index 343dbcd..749ac2c 100644
--- a/mod_push_appserver_fcm/mod_push_appserver_fcm.lua
+++ b/mod_push_appserver_fcm/mod_push_appserver_fcm.lua
@@ -112,6 +112,10 @@ local function fcm_handler(event)
                        if result.error and #result.error then
                                module:log("error", "Got FCM error:", result.error);
                                fcm_error = tostring(result.error);             -- return last error to mod_push_appserver
+                               if result.error == "NotRegistered" then
+                                       module:log("warn", "Unregistering failing FCM token %s", tostring(settings["token"]))
+                                       module:fire_event("unregister-push-token", {token = tostring(settings["token"]), type = "fcm"})
+                               end
                        end
                end
                return fcm_error;

Thanks!

Could not tls-wrap APNS socket

prosody conf file

Component "upload.jitsi.xxxxxxx.org" "push_appserver_apns"
    --component_secret = "123456"
    modules_enabled={
        --"bush";
        "pubsub";
        "push_appserver";
        "push_appserver_apns";
    }
    push_appserver_debugging = true
    push_appserver_apns_sandbox = true
    push_appserver_apns_cert = "/etc/prosody/certs/voip/voip.crt"
    push_appserver_apns_key = "/etc/prosody/certs/voip/voip.key"
    push_appserver_apns_capath = "/etc/ssl/certs"
    -- push_appserver_apns_push_priority = "high"
    ssl = {
        key = "/etc/prosody/certs/jitsi.xxxxxxx.org.key";
        certificate = "/etc/prosody/certs/jitsi.xxxxxxx.org.crt";
    }

error logs

Dec 24 17:08:09 upload.jitsi.xxxxxxx.org:push_appserver	info	Registered push device, returning: 'OK', 'node', 'secret'
Dec 24 17:08:14 http.server	debug	Firing event: GET /push_appserver/v1/settings
Dec 24 17:08:14 http.server	debug	Firing event: GET upload.jitsi.xxxxxxx.org/push_appserver/v1/settings
Dec 24 17:08:14 sql	debug	SQL transaction begin [function(mod_storage_sql.lua:137)]
Dec 24 17:08:14 sql	debug	SQL transaction success [function(mod_storage_sql.lua:137)]
Dec 24 17:08:25 socket	debug	connection failed in read event: closed 
Dec 24 17:08:25 socket	debug	closing client with id: 55cb64fc15f0 closed 
Dec 24 17:08:34 http.server	debug	Firing event: GET /push_appserver/v1/settings/node
Dec 24 17:08:34 http.server	debug	Firing event: GET upload.jitsi.xxxxxxx.org/push_appserver/v1/settings/node
Dec 24 17:08:57 http.server	debug	Firing event: POST /push_appserver/v1/push
Dec 24 17:08:57 http.server	debug	Firing event: POST upload.jitsi.xxxxxxx.org/push_appserver/v1/push
Dec 24 17:08:57 upload.jitsi.xxxxxxx.org:push_appserver	info	Firing event 'incoming-push-to-apns' (node = 'node', secret = 'secret')
Dec 24 17:08:57 upload.jitsi.xxxxxxx.org:push_appserver_apns	debug	Frame ID: 19194DB2
Dec 24 17:08:57 upload.jitsi.xxxxxxx.org:push_appserver_apns	debug	Frame length: 80 (00000050)
Dec 24 17:08:57 upload.jitsi.xxxxxxx.org:push_appserver_apns	debug	Frame data: xxxxx
Dec 24 17:08:57 upload.jitsi.xxxxxxx.org:push_appserver_apns	debug	Frame: xxxxx
Dec 24 17:08:57 upload.jitsi.xxxxxxx.org:push_appserver_apns	debug	connecting to gateway.sandbox.push.apple.com on port 2195
Dec 24 17:08:58 upload.jitsi.xxxxxxx.org:push_appserver_apns	debug	connection established successfully
Dec 24 17:08:58 upload.jitsi.xxxxxxx.org:push_appserver_apns	debug	sending out frame with id '19194DB2'...
Dec 24 17:09:00 upload.jitsi.xxxxxxx.org:push_appserver_apns	info	Got error for ID '19194DB2': Invalid token
Dec 24 17:09:00 upload.jitsi.xxxxxxx.org:push_appserver_apns	info	Could not receive data from APNS socket: closed
Dec 24 17:09:00 upload.jitsi.xxxxxxx.org:push_appserver_apns	warn	APNS push error for ID '19194DB2' --> resending all following pushes...
Dec 24 17:09:00 upload.jitsi.xxxxxxx.org:push_appserver_apns	debug	Queue entry 1: 19194DB2
Dec 24 17:09:00 upload.jitsi.xxxxxxx.org:push_appserver	warn	Push handler for type 'apns' not executed successfully: APNS error: Invalid token
Dec 24 17:09:00 sql	debug	SQL transaction begin [function(mod_storage_sql.lua:132)]
Dec 24 17:09:00 sql	debug	SQL transaction success [function(mod_storage_sql.lua:132)]

Push handler for type 'fcm' not executed successfully: handler not found

I'm testing mod_push_appserver with Conversations and I'm getting this error in prosody.log. Conversations is patched. I'm not sure if this is a bug or if I misconfigured something.

Dec 30 19:21:17 push.example.com:push_appserver     info    Firing event 'incoming-push-to-fcm' (node = '123a567b901c34d6', secret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')
Dec 30 19:21:17 push.example.com:push_appserver     error   Push handler for type 'fcm' not executed successfully: handler not found
Dec 30 19:21:17 push.example.com:push_appserver     warn    Rate limit for node '123a567b901c34d6' reached, ignoring push request (and returning 'OK')
Dec 30 19:21:17 push.example.com:push_appserver     warn    Rate limit for node '123a567b901c34d6' reached, ignoring push request (and returning 'OK')
Dec 30 19:21:17 push.example.com:push_appserver     warn    Rate limit for node '123a567b901c34d6' reached, ignoring push request (and returning 'OK')
...

Recommended configuration approach

Hi,

I've been reading through the README.md and the latest changes and I've noticed that the configuration example uses Component instead of VirtualHost.

I've been using the VirtualHost statement for configuring the push service like in the following:

VirtualHost "push.example.org" enabled = true;
http_host = "push.example.org";

-- WARNING: in production *PROTECT* the /v1/settings path if enabled!
push_appserver_debugging = true
push_appserver_fcm_key = "SomeKeyForFCM"
push_appserver_apns_cert = "/etc/prosody/certs.d/apns_certificate.pem";
push_appserver_apns_key = "/etc/prosody/certs.d/apns_privkey.pem";

modules_enabled = {
	-- Generally required
		"dialback"; -- s2s dialback support
		"disco"; -- Service discovery
		"rawdebug";
		"posix";
		"push_appserver";
		"push_appserver_apns";
		"push_appserver_fcm";
};

modules_disabled = {
	"register";
};

Are there any relevant differences in the result of configuring this module in one way or another?
If, choosing the Component approach, would I need to define two different names for each of the push type handlers (fcm and apns)?

Thanks!

new errors starting up

.../mod_push_appserver_apns/mod_push_appserver_apns.lua:264: attempt to index field '?' (a nil value)
Feb 17 17:50:07 general error
stack traceback:
.../mod_push_appserver_apns/mod_push_appserver_apns.lua:264: in function <.../mod_push_appserver_apns/mod_push_appserver_apns.lua:259>
(tail call): ?
(tail call): ?
/usr/lib/prosody/util/timer.lua:51: in function '?'
/usr/lib/prosody/net/server_select.lua:917: in function </usr/lib/prosody/net/server_select.lua:861>
[C]: in function 'xpcall'
/usr/bin/prosody:400: in function 'loop'
/usr/bin/prosody:431: in main chunk
[C]: ?
Feb 17 17:50:13 mod_s2s error Traceback[s2s]: .../mod_push_appserver_apns/mod_push_appserver_apns.lua:56: attempt to index local 'timer' (a nil value)
stack traceback:
.../mod_push_appserver_apns/mod_push_appserver_apns.lua:56: in function 'stoppable_timer'
.../mod_push_appserver_apns/mod_push_appserver_apns.lua:259: in function '?'
/usr/lib/prosody/util/events.lua:78: in function </usr/lib/prosody/util/events.lua:74>
(tail call): ?
(tail call): ?
...dy/modules/mod_push_appserver/mod_push_appserver.lua:276: in function '?'
/usr/lib/prosody/util/events.lua:78: in function </usr/lib/prosody/util/events.lua:74>
(tail call): ?
/usr/lib/prosody/core/stanza_router.lua:190: in function 'core_post_stanza'
/usr/lib/prosody/core/stanza_router.lua:137: in function </usr/lib/prosody/core/stanza_router.lua:63>
...
[C]: in function 'parse'
/usr/lib/prosody/util/xmppstream.lua:271: in function 'feed'
/usr/lib/prosody/modules/mod_s2s/mod_s2s.lua:558: in function 'data'
/usr/lib/prosody/modules/mod_s2s/mod_s2s.lua:605: in function </usr/lib/prosody/modules/mod_s2s/mod_s2s.lua:602>
(tail call): ?
/usr/lib/prosody/net/server_select.lua:879: in function </usr/lib/prosody/net/server_select.lua:861>
[C]: in function 'xpcall'
/usr/bin/prosody:400: in function 'loop'
/usr/bin/prosody:431: in main chunk
[C]: ?

unable to load apns

Feb 17 17:29:49 modulemanager error Unable to load module 'push_appserver_apns': .../lib/prosody/modules/mod_push_appserver_apns/mod_push_appserver_apns.lua:228: unexpected symbol near ';'

attempt to index field '?' (a nil value)

Feb 17 23:38:34 general error Top-level error, please report:
.../mod_push_appserver_apns/mod_push_appserver_apns.lua:264: attempt to index field '?' (a nil value)
Feb 17 23:38:34 general error
stack traceback:
.../mod_push_appserver_apns/mod_push_appserver_apns.lua:264: in function <.../mod_push_appserver_apns/mod_push_appserver_apns.lua:259>
(tail call): ?
(tail call): ?
/usr/lib/prosody/util/timer.lua:51: in function '?'
/usr/lib/prosody/net/server_select.lua:917: in function </usr/lib/prosody/net/server_select.lua:861>
[C]: in function 'xpcall'
/usr/bin/prosody:400: in function 'loop'
/usr/bin/prosody:431: in main chunk
[C]: ?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.