Changeset e374dee for libfaim/conn.c
- Timestamp:
- Oct 10, 2003, 5:12:30 PM (21 years ago)
- Branches:
- master, barnowl_perlaim, debian, owl, release-1.10, release-1.4, release-1.5, release-1.6, release-1.7, release-1.8, release-1.9
- Children:
- fe6f1d3
- Parents:
- f4d0975
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libfaim/conn.c
r862371b re374dee 173 173 * This will free ->internal if it necessary... 174 174 */ 175 if ((*deadconn)->type == AIM_CONN_TYPE_RENDEZVOUS) 176 aim_conn_kill_rend(sess, *deadconn); 177 else if ((*deadconn)->type == AIM_CONN_TYPE_CHAT) 175 if ((*deadconn)->type == AIM_CONN_TYPE_CHAT) 178 176 aim_conn_kill_chat(sess, *deadconn); 179 177 … … 319 317 faim_export void aim_conn_close(aim_conn_t *deadconn) 320 318 { 319 aim_rxcallback_t userfunc; 321 320 322 321 if (deadconn->fd >= 3) 323 322 close(deadconn->fd); 323 324 324 deadconn->fd = -1; 325 326 if ((userfunc = aim_callhandler(deadconn->sessv, deadconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNDEAD))) 327 userfunc(deadconn->sessv, NULL, deadconn); 328 325 329 if (deadconn->handlerlist) 326 330 aim_clearhandlers(deadconn); 327 if (deadconn->type == AIM_CONN_TYPE_RENDEZVOUS)328 aim_conn_close_rend((aim_session_t *)deadconn->sessv, deadconn);329 331 330 332 return; … … 871 873 aim_initsnachash(sess); 872 874 sess->msgcookies = NULL; 875 sess->icq_info = NULL; 876 sess->oft_info = NULL; 873 877 sess->snacid_next = 0x00000001; 874 878 … … 880 884 881 885 sess->ssi.received_data = 0; 886 sess->ssi.numitems = 0; 887 sess->ssi.official = NULL; 888 sess->ssi.local = NULL; 889 sess->ssi.pending = NULL; 890 sess->ssi.timestamp = (time_t)0; 882 891 sess->ssi.waiting_for_ack = 0; 883 sess->ssi.holding_queue = NULL; 884 sess->ssi.revision = 0; 885 sess->ssi.items = NULL; 886 sess->ssi.timestamp = (time_t)0; 887 892 893 sess->authinfo = NULL; 888 894 sess->emailinfo = NULL; 889 895 … … 920 926 aim__registermodule(sess, chatnav_modfirst); 921 927 aim__registermodule(sess, chat_modfirst); 922 aim__registermodule(sess, newsearch_modfirst); 923 /* missing 0x10 - 0x12 */ 928 /* aim__registermodule(sess, odir_modfirst); */ /* kretch */ 929 /* aim__registermodule(sess, bart_modfirst); */ /* kretch */ 930 /* missing 0x11 - 0x12 */ 924 931 aim__registermodule(sess, ssi_modfirst); 925 932 /* missing 0x14 */ … … 992 999 faim_export int aim_conn_completeconnect(aim_session_t *sess, aim_conn_t *conn) 993 1000 { 994 fd_set fds, wfds;995 struct timeval tv;996 int res;997 int error = ETIMEDOUT;998 999 1001 aim_rxcallback_t userfunc; 1000 1002 … … 1005 1007 return -1; 1006 1008 1007 FD_ZERO(&fds); 1008 FD_SET(conn->fd, &fds); 1009 FD_ZERO(&wfds); 1010 FD_SET(conn->fd, &wfds); 1011 tv.tv_sec = 0; 1012 tv.tv_usec = 0; 1013 1014 if ((res = select(conn->fd+1, &fds, &wfds, NULL, &tv)) == -1) { 1015 error = errno; 1016 aim_conn_close(conn); 1017 errno = error; 1018 return -1; 1019 } else if (res == 0) { 1020 faimdprintf(sess, 0, "aim_conn_completeconnect: false alarm on %d\n", conn->fd); 1021 return 0; /* hasn't really completed yet... */ 1022 } 1023 1024 if (FD_ISSET(conn->fd, &fds) || FD_ISSET(conn->fd, &wfds)) { 1025 int len = sizeof(error); 1026 if (getsockopt(conn->fd, SOL_SOCKET, SO_ERROR, &error, &len) < 0) 1027 error = errno; 1028 } 1029 1030 if (error) { 1031 aim_conn_close(conn); 1032 errno = error; 1033 return -1; 1034 } 1035 fcntl(conn->fd, F_SETFL, 0); /* XXX should restore original flags */ 1009 fcntl(conn->fd, F_SETFL, 0); 1036 1010 1037 1011 conn->status &= ~AIM_CONN_STATUS_INPROGRESS;
Note: See TracChangeset
for help on using the changeset viewer.