Lines Matching refs:irc

68 	struct irc_conn *irc;  in irc_view_motd()  local
75 irc = gc->proto_data; in irc_view_motd()
76 if (irc->motd == NULL) { in irc_view_motd()
81 title = g_strdup_printf(_("MOTD for %s"), irc->server); in irc_view_motd()
82 body = g_strdup_printf("<span style=\"font-family: monospace;\">%s</span>", irc->motd->str); in irc_view_motd()
88 static int do_send(struct irc_conn *irc, const char *buf, gsize len) in do_send() argument
92 if (irc->gsc) { in do_send()
93 ret = purple_ssl_write(irc->gsc, buf, len); in do_send()
95 ret = write(irc->fd, buf, len); in do_send()
103 struct irc_conn *irc = (struct irc_conn*)gc->proto_data; in irc_send_raw() local
107 irc_send_len(irc, buf, len); in irc_send_raw()
114 struct irc_conn *irc = data; in irc_send_cb() local
117 writelen = purple_circ_buffer_get_max_read(irc->outbuf); in irc_send_cb()
120 purple_input_remove(irc->writeh); in irc_send_cb()
121 irc->writeh = 0; in irc_send_cb()
125 ret = do_send(irc, irc->outbuf->outptr, writelen); in irc_send_cb()
130 PurpleConnection *gc = purple_account_get_connection(irc->account); in irc_send_cb()
139 purple_circ_buffer_mark_read(irc->outbuf, ret); in irc_send_cb()
149 int irc_send(struct irc_conn *irc, const char *buf) in irc_send() argument
151 return irc_send_len(irc, buf, strlen(buf)); in irc_send()
154 int irc_send_len(struct irc_conn *irc, const char *buf, int buflen) in irc_send_len() argument
159 …purple_signal_emit(_irc_plugin, "irc-sending-text", purple_account_get_connection(irc->account), &… in irc_send_len()
176 if (!irc->writeh) in irc_send_len()
177 ret = do_send(irc, tosend, buflen); in irc_send_len()
186 PurpleConnection *gc = purple_account_get_connection(irc->account); in irc_send_len()
195 if (!irc->writeh) in irc_send_len()
196 irc->writeh = purple_input_add( in irc_send_len()
197 irc->gsc ? irc->gsc->fd : irc->fd, in irc_send_len()
198 PURPLE_INPUT_WRITE, irc_send_cb, irc); in irc_send_len()
199 purple_circ_buffer_append(irc->outbuf, tosend + ret, in irc_send_len()
207 gboolean irc_blist_timeout(struct irc_conn *irc) in irc_blist_timeout() argument
209 if (irc->ison_outstanding) { in irc_blist_timeout()
213 g_hash_table_foreach(irc->buddies, (GHFunc)irc_ison_buddy_init, in irc_blist_timeout()
214 (gpointer *)&irc->buddies_outstanding); in irc_blist_timeout()
216 irc_buddy_query(irc); in irc_blist_timeout()
221 void irc_buddy_query(struct irc_conn *irc) in irc_buddy_query() argument
230 while ((lp = g_list_first(irc->buddies_outstanding))) { in irc_buddy_query()
236 irc->buddies_outstanding = g_list_remove_link(irc->buddies_outstanding, lp); in irc_buddy_query()
240 buf = irc_format(irc, "vn", "ISON", string->str); in irc_buddy_query()
241 irc_send(irc, buf); in irc_buddy_query()
243 irc->ison_outstanding = TRUE; in irc_buddy_query()
245 irc->ison_outstanding = FALSE; in irc_buddy_query()
256 static void irc_ison_one(struct irc_conn *irc, struct irc_buddy *ib) in irc_ison_one() argument
260 if (irc->buddies_outstanding != NULL) { in irc_ison_one()
261 irc->buddies_outstanding = g_list_append(irc->buddies_outstanding, ib); in irc_ison_one()
266 buf = irc_format(irc, "vn", "ISON", ib->name); in irc_ison_one()
267 irc_send(irc, buf); in irc_ison_one()
343 struct irc_conn *irc; in irc_login() local
357 gc->proto_data = irc = g_new0(struct irc_conn, 1); in irc_login()
358 irc->fd = -1; in irc_login()
359 irc->account = account; in irc_login()
360 irc->outbuf = purple_circ_buffer_new(512); in irc_login()
364 irc->server = g_strdup(userparts[1]); in irc_login()
367 irc->buddies = g_hash_table_new_full((GHashFunc)irc_nick_hash, (GEqualFunc)irc_nick_equal, in irc_login()
369 irc->cmds = g_hash_table_new(g_str_hash, g_str_equal); in irc_login()
370 irc_cmd_table_build(irc); in irc_login()
371 irc->msgs = g_hash_table_new(g_str_hash, g_str_equal); in irc_login()
372 irc_msg_table_build(irc); in irc_login()
378 irc->gsc = purple_ssl_connect(account, irc->server, in irc_login()
389 if (!irc->gsc) { in irc_login()
391 if (purple_proxy_connect(gc, account, irc->server, in irc_login()
407 struct irc_conn *irc = gc->proto_data; in do_login() local
410 const gboolean use_sasl = purple_account_get_bool(irc->account, "sasl", FALSE); in do_login()
416 buf = irc_format(irc, "vv:", "CAP", "REQ", "sasl"); in do_login()
419 buf = irc_format(irc, "v:", "PASS", pass); in do_login()
420 if (irc_send(irc, buf) < 0) { in do_login()
427 realname = purple_account_get_string(irc->account, "realname", ""); in do_login()
428 identname = purple_account_get_string(irc->account, "username", ""); in do_login()
441 if (*irc->server == ':') { in do_login()
443 server = g_strdup_printf("0%s", irc->server); in do_login()
445 server = g_strdup(irc->server); in do_login()
448 buf = irc_format(irc, "vvvv:", "USER", tmp ? tmp : identname, "*", server, in do_login()
452 if (irc_send(irc, buf) < 0) { in do_login()
458 buf = irc_format(irc, "vn", "NICK", nickname); in do_login()
459 irc->reqnick = g_strdup(nickname); in do_login()
460 irc->nickused = FALSE; in do_login()
461 if (irc_send(irc, buf) < 0) { in do_login()
467 irc->recv_time = time(NULL); in do_login()
485 struct irc_conn *irc = gc->proto_data; in irc_login_cb() local
496 irc->fd = source; in irc_login_cb()
499 gc->inpa = purple_input_add(irc->fd, PURPLE_INPUT_READ, irc_input_cb, gc); in irc_login_cb()
508 struct irc_conn *irc = gc->proto_data; in irc_ssl_connect_failure() local
510 irc->gsc = NULL; in irc_ssl_connect_failure()
517 struct irc_conn *irc = gc->proto_data; in irc_close() local
519 if (irc == NULL) in irc_close()
522 if (irc->gsc || (irc->fd >= 0)) in irc_close()
523 irc_cmd_quit(irc, "quit", NULL, NULL); in irc_close()
528 g_free(irc->inbuf); in irc_close()
529 if (irc->gsc) { in irc_close()
530 purple_ssl_close(irc->gsc); in irc_close()
531 } else if (irc->fd >= 0) { in irc_close()
532 close(irc->fd); in irc_close()
534 if (irc->timer) in irc_close()
535 purple_timeout_remove(irc->timer); in irc_close()
536 g_hash_table_destroy(irc->cmds); in irc_close()
537 g_hash_table_destroy(irc->msgs); in irc_close()
538 g_hash_table_destroy(irc->buddies); in irc_close()
539 if (irc->motd) in irc_close()
540 g_string_free(irc->motd, TRUE); in irc_close()
541 g_free(irc->server); in irc_close()
543 if (irc->writeh) in irc_close()
544 purple_input_remove(irc->writeh); in irc_close()
546 purple_circ_buffer_destroy(irc->outbuf); in irc_close()
548 g_free(irc->mode_chars); in irc_close()
549 g_free(irc->reqnick); in irc_close()
552 if (irc->sasl_conn) { in irc_close()
553 sasl_dispose(&irc->sasl_conn); in irc_close()
554 irc->sasl_conn = NULL; in irc_close()
556 g_free(irc->sasl_cb); in irc_close()
557 if(irc->sasl_mechs) in irc_close()
558 g_string_free(irc->sasl_mechs, TRUE); in irc_close()
562 g_free(irc); in irc_close()
567 struct irc_conn *irc = gc->proto_data; in irc_im_send() local
571 args[0] = irc_nick_skip_mode(irc, who); in irc_im_send()
576 irc_cmd_privmsg(irc, "msg", NULL, args); in irc_im_send()
583 struct irc_conn *irc = gc->proto_data; in irc_get_info() local
587 irc_cmd_whois(irc, "whois", NULL, args); in irc_get_info()
593 struct irc_conn *irc; in irc_set_status() local
598 irc = gc->proto_data; in irc_set_status()
609 irc_cmd_away(irc, "away", NULL, args); in irc_set_status()
611 irc_cmd_away(irc, "back", NULL, args); in irc_set_status()
617 struct irc_conn *irc = (struct irc_conn *)gc->proto_data; in irc_add_buddy() local
621 ib = g_hash_table_lookup(irc->buddies, bname); in irc_add_buddy()
624 purple_prpl_got_user_status(irc->account, bname, in irc_add_buddy()
630 g_hash_table_replace(irc->buddies, ib->name, ib); in irc_add_buddy()
636 if (irc->timer) in irc_add_buddy()
637 irc_ison_one(irc, ib); in irc_add_buddy()
642 struct irc_conn *irc = (struct irc_conn *)gc->proto_data; in irc_remove_buddy() local
645 ib = g_hash_table_lookup(irc->buddies, purple_buddy_get_name(buddy)); in irc_remove_buddy()
647 g_hash_table_remove(irc->buddies, purple_buddy_get_name(buddy)); in irc_remove_buddy()
651 static void read_input(struct irc_conn *irc, int len) in read_input() argument
655 irc->account->gc->last_received = time(NULL); in read_input()
656 irc->inbufused += len; in read_input()
657 irc->inbuf[irc->inbufused] = '\0'; in read_input()
659 cur = irc->inbuf; in read_input()
664 while ((cur < (irc->inbuf + irc->inbufused)) && !*cur) in read_input()
667 while (cur < irc->inbuf + irc->inbufused && in read_input()
671 irc_parse_msg(irc, cur); in read_input()
674 if (cur != irc->inbuf + irc->inbufused) { /* leftover */ in read_input()
675 irc->inbufused -= (cur - irc->inbuf); in read_input()
676 memmove(irc->inbuf, cur, irc->inbufused); in read_input()
678 irc->inbufused = 0; in read_input()
687 struct irc_conn *irc = gc->proto_data; in irc_input_cb_ssl() local
698 if (irc->inbuflen < irc->inbufused + IRC_BUFSIZE_INCREMENT) { in irc_input_cb_ssl()
699 if (irc->inbuflen + IRC_BUFSIZE_INCREMENT <= IRC_MAX_BUFSIZE) { in irc_input_cb_ssl()
700 irc->inbuflen += IRC_BUFSIZE_INCREMENT; in irc_input_cb_ssl()
701 irc->inbuf = g_realloc(irc->inbuf, irc->inbuflen); in irc_input_cb_ssl()
704 irc->inbufused = 0; in irc_input_cb_ssl()
708 len = purple_ssl_read(gsc, irc->inbuf + irc->inbufused, irc->inbuflen - irc->inbufused - 1); in irc_input_cb_ssl()
710 read_input(irc, len); in irc_input_cb_ssl()
732 struct irc_conn *irc = gc->proto_data; in irc_input_cb() local
736 if (irc->inbuflen < irc->inbufused + IRC_BUFSIZE_INCREMENT) { in irc_input_cb()
737 if (irc->inbuflen + IRC_BUFSIZE_INCREMENT <= IRC_MAX_BUFSIZE) { in irc_input_cb()
738 irc->inbuflen += IRC_BUFSIZE_INCREMENT; in irc_input_cb()
739 irc->inbuf = g_realloc(irc->inbuf, irc->inbuflen); in irc_input_cb()
741 irc->inbufused = 0; in irc_input_cb()
745 len = read(irc->fd, irc->inbuf + irc->inbufused, irc->inbuflen - irc->inbufused - 1); in irc_input_cb()
763 read_input(irc, len); in irc_input_cb()
768 struct irc_conn *irc = gc->proto_data; in irc_chat_join() local
773 irc_cmd_join(irc, "join", NULL, args); in irc_chat_join()
782 struct irc_conn *irc = gc->proto_data; in irc_chat_invite() local
792 irc_cmd_invite(irc, "invite", purple_conversation_get_name(convo), args); in irc_chat_invite()
798 struct irc_conn *irc = gc->proto_data; in irc_chat_leave() local
807 irc_cmd_part(irc, "part", purple_conversation_get_name(convo), args); in irc_chat_leave()
813 struct irc_conn *irc = gc->proto_data; in irc_chat_send() local
824 return irc_parse_cmd(irc, convo->name, what + 1); in irc_chat_send()
831 irc_cmd_privmsg(irc, "msg", NULL, args); in irc_chat_send()
865 struct irc_conn *irc; in irc_chat_set_topic() local
867 irc = gc->proto_data; in irc_chat_set_topic()
873 buf = irc_format(irc, "vt:", "TOPIC", name, topic); in irc_chat_set_topic()
874 irc_send(irc, buf); in irc_chat_set_topic()
880 struct irc_conn *irc; in irc_roomlist_get_list() local
885 irc = gc->proto_data; in irc_roomlist_get_list()
887 if (irc->roomlist) in irc_roomlist_get_list()
888 purple_roomlist_unref(irc->roomlist); in irc_roomlist_get_list()
890 irc->roomlist = purple_roomlist_new(purple_connection_get_account(gc)); in irc_roomlist_get_list()
901 purple_roomlist_set_fields(irc->roomlist, fields); in irc_roomlist_get_list()
903 buf = irc_format(irc, "v", "LIST"); in irc_roomlist_get_list()
904 irc_send(irc, buf); in irc_roomlist_get_list()
907 return irc->roomlist; in irc_roomlist_get_list()
913 struct irc_conn *irc; in irc_roomlist_cancel() local
918 irc = gc->proto_data; in irc_roomlist_cancel()
922 if (irc->roomlist == list) { in irc_roomlist_cancel()
923 irc->roomlist = NULL; in irc_roomlist_cancel()
930 struct irc_conn *irc = gc->proto_data; in irc_keepalive() local
931 if ((time(NULL) - irc->recv_time) > PING_TIMEOUT) in irc_keepalive()
932 irc_cmd_ping(irc, NULL, NULL, NULL); in irc_keepalive()
1115 PURPLE_INIT_PLUGIN(irc, _init_plugin, info);