Mercurial > pidgin
comparison src/protocols/oscar/ft.c @ 8446:d9cf0c2f4339
[gaim-migrate @ 9176]
Some nice AIM over OSCAR file transfer cleanup from marv.
This should make sending and receiving a bit smoother.
Let one of us know if this causes something to crash.
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Mon, 15 Mar 2004 01:30:16 +0000 |
parents | aa755705bcf5 |
children | 646ddb3a020b |
comparison
equal
deleted
inserted
replaced
8445:46f3c447da4d | 8446:d9cf0c2f4339 |
---|---|
173 struct sockaddr addr; | 173 struct sockaddr addr; |
174 socklen_t addrlen = sizeof(addr); | 174 socklen_t addrlen = sizeof(addr); |
175 int ret = 0; | 175 int ret = 0; |
176 aim_conn_t *newconn; | 176 aim_conn_t *newconn; |
177 char ip[20]; | 177 char ip[20]; |
178 int port; | 178 unsigned short int port; |
179 | 179 |
180 if ((acceptfd = accept(cur->fd, &addr, &addrlen)) == -1) | 180 if ((acceptfd = accept(cur->fd, &addr, &addrlen)) == -1) |
181 return 0; /* not an error */ | 181 return 0; /* not an error */ |
182 | 182 |
183 if ((addr.sa_family != AF_INET) && (addr.sa_family != AF_INET6)) { /* just in case IPv6 really is happening */ | 183 if ((addr.sa_family != AF_INET) && (addr.sa_family != AF_INET6)) { /* just in case IPv6 really is happening */ |
202 aim_rxcallback_t userfunc; | 202 aim_rxcallback_t userfunc; |
203 struct aim_odc_intdata *priv; | 203 struct aim_odc_intdata *priv; |
204 | 204 |
205 priv = (struct aim_odc_intdata *)(newconn->internal = cur->internal); | 205 priv = (struct aim_odc_intdata *)(newconn->internal = cur->internal); |
206 cur->internal = NULL; | 206 cur->internal = NULL; |
207 snprintf(priv->ip, sizeof(priv->ip), "%s:%u", ip, port); | 207 snprintf(priv->ip, sizeof(priv->ip), "%s:%hu", ip, port); |
208 | 208 |
209 if ((userfunc = aim_callhandler(sess, newconn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIM_ESTABLISHED))) | 209 if ((userfunc = aim_callhandler(sess, newconn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIM_ESTABLISHED))) |
210 ret = userfunc(sess, NULL, newconn, cur); | 210 ret = userfunc(sess, NULL, newconn, cur); |
211 | 211 |
212 } else if (newconn->subtype == AIM_CONN_SUBTYPE_OFT_GETFILE) { | 212 } else if (newconn->subtype == AIM_CONN_SUBTYPE_OFT_GETFILE) { |
646 new->fh.checksum = 0xffff0000; | 646 new->fh.checksum = 0xffff0000; |
647 new->fh.rfrcsum = 0xffff0000; | 647 new->fh.rfrcsum = 0xffff0000; |
648 new->fh.rfcsum = 0xffff0000; | 648 new->fh.rfcsum = 0xffff0000; |
649 new->fh.recvcsum = 0xffff0000; | 649 new->fh.recvcsum = 0xffff0000; |
650 strncpy(new->fh.idstring, "OFT_Windows ICBMFT V1.1 32", 31); | 650 strncpy(new->fh.idstring, "OFT_Windows ICBMFT V1.1 32", 31); |
651 if (filename) | 651 if (filename) { |
652 strncpy(new->fh.name, filename, 63); | 652 strncpy(new->fh.name, filename, 63); |
653 new->fh.name[63] = '\0'; | |
654 } | |
653 | 655 |
654 new->next = sess->oft_info; | 656 new->next = sess->oft_info; |
655 sess->oft_info = new; | 657 sess->oft_info = new; |
656 | 658 |
657 return new; | 659 return new; |
758 aimbs_getrawbuf(bs, fh->dummy, 69); | 760 aimbs_getrawbuf(bs, fh->dummy, 69); |
759 aimbs_getrawbuf(bs, fh->macfileinfo, 16); | 761 aimbs_getrawbuf(bs, fh->macfileinfo, 16); |
760 fh->nencode = aimbs_get16(bs); | 762 fh->nencode = aimbs_get16(bs); |
761 fh->nlanguage = aimbs_get16(bs); | 763 fh->nlanguage = aimbs_get16(bs); |
762 aimbs_getrawbuf(bs, fh->name, 64); /* XXX - filenames longer than 64B */ | 764 aimbs_getrawbuf(bs, fh->name, 64); /* XXX - filenames longer than 64B */ |
765 fh->name[63] = '\0'; | |
763 | 766 |
764 return fh; | 767 return fh; |
765 } | 768 } |
766 | 769 |
767 /** | 770 /** |