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 /**