Changeset 1612
- Timestamp:
- 02/18/10 22:21:23 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/monitor-improvement/oscam-http.c
r1611 r1612 1642 1642 1643 1643 void http_srv() { 1644 int i,sock, reuse = 1;1644 int i,sock, reuse = 1; 1645 1645 struct sockaddr_in sin; 1646 1646 struct sockaddr_in remote; … … 1649 1649 1650 1650 /* Prepare lookup array for conversion between ascii and hex */ 1651 tmp = malloc(3 *sizeof(char));1652 for(i =0; i<256; i++) {1651 tmp = malloc(3 * sizeof(char)); 1652 for(i = 0; i < 256; i++) { 1653 1653 snprintf(tmp, 3,"%02x", i); 1654 1654 memcpy(hex2ascii[i], tmp, 2); … … 1660 1660 1661 1661 /* Startup server */ 1662 if((sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) {1662 if((sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) { 1663 1663 cs_log("HTTP Server: Creating socket failed! (errno=%d)", errno); 1664 1664 return; 1665 1665 } 1666 if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &reuse, sizeof(reuse)) < 0) {1666 if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &reuse, sizeof(reuse)) < 0) { 1667 1667 cs_log("HTTP Server: Setting SO_REUSEADDR via setsockopt failed! (errno=%d)", errno); 1668 1668 } … … 1677 1677 return; 1678 1678 } 1679 if (listen(sock, SOMAXCONN) < 0) {1679 if (listen(sock, SOMAXCONN) < 0) { 1680 1680 cs_log("HTTP Server: Call to listen() failed! (errno=%d)", errno); 1681 1681 close(sock); … … 1683 1683 } 1684 1684 cs_log("HTTP Server listening on port %d", cfg->http_port); 1685 while (running) 1686 { 1685 struct pollfd pfd[1]; 1686 int rc; 1687 pfd[0].fd = sock; 1688 pfd[0].events = (POLLIN | POLLPRI); 1689 1690 while (running) { 1687 1691 int s; 1688 1692 FILE *f; 1689 if((s = accept(sock, (struct sockaddr *) &remote, &len)) < 0){ 1690 cs_log("HTTP Server: Error calling accept() (errno=%d).", errno); 1691 break; 1692 } 1693 1694 f = fdopen(s, "r+"); 1695 process_request(f, remote.sin_addr); 1696 fflush(f); 1697 fclose(f); 1698 shutdown(s, SHUT_WR); 1699 close(s); 1700 } 1701 close(sock); 1702 kill(client[0].pid, SIGQUIT); 1703 } 1693 1694 rc = poll(pfd, 1, 1000); 1695 if (master_pid != getppid()) 1696 cs_exit(0); 1697 1698 if (rc > 0) { 1699 if((s = accept(sock, (struct sockaddr *) &remote, &len)) < 0){ 1700 cs_log("HTTP Server: Error calling accept() (errno=%d).", errno); 1701 break; 1702 } 1703 1704 f = fdopen(s, "r+"); 1705 process_request(f, remote.sin_addr); 1706 fflush(f); 1707 fclose(f); 1708 shutdown(s, SHUT_WR); 1709 close(s); 1710 } 1711 } 1712 1713 close(sock); 1714 kill(client[0].pid, SIGQUIT); 1715 }
Note:
See TracChangeset
for help on using the changeset viewer.