diff options
author | victor <victor@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2003-08-23 21:24:28 +0800 |
---|---|---|
committer | victor <victor@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2003-08-23 21:24:28 +0800 |
commit | d74a38bf714ecb672600885e40aca8844681230f (patch) | |
tree | 2af5dd146529c2c8aada78ed549f8bcb3cc43ae5 | |
parent | b04e7cd33f3ce0e82147d0ca4b18be7b8c2c9ddd (diff) | |
download | pttbbs-d74a38bf714ecb672600885e40aca8844681230f.tar pttbbs-d74a38bf714ecb672600885e40aca8844681230f.tar.gz pttbbs-d74a38bf714ecb672600885e40aca8844681230f.tar.bz2 pttbbs-d74a38bf714ecb672600885e40aca8844681230f.tar.lz pttbbs-d74a38bf714ecb672600885e40aca8844681230f.tar.xz pttbbs-d74a38bf714ecb672600885e40aca8844681230f.tar.zst pttbbs-d74a38bf714ecb672600885e40aca8844681230f.zip |
temp again
git-svn-id: http://opensvn.csie.org/pttbbs/branches/victor.bank@1133 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
-rw-r--r-- | pttbbs/include/proto.h | 2 | ||||
-rw-r--r-- | pttbbs/mbbsd/chc_net.c | 11 | ||||
-rw-r--r-- | pttbbs/mbbsd/chc_play.c | 19 | ||||
-rw-r--r-- | pttbbs/mbbsd/mbbsd.c | 2 | ||||
-rw-r--r-- | pttbbs/mbbsd/talk.c | 14 |
5 files changed, 27 insertions, 21 deletions
diff --git a/pttbbs/include/proto.h b/pttbbs/include/proto.h index ff82f2e6..d3b6058d 100644 --- a/pttbbs/include/proto.h +++ b/pttbbs/include/proto.h @@ -172,7 +172,7 @@ void chc_redraw(chcusr_t *user1, chcusr_t *user2, board_t board); /* chc_net */ //void chc_sendmove(int s); //int chc_recvmove(int s); -void chc_broadcast_recv(chc_act_list *act_list, board_t board); +int chc_broadcast_recv(chc_act_list *act_list, board_t board); void chc_broadcast_send(chc_act_list *act_list, board_t board); /* chc_play */ diff --git a/pttbbs/mbbsd/chc_net.c b/pttbbs/mbbsd/chc_net.c index c3273cf1..d82066e7 100644 --- a/pttbbs/mbbsd/chc_net.c +++ b/pttbbs/mbbsd/chc_net.c @@ -36,8 +36,10 @@ chc_send_status(int sock, board_t board){ static void chc_broadcast(chc_act_list *p, board_t board){ while(p){ - if (!(p->flag & CHC_ACT_BOARD)) + if (!(p->flag & CHC_ACT_BOARD)){ chc_send_status(p->sock, board); + p->flag |= CHC_ACT_BOARD; + } if (chc_sendmove(p->sock) < 0) { if (p->next->next == NULL) p = NULL; @@ -51,13 +53,16 @@ chc_broadcast(chc_act_list *p, board_t board){ } } -void +int chc_broadcast_recv(chc_act_list *act_list, board_t board){ - chc_recvmove(act_list->sock); + if (!chc_recvmove(act_list->sock)) + return 0; chc_broadcast(act_list->next, board); + return 1; } void chc_broadcast_send(chc_act_list *act_list, board_t board){ chc_broadcast(act_list, board); } + diff --git a/pttbbs/mbbsd/chc_play.c b/pttbbs/mbbsd/chc_play.c index a1014b95..7efbaaca 100644 --- a/pttbbs/mbbsd/chc_play.c +++ b/pttbbs/mbbsd/chc_play.c @@ -63,11 +63,7 @@ hisplay(int s, chcusr_t *user1, chcusr_t *user2, board_t board, board_t tmpbrd) } break; case I_OTHERDATA: -<<<<<<< .mine if (!chc_broadcast_recv(act_list, board)) { /* disconnect */ -======= - if (!chc_recvmove(s)) { /* disconnect */ ->>>>>>> .r1129 endturn = 1; endgame = 1; } else { @@ -115,11 +111,7 @@ myplay(int s, chcusr_t *user1, chcusr_t *user2, board_t board, board_t tmpbrd) ch = 'q'; switch (ch) { case I_OTHERDATA: -<<<<<<< .mine if (!chc_broadcast_recv(act_list, board)) { /* disconnect */ -======= - if (!chc_recvmove(s)) { /* disconnect */ ->>>>>>> .r1129 endgame = 1; endturn = 1; } else if (chc_from.r == -1 && chc_ipass) { @@ -312,20 +304,24 @@ chc(int s, int type) strlcpy(userid[0], uinfo->userid, sizeof(userid[0])); strlcpy(userid[1], uinfo->mateid, sizeof(userid[1])); play_func[0] = play_func[1] = hisplay; + timeout_read(s, 60); read(s, &board, sizeof(board)); /////// nessesery? correct? read(s, &chc_turn, sizeof(chc_turn)); } else { - act_list = (chc_act_list *)malloc(sizeof(*act_list)); - act_list->sock = s; - act_list->next = 0; strlcpy(userid[0], cuser.userid, sizeof(userid[0])); strlcpy(userid[1], currutmp->mateid, sizeof(userid[1])); play_func[0] = myplay; play_func[1] = hisplay; } + if (type != CHC_WATCH) { + act_list = (chc_act_list *)malloc(sizeof(*act_list)); + act_list->sock = s; + act_list->next = 0; + } + getuser(userid[0]); chcusr_get(&xuser, &user1); getuser(userid[1]); @@ -333,6 +329,7 @@ chc(int s, int type) chc_init(s, &user1, &user2, board); mainloop(s, &user1, &user2, board, play_func); + if (type == CHC_VERSUS) { while(act_list){ close(act_list->sock); diff --git a/pttbbs/mbbsd/mbbsd.c b/pttbbs/mbbsd/mbbsd.c index f4026102..2e0794dd 100644 --- a/pttbbs/mbbsd/mbbsd.c +++ b/pttbbs/mbbsd/mbbsd.c @@ -248,7 +248,7 @@ dosearchuser(char *userid) return usernum; } -static void +void talk_request(int sig) { bell(); diff --git a/pttbbs/mbbsd/talk.c b/pttbbs/mbbsd/talk.c index 98a8d708..72a51131 100644 --- a/pttbbs/mbbsd/talk.c +++ b/pttbbs/mbbsd/talk.c @@ -1216,11 +1216,12 @@ my_talk(userinfo_t * uin, int fri_stat) uin->lockmode == M_FIVE || uin->lockmode == CHC) { if (ch == CHC) { kill(uin->pid, SIGUSR1); - sock = make_connection_to_somebody(uin, 20); - if (sock < 0) + if ((sock = make_connection_to_somebody(uin, 20)) < 0) vmsg("無法建立連線"); - strlcpy(currutmp->mateid, uin->userid, sizeof(currutmp->mateid)); - chc(sock, CHC_WATCH); + else { + strlcpy(currutmp->mateid, uin->userid, sizeof(currutmp->mateid)); + chc(sock, CHC_WATCH); + } } else outs("人家在忙啦"); @@ -2551,6 +2552,8 @@ reply_connection_request(userinfo_t *uip) struct hostent *h; struct sockaddr_in sin; + uip = &SHM->uinfo[currutmp->destuip]; + if (uip->mode != PAGE) { snprintf(genbuf, sizeof(genbuf), "%s已停止呼叫,按Enter繼續...", page_requestor); @@ -2569,6 +2572,7 @@ reply_connection_request(userinfo_t *uip) memcpy(&sin.sin_addr, h->h_addr, h->h_length); sin.sin_port = uip->sockaddr; a = socket(sin.sin_family, SOCK_STREAM, 0); + /////////////// if ((connect(a, (struct sockaddr *) & sin, sizeof(sin)))) { perror("connect err"); return -1; @@ -2642,7 +2646,7 @@ talkreply(void) if (!getdata(b_lines, 0, "不能的原因:", genbuf, 60, DOECHO)) strlcpy(genbuf, "不告訴你咧 !! ^o^", sizeof(genbuf)); write(a, genbuf, 60); - + } uip->destuip = currutmp - &SHM->uinfo[0]; if (buf[0] == 'y') |