[M3] 修正 正在回熱訊的網友收不到聊天呼叫

看板Maple (BBS架站)作者時間22年前 (2003/01/02 13:47), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
以前在 ^R 回信息時,如果有人來串門(呼你聊天或打小雞) 您收不到它的信號,而他還在可憐的等您回答呢! 2003/01/02: 修正 正在回熱訊的網友收不到聊天呼叫 >-----------------src/maple/talk.c-----------------< 1. 修改 talk_page() 函數 ... ... close(msgsock); + /* hightman.030102: 解決回復熱訊時不能talk的問題, 結束記得放sockport */ + cutmp->sockport = 0; ... ... 2. 修改 talk_rqst() 函數 ... ... + /* hightman.030102: 解決回復熱訊時不能talk的問題, 開始就記入sockport */ + cutmp->sockport = port; sock = socket(AF_INET, SOCK_STREAM, 0); ... ... close(sock); + /* hightman.030102: 解決回復熱訊時不能talk的問題, 結束記得放sockport */ + cutmp->sockport = 0; + cutmp->talker = NULL; /* 為何不順便放掉這個呢 */ ... ... >----------------src/maple/visio.c--------------< 1. 修改 igetch() 函數 ... ... #define IM_TALK 0x04 + /* hightman.030102: 解決回復熱訊時不能talk的問題 */ + #define REPLY_TALK 0x08 /* ^R + talk_rqst */ ... ... data = vi_pool; nfds = 0; + /* hightman.030102: 解決回復熱訊時不能talk的問題 */ + if (cutmp != NULL && (cutmp->sockport > 0) && !(imode & IM_TALK)) + // 剛開始talk + { + imode |= IM_TALK; + if (imode & IM_REPLY) + { + imode ^= IM_REPLY; // 否則看不到 vio_fd 就慘了 + imode |= REPLY_TALK; // 結束 talk 時需要還原 IM_REPLY + } + } + else if (cutmp != NULL && (cutmp->sockport <= 0) && (imode & IM_TALK)) + // talk 剛結束 + { + imode ^= IM_TALK; + if (imode & REPLY_TALK) + { + imode ^= REPLY_TALK; + imode |= IM_REPLY; // 繼續 reply 吧 + } + } + /* hightman.030102: end */ ... ... /* * Thor.980307: 想不到什麼好方法, 在^R時禁止talk, 否則會因 , * 沒有vio_fd, 看不到 I_OTHERDATA 所以在 ctrl-r時talk, 看不到對方打 */ + /* hightman.030102: 已經解決此問題 */ + #if 0 signal(SIGUSR1, SIG_IGN); + #endif imode |= IM_REPLY; bmw_reply(); imode ^= IM_REPLY; /* * Thor.980307: 想不到什麼好方法, 在^R時禁止talk, 否則會因 , * 沒有vio_fd, 看不到 I_OTHERDATA 所以在 ctrl-r時talk, 看不到對方打 */ + /* hightman.030102: 已經解決此問題 */ + #if 0 signal(SIGUSR1, (void *) talk_rqst); + #endif ... ... -- ※ 來源:.溫馨小屋 bbs.feeling.smth.org.[FROM: lib.zju.edu.cn]
文章代碼(AID): #-4z9R00 (Maple)
文章代碼(AID): #-4z9R00 (Maple)