From 9800ecb1e93d398988a6904d5e4dc6c4e11aedb0 Mon Sep 17 00:00:00 2001 From: tomsmeding Date: Sat, 15 Apr 2017 09:59:11 +0200 Subject: weechat: Support sending user pings --- weechat/net.c | 5 +++++ weechat/net.h | 1 + weechat/tomsg.c | 14 ++++++++++++++ 3 files changed, 20 insertions(+) diff --git a/weechat/net.c b/weechat/net.c index 6324cb7..fb9ec8e 100644 --- a/weechat/net.c +++ b/weechat/net.c @@ -154,6 +154,11 @@ void net_handle_recv(int fd,const char *msg){ free(res.name); } else if(cmdlen==4&&memcmp(cmd,"ping",4)==0){ // Do nothing + } else if(cmdlen==4&&memcmp(cmd,"pong",4)==0){ + struct net_response res=(struct net_response){ + .type=NET_PONG + }; + cb(fd,res,payload); } else if(cmdlen==4&&memcmp(cmd,"list",4)==0){ struct net_response res=(struct net_response){.type=NET_LIST}; if(*p=='\0'){ diff --git a/weechat/net.h b/weechat/net.h index c8b0f03..86aa271 100644 --- a/weechat/net.h +++ b/weechat/net.h @@ -9,6 +9,7 @@ enum net_response_type{ NET_ERROR, NET_NAME, NET_LIST, + NET_PONG, NET_HISTORY, NET_MESSAGE, NET_JOIN, diff --git a/weechat/tomsg.c b/weechat/tomsg.c index 2954a47..3b188ec 100644 --- a/weechat/tomsg.c +++ b/weechat/tomsg.c @@ -259,6 +259,18 @@ static void login_net_callback(int fd,struct net_response res,void *payload){ } } +static void pong_net_callback(int fd,struct net_response res,void *payload){ + (void)payload; + fprintf(debugf,"pong_net_callback(fd=%d,res={.type=%d})\n",fd,res.type); + struct conndata *conn=weechat_hashtable_get(conntable,&fd); + assert(conn); + if(res.type==NET_PONG){ + weechat_printf(conn->buffer,"pong"); + } else { + fprintf(debugf,"pong_net_callback: res.type=%d\n",res.type); + } +} + static void conn_destroy(struct conndata *conn){ fprintf(debugf,"conn_destroy(conn=%p (fd=%d))\n",conn,conn->fd); weechat_unhook(conn->fd_hook); @@ -335,6 +347,8 @@ static int conn_input_cb(const void *conn_vp,void *_d,struct t_gui_buffer *buffe if(conn->pending_username)free(conn->pending_username); conn->pending_username=strdup(username); net_sendf(conn->fd,login_net_callback,NULL,"login %s %s",username,password); + } else if(strcmp(cmd,"ping")==0){ + net_sendf(conn->fd,pong_net_callback,NULL,"ping"); } else { weechat_printf(conn->buffer,"Unknown command '%s'",cmd); } -- cgit v1.2.3-54-g00ecf